From b1a231f40e354c6faf764033683a5d891370d2fd Mon Sep 17 00:00:00 2001 From: helmutm Date: Sun, 9 May 2010 09:50:15 +0000 Subject: [PATCH] work in progress: wiki configuration and editing git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3855 fd906abe-77d9-0310-91a1-e0d9ade77398 --- view/browser/generic.pt | 2 +- view/browser/liquid/body.pt | 6 ++--- view/browser/liquid/configure.zcml | 1 + view/browser/liquid/logo.png | Bin 0 -> 14599 bytes view/browser/liquid/view_macros.pt | 8 +++---- view/browser/view.py | 1 + wiki/base/wiki.py | 8 +++++-- wiki/browser/default.pt | 36 +++++++++++++++++++++------- wiki/browser/view.py | 37 +++++++++++++++++++++++++---- wiki/dcu/html.py | 2 +- wiki/generic/mixin.py | 9 ++++++- wiki/tracking/link.py | 4 ++-- z2/browser/main.pt | 10 ++++++++ z2/browser/main_zmi.pt | 12 ++++++++++ z2/browser/view.py | 5 ++++ z2/generic.py | 3 +++ 16 files changed, 117 insertions(+), 27 deletions(-) create mode 100644 view/browser/liquid/logo.png create mode 100644 z2/browser/main.pt create mode 100644 z2/browser/main_zmi.pt 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 0000000000000000000000000000000000000000..c7535c30f826fad3b9be731285d49017f436f216 GIT binary patch literal 14599 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 literal 0 HcmV?d00001 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