work in progress: comments; use new generic track view
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3052 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
23b6355386
commit
a7312a0fa0
12 changed files with 204 additions and 30 deletions
|
@ -511,6 +511,14 @@ class BaseView(GenericView, I18NView):
|
|||
|
||||
inlineEditable = False
|
||||
|
||||
# comments
|
||||
|
||||
@Lazy
|
||||
def comments(self):
|
||||
return []
|
||||
|
||||
# dojo stuff
|
||||
|
||||
def inlineEdit(self, id):
|
||||
self.registerDojo()
|
||||
return 'return inlineEdit("%s", "")' % id
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<metal:fields use-macro="item/template/macros/conceptfields" />
|
||||
<metal:fields use-macro="item/template/macros/conceptchildren" />
|
||||
<metal:fields use-macro="item/template/macros/conceptresources" />
|
||||
<metal:fields use-macro="view/comment_macros/comments" />
|
||||
</div>
|
||||
</metal:data>
|
||||
|
||||
|
|
|
@ -427,14 +427,14 @@
|
|||
/>
|
||||
|
||||
<editform
|
||||
label="Edit Node"
|
||||
label="Edit"
|
||||
name="edit.html"
|
||||
schema="loops.interfaces.INode"
|
||||
fields="title description nodeType viewName body"
|
||||
for="loops.interfaces.INode"
|
||||
template="edit.pt"
|
||||
permission="zope.ManageContent"
|
||||
menu="zmi_views" title="Edit Node">
|
||||
menu="zmi_views" title="Edit">
|
||||
|
||||
<widget field="description" height="2" />
|
||||
<widget field="body" height="8" />
|
||||
|
|
|
@ -60,6 +60,7 @@ from loops import util
|
|||
from loops.util import _
|
||||
from loops.browser.common import BaseView
|
||||
from loops.browser.concept import ConceptView
|
||||
from loops.organize.comment.browser import comment_macros
|
||||
from loops.organize.tracking import access
|
||||
from loops.versioning.util import getVersion
|
||||
|
||||
|
@ -326,7 +327,6 @@ class NodeView(BaseView):
|
|||
def targetView(self, name='index.html', methodName='show'):
|
||||
if '?' in name:
|
||||
name, params = name.split('?', 1)
|
||||
print '***', name, params
|
||||
target = self.virtualTargetObject
|
||||
if target is not None:
|
||||
if isinstance(target, AdapterBase):
|
||||
|
@ -483,6 +483,22 @@ class NodeView(BaseView):
|
|||
self.recordAccess('external_edit')
|
||||
return ExternalEditorView(target, self.request).load(url=url)
|
||||
|
||||
# comments
|
||||
|
||||
@Lazy
|
||||
def comment_macros(self):
|
||||
return comment_macros.macros
|
||||
|
||||
# better: provide a ``comments`` view on the target object.
|
||||
|
||||
@Lazy
|
||||
def commentsAllowed(self):
|
||||
return False
|
||||
return True
|
||||
|
||||
def addCommentUrlFor(self, target):
|
||||
return '#'
|
||||
|
||||
|
||||
# inner HTML views
|
||||
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
|
||||
"Project-Id-Version: $Id$\n"
|
||||
"POT-Creation-Date: 2007-05-22 12:00 CET\n"
|
||||
"PO-Revision-Date: 2008-12-06 12:00 CET\n"
|
||||
"PO-Revision-Date: 2008-12-07 12:00 CET\n"
|
||||
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
|
||||
"Language-Team: loops developers <helmutm@cy55.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -416,8 +416,20 @@ msgstr "hinzufügen"
|
|||
msgid "modify"
|
||||
msgstr "ändern"
|
||||
|
||||
msgid "Comments"
|
||||
msgstr "Kommentare"
|
||||
|
||||
msgid "Add Comment"
|
||||
msgstr "Kommentar hinzufügen"
|
||||
|
||||
# management interface
|
||||
|
||||
msgid "label_type"
|
||||
msgstr "Typ"
|
||||
|
||||
msgid "Node"
|
||||
msgstr "Navigationsknoten"
|
||||
|
||||
msgid "Top"
|
||||
msgstr "Ganz nach oben"
|
||||
|
||||
|
@ -430,6 +442,18 @@ msgstr "Nach unten"
|
|||
msgid "Bottom"
|
||||
msgstr "Ganz nach unten"
|
||||
|
||||
msgid "Edit Node"
|
||||
msgstr "Bearbeiten"
|
||||
msgid "Edit Permissions"
|
||||
msgstr "Berechtigungen bearbeiten"
|
||||
|
||||
msgid "Currently assigned target"
|
||||
msgstr "Derzeit zugeordnetes Zielobjekt"
|
||||
|
||||
msgid "Create Target"
|
||||
msgstr "Zielobjekt anlegen"
|
||||
|
||||
msgid "Assign Target"
|
||||
msgstr "Zielobjekt zuordnen"
|
||||
|
||||
msgid "Search Term"
|
||||
msgstr "Suchbegriff"
|
||||
|
||||
|
|
|
@ -55,13 +55,6 @@
|
|||
permission="zope.View"
|
||||
/>
|
||||
|
||||
<browser:page
|
||||
for="cybertools.tracking.interfaces.ITrackingStorage"
|
||||
name="index.html"
|
||||
class="cybertools.tracking.browser.TrackingStorageView"
|
||||
permission="zope.View"
|
||||
/>
|
||||
|
||||
<zope:adapter
|
||||
for="cybertools.tracking.interfaces.ITrack
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
|
|
3
organize/comment/__init__.py
Normal file
3
organize/comment/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
"""
|
||||
$Id$
|
||||
"""
|
50
organize/comment/browser.py
Normal file
50
organize/comment/browser.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
#
|
||||
# Copyright (c) 2008 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
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
"""
|
||||
Definition of view classes and other browser related stuff for comments.
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from zope import interface, component
|
||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||
from zope.cachedescriptors.property import Lazy
|
||||
|
||||
from cybertools.browser.action import actions
|
||||
from loops.browser.action import DialogAction
|
||||
from loops.browser.common import BaseView
|
||||
from loops.util import _
|
||||
|
||||
|
||||
comment_macros = ViewPageTemplateFile('comment_macros.pt')
|
||||
|
||||
actions.register('addComment', 'button', DialogAction,
|
||||
title=_(u'Add Comment'),
|
||||
description=_(u'Add a comment to this object.'),
|
||||
viewName='create_comment.html',
|
||||
dialogName='createComment',
|
||||
innerForm='inner_comment_form.html',
|
||||
#prerequisites=['registerDojoDateWidget'],
|
||||
)
|
||||
|
||||
|
||||
class CommentsView(BaseView):
|
||||
|
||||
pass
|
||||
|
34
organize/comment/comment_macros.pt
Normal file
34
organize/comment/comment_macros.pt
Normal file
|
@ -0,0 +1,34 @@
|
|||
<html i18n:domain="loops">
|
||||
<!-- $Id$ -->
|
||||
|
||||
|
||||
<metal:comments define-macro="comments"
|
||||
tal:condition="view/commentsAllowed">
|
||||
<br />
|
||||
<h2 i18n:translate="">Comments</h2>
|
||||
<div class="button">
|
||||
<a i18n:translate=""
|
||||
tal:attributes="href python: view.addCommentUrlFor(item.context)">Add Comment</a>
|
||||
</div>
|
||||
<tal:comments define="comments item/comments"
|
||||
tal:condition="comments">
|
||||
<tal:comment tal:repeat="comment comments">
|
||||
<br />
|
||||
<div class="comment">
|
||||
<h3>
|
||||
<span tal:content="comment/subject">Resource Title</span></h3>
|
||||
<div class="info">
|
||||
<span tal:replace="comment/creator">John</span>,
|
||||
<span tal:replace="comment/timeStamp">2007-03-30</span>
|
||||
</div>
|
||||
<p class="content"
|
||||
tal:define="text comment/text;
|
||||
contentType comment/contentType"
|
||||
tal:content="structure python: view.renderText(text, contentType)" />
|
||||
</div>
|
||||
</tal:comment>
|
||||
</tal:comments>
|
||||
</metal:comments>
|
||||
|
||||
|
||||
</html>
|
|
@ -30,7 +30,7 @@ from cybertools.tracking.browser import TrackView
|
|||
from loops import util
|
||||
|
||||
|
||||
class ChangeView(TrackView):
|
||||
class BaseTrackView(TrackView):
|
||||
|
||||
@Lazy
|
||||
def task(self):
|
||||
|
@ -72,6 +72,11 @@ class ChangeView(TrackView):
|
|||
return '%s/@@introspector.html' % absoluteURL(user, self.request)
|
||||
|
||||
|
||||
class AccessView(ChangeView):
|
||||
class ChangeView(BaseTrackView):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class AccessView(BaseTrackView):
|
||||
|
||||
pass
|
||||
|
|
|
@ -34,7 +34,61 @@
|
|||
<allow attributes="process" />
|
||||
</zope:class>
|
||||
|
||||
<!-- views -->
|
||||
<!-- ZMI views -->
|
||||
|
||||
<browser:page
|
||||
for="cybertools.tracking.interfaces.ITrackingStorage"
|
||||
name="index.html"
|
||||
class="cybertools.tracking.browser.TrackingStorageView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:menuItem
|
||||
menu="zmi_views"
|
||||
for="cybertools.tracking.interfaces.ITrackingStorage"
|
||||
order="0"
|
||||
title="View"
|
||||
action="index.html" />
|
||||
|
||||
<browser:page
|
||||
for="cybertools.tracking.interfaces.ITrack"
|
||||
name="index.html"
|
||||
class="loops.organize.tracking.browser.BaseTrackView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
for="loops.organize.tracking.change.IChangeRecord"
|
||||
name="index.html"
|
||||
class="loops.organize.tracking.browser.ChangeView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
for="loops.organize.tracking.access.IAccessRecord"
|
||||
name="index.html"
|
||||
class="loops.organize.tracking.browser.AccessView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:menuItem
|
||||
menu="zmi_views"
|
||||
for="cybertools.tracking.interfaces.ITrack"
|
||||
order="0"
|
||||
title="View"
|
||||
action="index.html" />
|
||||
|
||||
<!--<zope:adapter
|
||||
for="loops.organize.tracking.change.IChangeRecord
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="loops.organize.tracking.browser.ChangeView"
|
||||
permission="zope.View" />
|
||||
|
||||
<zope:adapter
|
||||
for="loops.organize.tracking.access.IAccessRecord
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="loops.organize.tracking.browser.AccessView"
|
||||
permission="zope.View" />-->
|
||||
|
||||
<!-- application views -->
|
||||
|
||||
<browser:page
|
||||
name="tracking_stats.html"
|
||||
|
@ -48,20 +102,6 @@
|
|||
class="loops.organize.tracking.report.RecentChanges"
|
||||
permission="zope.View" />
|
||||
|
||||
<zope:adapter
|
||||
for="loops.organize.tracking.change.IChangeRecord
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="loops.organize.tracking.browser.ChangeView"
|
||||
permission="zope.View" />
|
||||
|
||||
<zope:adapter
|
||||
for="loops.organize.tracking.access.IAccessRecord
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
provides="zope.interface.Interface"
|
||||
factory="loops.organize.tracking.browser.AccessView"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
name="load_access_records"
|
||||
for="loops.interfaces.ILoops"
|
||||
|
|
Loading…
Add table
Reference in a new issue