work in progress: personal info query/view - starting with link to 'change password'; define 'editTask' as a separately definable action

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3144 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2009-01-12 12:40:57 +00:00
parent c185f72eea
commit 77376f1c04
7 changed files with 47 additions and 13 deletions

View file

@ -206,7 +206,7 @@
<!-- portlets --> <!-- portlets -->
<metal:actions define-macro="parents"> <metal:actions define-macro="parents">
<div tal:repeat="concept macro/info/parents"> <div tal:repeat="concept macro/info/view/parents">
<a href="#" <a href="#"
tal:attributes="href string:${view/url}/.target${concept/uniqueId}"> tal:attributes="href string:${view/url}/.target${concept/uniqueId}">
<span i18n:translate="" tal:content="concept/title">Concept</span> <span i18n:translate="" tal:content="concept/title">Concept</span>

View file

@ -118,12 +118,18 @@ class NodeView(BaseView):
mi = self.controller.memberInfo mi = self.controller.memberInfo
title = mi.title.value or _(u'Personal Informations') title = mi.title.value or _(u'Personal Informations')
obj = mi.get('object') obj = mi.get('object')
url = obj is not None and self.getUrlForTarget(obj.value) or None if obj is not None:
cm.register('portlet_right', 'personal', title=title, query = self.conceptManager.get('personal_info')
subMacro=node_macros.macros['personal'], if query is None:
icon='cybertools.icons/user.png', #url = self.url + '/personal_info.html'
url=url, url = self.getUrlForTarget(obj.value)
priority=10) else:
url = self.getUrlForTarget(query)
cm.register('portlet_right', 'personal', title=title,
subMacro=node_macros.macros['personal'],
icon='cybertools.icons/user.png',
url=url,
priority=10)
# force early portlet registrations by target by setting up target view # force early portlet registrations by target by setting up target view
self.virtualTarget self.virtualTarget

View file

@ -335,7 +335,14 @@ Task view with edit action
>>> from loops.organize.browser.task import TaskView >>> from loops.organize.browser.task import TaskView
>>> view = TaskView(task01, TestRequest()) >>> view = TaskView(task01, TestRequest())
>>> view.getActions('portlet') >>> list(view.getActions('portlet'))
[]
OK, the action is not provided automatically any more by the TaskView
but has to be entered as a type option.
>>> adapted(task).options = ['action.portlet:editTask']
>>> list(view.getActions('portlet'))
[<loops.browser.action.DialogAction ...>] [<loops.browser.action.DialogAction ...>]
Events listing Events listing

View file

@ -6,11 +6,11 @@
i18n_domain="loops"> i18n_domain="loops">
<zope:adapter <zope:adapter
name="mystuff" name="personal_info.html"
for="loops.interfaces.IConcept for="loops.interfaces.IConcept
zope.publisher.interfaces.browser.IBrowserRequest" zope.publisher.interfaces.browser.IBrowserRequest"
provides="zope.interface.Interface" provides="zope.interface.Interface"
factory="loops.organize.browser.member.MyStuff" factory="loops.organize.browser.member.PersonalInfo"
permission="zope.View" permission="zope.View"
/> />

View file

@ -51,7 +51,7 @@ from loops.util import _
organize_macros = ViewPageTemplateFile('view_macros.pt') organize_macros = ViewPageTemplateFile('view_macros.pt')
class MyStuff(ConceptView): class PersonalInfo(ConceptView):
def __init__(self, context, request): def __init__(self, context, request):
self.context = context self.context = context

View file

@ -26,17 +26,29 @@ from zope import interface, component
from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from cybertools.browser.action import actions
from loops.browser.action import DialogAction from loops.browser.action import DialogAction
from loops.browser.concept import ConceptView from loops.browser.concept import ConceptView
from loops.util import _ from loops.util import _
actions.register('editTask', 'portlet', DialogAction,
title=_(u'Edit Task...'),
description=_(u'Modify task.'),
viewName='edit_concept.html',
dialogName='editTask',
prerequisites=['registerDojoDateWidget'],
)
organize_macros = ViewPageTemplateFile('view_macros.pt') organize_macros = ViewPageTemplateFile('view_macros.pt')
class TaskView(ConceptView): class TaskView(ConceptView):
def getActions(self, category='object', page=None, target=None): pass
def xx_getActions(self, category='object', page=None, target=None):
actions = [] actions = []
if category == 'portlet': if category == 'portlet':
actions.append(DialogAction(self, title=_(u'Edit Task...'), actions.append(DialogAction(self, title=_(u'Edit Task...'),

View file

@ -3,7 +3,16 @@
<metal:data define-macro="conceptdata"> <metal:data define-macro="conceptdata">
<tal:person condition="item/person"> <tal:person condition="item/person">
<metal:block use-macro="item/concept_macros/macros/conceptdata" /> <metal:block use-macro="view/concept_macros/conceptdata">
<metal:block fill-slot="fields">
<metal:fields use-macro="view/concept_macros/conceptfields" />
<h2 i18n:translate="">Actions</h2>
<ul>
<li><a href="change_password.html"
i18n:translate="">Change Password</a></li>
</ul>
</metal:block>
</metal:block>
</tal:person> </tal:person>
<tal:person condition="not:item/person"> <tal:person condition="not:item/person">
<metal:block use-macro="item/concept_macros/macros/concepttitle" /><br /> <metal:block use-macro="item/concept_macros/macros/concepttitle" /><br />