diff --git a/view/browser/generic.pt b/view/browser/generic.pt index 14c0dd9..b4c47e0 100644 --- a/view/browser/generic.pt +++ b/view/browser/generic.pt @@ -3,7 +3,7 @@ -
+
diff --git a/view/browser/liquid/body.pt b/view/browser/liquid/body.pt index 4348d89..f983f3d 100644 --- a/view/browser/liquid/body.pt +++ b/view/browser/liquid/body.pt @@ -1,4 +1,4 @@ - +
+ border="0" alt="Home" + tal:attributes="src string:${resourceBase}logo.png" />
diff --git a/view/browser/liquid/configure.zcml b/view/browser/liquid/configure.zcml index 55ae6f7..af11d73 100644 --- a/view/browser/liquid/configure.zcml +++ b/view/browser/liquid/configure.zcml @@ -5,5 +5,6 @@ xmlns:browser="http://namespaces.zope.org/browser"> + diff --git a/view/browser/liquid/logo.png b/view/browser/liquid/logo.png new file mode 100644 index 0000000..c7535c3 Binary files /dev/null and b/view/browser/liquid/logo.png differ diff --git a/view/browser/liquid/view_macros.pt b/view/browser/liquid/view_macros.pt index f95fbf9..15efe74 100644 --- a/view/browser/liquid/view_macros.pt +++ b/view/browser/liquid/view_macros.pt @@ -3,7 +3,7 @@ - Powered by Zope 3 + Powered by Zope + border="0" alt="Home" + tal:attributes="src string:${view/resource_prefix}logo.png" />
@@ -34,7 +34,7 @@
- Content + Content
diff --git a/view/browser/view.py b/view/browser/view.py index 545a396..c88c867 100644 --- a/view/browser/view.py +++ b/view/browser/view.py @@ -37,6 +37,7 @@ class BaseView(object): index = generic_page default_template = view_macros # specify in subclass resource_prefix = '/@@/' + mode = 'view' def __call__(self): return self.index(self) diff --git a/wiki/base/wiki.py b/wiki/base/wiki.py index 5ae3ace..7b9506e 100644 --- a/wiki/base/wiki.py +++ b/wiki/base/wiki.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# Copyright (c) 2010 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -58,6 +58,11 @@ class WikiManager(BaseConfiguration): if name in self.wikis: del self.wikis[name] + def renameWiki(self, wiki, newName): + del self.wikis[wiki.name] + self.wikis[newName] = wiki + wiki.rename(newName) + def listWikis(self): return self.wikis.values() @@ -110,7 +115,6 @@ class Wiki(BaseConfiguration): self.name = name self.title = title or name self.pages = {} - #self.setup() def setup(self): self.getManager().addWiki(self) diff --git a/wiki/browser/default.pt b/wiki/browser/default.pt index 31d2c25..1bc4c13 100644 --- a/wiki/browser/default.pt +++ b/wiki/browser/default.pt @@ -8,7 +8,7 @@ + tal:content="wiki/title" /> @@ -24,11 +24,27 @@ + +

Edit Wiki:

+
+ +
+
+
+
+ +
+
+ +
- +

Edit Wiki Page

-
+
Title
@@ -49,12 +65,14 @@
-

Wiki Page

-
- -
 
-
- +

Wiki Page

+
+ +
 
