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:
helmutm 2008-12-08 12:25:03 +00:00
parent 23b6355386
commit a7312a0fa0
12 changed files with 204 additions and 30 deletions

View file

@ -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

View file

@ -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>

View file

@ -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" />

View file

@ -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.

View file

@ -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"

View file

@ -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"

View file

@ -0,0 +1,3 @@
"""
$Id$
"""

View 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

View 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>

View file

@ -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

View file

@ -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"