+
+ Edit +
+
diff --git a/wiki/browser/view.py b/wiki/browser/view.py index 616e68f..fc20888 100644 --- a/wiki/browser/view.py +++ b/wiki/browser/view.py @@ -25,6 +25,8 @@ $Id$ from zope.app.pagetemplate import ViewPageTemplateFile from zope.cachedescriptors.property import Lazy from zope import component +from zope.event import notify +from zope.lifecycleevent import ObjectModifiedEvent from zope.traversing.browser import absoluteURL from cybertools.link.interfaces import ILinkManager @@ -64,6 +66,27 @@ class WikiView(WikiBaseView): return self.context.listPages() +class WikiEditForm(WikiView): + + content_renderer = 'wiki_edit' + + def update(self): + form = self.request.form + action = form.get('form_action') + if action == 'edit': + title = form.get('title') + if title and title != self.context.title: + self.context.title = title + notify(ObjectModifiedEvent(self.context)) + name = form.get('name') + if name and name != self.context.name: + self.context.getManager().renameWiki(self.context, name) + self.request.response.redirect( + absoluteURL(self.context, self.request)) + return False + return True + + class CreatePage(object): def update(self): @@ -71,6 +94,7 @@ class CreatePage(object): name = form.get('name') title = name page = self.context.createPage(name, title) + notify(ObjectModifiedEvent(page)) # record in LinkManager manager = self.context.getManager() lmName = self.context.getConfig('linkManager') @@ -78,7 +102,7 @@ class CreatePage(object): for link in lm.query(name=name): if link.target is None: link.update(target=page) - self.request.response.redirect('%s?mode=edit' % + self.request.response.redirect('%s/edit.html' % absoluteURL(page, self.request)) return False @@ -96,10 +120,15 @@ class WikiPageView(WikiBaseView): text = form.get('text') if text and text != self.context.text: self.context.text = text - # TODO: notify(ObjectModifiedEvent()) - #self.request.response.redirect(absoluteURL(self.context, self.request)) - #return False + notify(ObjectModifiedEvent(self.context)) return True def render(self): return self.context.render(self.request) + + def edit(self): + self.mode = 'edit' + return self() + + def showEditButton(self): + return self.mode != 'edit' diff --git a/wiki/dcu/html.py b/wiki/dcu/html.py index 1649264..fd0633d 100644 --- a/wiki/dcu/html.py +++ b/wiki/dcu/html.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# Copyright (c) 2010 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/wiki/generic/mixin.py b/wiki/generic/mixin.py index 50dd9ef..515cda4 100644 --- a/wiki/generic/mixin.py +++ b/wiki/generic/mixin.py @@ -88,6 +88,14 @@ class WikiManager(BaseWikiManager): if uid in self.wikiUids: self.wikiUids.remove(uid) + def renameWiki(self, wiki, newName): + intIds = self.getPlugin(IIntIds) + self.removeWiki(wiki) + intIds.unregister(wiki) + wiki.rename(newName) + intIds.register(wiki) + self.addWiki(wiki) + def listWikis(self): for uid in self.wikiUids: yield self.getObject(uid) @@ -114,7 +122,6 @@ class Wiki(BaseWiki): def getPages(self): # TODO: restrict to wiki page objects - #return dict((k, v) for k, v in self.objectItems()) return dict((k, v) for k, v in self.getItems()) def createPage(self, name, title, text=u''): diff --git a/wiki/tracking/link.py b/wiki/tracking/link.py index b815c5d..43e01a0 100644 --- a/wiki/tracking/link.py +++ b/wiki/tracking/link.py @@ -17,7 +17,7 @@ # """ -Planning and recording activities (work items). +Store wiki links as tracks. $Id$ """ @@ -91,7 +91,7 @@ class Link(BaseLink, Stateful, Track): return component.getUtility(IStatesDefinition, name=self.statesDefinition) -class xx_LinkManager(BaseLinkManager): +class LinkManager(BaseLinkManager): """ A tracking storage adapter managing wiki links. """ diff --git a/z2/browser/main.pt b/z2/browser/main.pt new file mode 100644 index 0000000..1c7b82c --- /dev/null +++ b/z2/browser/main.pt @@ -0,0 +1,10 @@ + + + + +
+ + + + diff --git a/z2/browser/main_zmi.pt b/z2/browser/main_zmi.pt new file mode 100644 index 0000000..335c261 --- /dev/null +++ b/z2/browser/main_zmi.pt @@ -0,0 +1,12 @@ + + + + +
+ +
+ + + + diff --git a/z2/browser/view.py b/z2/browser/view.py index bbda997..61ce197 100644 --- a/z2/browser/view.py +++ b/z2/browser/view.py @@ -23,10 +23,15 @@ $Id$ """ from Products.Five import BrowserView +from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile from cybertools.view.browser.view import BaseView, GenericView +main_page = ViewPageTemplateFile('main.pt') +zmi_page = ViewPageTemplateFile('main_zmi.pt') + + class BaseView(BrowserView, BaseView): resource_prefix = '/++resource++' diff --git a/z2/generic.py b/z2/generic.py index 45acb2e..d57bc7f 100644 --- a/z2/generic.py +++ b/z2/generic.py @@ -64,6 +64,9 @@ class GenericObject(object): def getParent(self): return aq_parent(aq_inner(self)) + def rename(self, newName): + self.getParent().manage_renameObject(self.name, newName) + class GenericFolder(GenericObject): """ Provide generic (i.e. dictionary-like) folder access to Zope2's