info/action icons on listings: add 'target' argument to 'getActions()' methods
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2546 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
720a79a34c
commit
21743d6e52
7 changed files with 37 additions and 45 deletions
|
@ -35,8 +35,12 @@ class TargetAction(Action):
|
|||
|
||||
@Lazy
|
||||
def url(self):
|
||||
if self.page is None:
|
||||
#return self.getActionUrl(self.page.getUrlForTarget(self.view))
|
||||
if self.page is None: # how could this happen?
|
||||
baseUrl = self.view.virtualTargetUrl
|
||||
else:
|
||||
if self.target is not None:
|
||||
baseUrl = self.page.getUrlForTarget(self.target)
|
||||
else:
|
||||
baseUrl = self.page.virtualTargetUrl
|
||||
return self.getActionUrl(baseUrl)
|
||||
|
@ -55,7 +59,12 @@ class DialogAction(Action):
|
|||
|
||||
@Lazy
|
||||
def url(self):
|
||||
return self.viewName
|
||||
#return '%s/%s' % (self.page.getUrlForTarget(self.view), self.viewName)
|
||||
if self.target is not None:
|
||||
url = self.page.getUrlForTarget(self.target)
|
||||
else:
|
||||
url = self.page.virtualTargetUrl
|
||||
return '%s/%s' % (url, self.viewName)
|
||||
|
||||
@Lazy
|
||||
def onClick(self):
|
||||
|
@ -69,6 +78,12 @@ class DialogAction(Action):
|
|||
if self.fixedType:
|
||||
urlParams['fixed_type'] = 'yes'
|
||||
urlParams.update(self.addParams)
|
||||
#url = self.page.getUrlForTarget(self.view)
|
||||
#return self.jsOnClick % (self.dialogName, url, self.viewName,
|
||||
# urlencode(urlParams))
|
||||
if self.target is not None:
|
||||
url = self.page.getUrlForTarget(self.target)
|
||||
else:
|
||||
url = self.page.virtualTargetUrl
|
||||
return self.jsOnClick % (self.dialogName, url, self.viewName,
|
||||
urlencode(urlParams))
|
||||
|
|
|
@ -392,13 +392,13 @@ class BaseView(GenericView, I18NView):
|
|||
def editable(self):
|
||||
return canWriteObject(self.context)
|
||||
|
||||
def getActions(self, category='object', page=None):
|
||||
def getActions(self, category='object', page=None, target=None):
|
||||
""" Return a list of actions that provide the view and edit actions
|
||||
available for the context object.
|
||||
"""
|
||||
actions = []
|
||||
if category in self.actions:
|
||||
actions.extend(self.actions[category](self, page=page))
|
||||
actions.extend(self.actions[category](self, page=page, target=target))
|
||||
return actions
|
||||
|
||||
def openEditWindow(self, viewName='edit.html'):
|
||||
|
|
|
@ -349,12 +349,12 @@ class ConceptView(BaseView):
|
|||
for node in self.context.getClients():
|
||||
yield NodeView(node, self.request)
|
||||
|
||||
def getActions(self, category='object', page=None):
|
||||
def getActions(self, category='object', page=None, target=None):
|
||||
t = IType(self.context)
|
||||
actInfo = t.optionsDict.get('action.' + category, '')
|
||||
actNames = [n.strip() for n in actInfo.split(',')]
|
||||
if actNames:
|
||||
return actions.get(category, actNames, view=self, page=page)
|
||||
return actions.get(category, actNames, view=self, page=page, target=target)
|
||||
return []
|
||||
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
<th i18n:translate="">Size</th>
|
||||
<th i18n:translate="">Modification Date</th>
|
||||
<th i18n:translate="">Author(s)</th>
|
||||
<th i18n:translate="">St</th>
|
||||
<th i18n:translate="">Info</th>
|
||||
</tr>
|
||||
<tal:items repeat="related resources">
|
||||
<tal:item define="class python: repeat['related'].odd() and 'even' or 'odd';
|
||||
|
@ -143,7 +143,8 @@
|
|||
<td><span tal:replace="related/modified">2007-03-30</span></td>
|
||||
<td><span tal:replace="related/creators">John</span></td>
|
||||
<td style="white-space: nowrap"
|
||||
tal:define="target nocall:related">
|
||||
tal:define="target nocall:related;
|
||||
style nothing">
|
||||
<div metal:use-macro="views/node_macros/object_actions" />
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -387,24 +387,24 @@ class NodeView(BaseView):
|
|||
actions = []
|
||||
self.registerDojo()
|
||||
if category in self.actions:
|
||||
actions.extend(self.actions[category](self))
|
||||
actions.extend(self.actions[category](self, target=target))
|
||||
if target is None:
|
||||
target = self.virtualTarget
|
||||
if target is not None:
|
||||
actions.extend(target.getActions(category, page=self))
|
||||
actions.extend(target.getActions(category, page=self, target=target))
|
||||
return actions
|
||||
|
||||
def getPortletActions(self):
|
||||
def getPortletActions(self, target=None):
|
||||
actions = []
|
||||
cmeUrl = self.conceptMapEditorUrl
|
||||
if cmeUrl:
|
||||
actions.append(Action(self, title='Edit Concept Map',
|
||||
targetWindow='loops_cme',
|
||||
description='Open concept map editor in new window',
|
||||
url=cmeUrl))
|
||||
url=cmeUrl, target=target))
|
||||
actions.append(DialogAction(self, title='Create Resource...',
|
||||
description='Create a new resource object.',
|
||||
page=self))
|
||||
page=self, target=target))
|
||||
return actions
|
||||
|
||||
actions = dict(portlet=getPortletActions)
|
||||
|
@ -508,31 +508,6 @@ class InlineEdit(NodeView):
|
|||
return 'OK'
|
||||
|
||||
|
||||
class xxxCreateObject(NodeView, Form):
|
||||
|
||||
template = ViewPageTemplateFile('form_macros.pt')
|
||||
|
||||
@property
|
||||
def macro(self): return self.template.macros['create']
|
||||
|
||||
form_fields = FormFields(
|
||||
schema.TextLine(__name__='title', title=_(u'Title')),
|
||||
schema.Text(__name__='body', title=_(u'Body Text')),
|
||||
schema.TextLine(__name__='linkUrl', title=_(u'Link'), required=False),
|
||||
)
|
||||
|
||||
title = _(u'Enter Note')
|
||||
form_action = 'create_note'
|
||||
|
||||
def __init__(self, context, request):
|
||||
super(CreateObject, self).__init__(context, request)
|
||||
self.setUpWidgets()
|
||||
self.widgets['body'].height = 3
|
||||
|
||||
def __call__(self):
|
||||
return innerHtml(self)
|
||||
|
||||
|
||||
# special (named) views for nodes
|
||||
|
||||
class SpecialNodeView(NodeView):
|
||||
|
|
|
@ -187,7 +187,8 @@
|
|||
|
||||
<metal:actions define-macro="object_actions">
|
||||
<div style="float: right;"
|
||||
tal:define="target nocall:target|nothing">
|
||||
tal:define="target nocall:target|nothing;"
|
||||
tal:attributes="style style|string:float: right">
|
||||
<tal:actions repeat="action python:view.getActions('object', target=target)">
|
||||
<metal:action use-macro="action/macro" />
|
||||
</tal:actions>
|
||||
|
|
|
@ -175,20 +175,20 @@ class ResourceView(BaseView):
|
|||
|
||||
# actions
|
||||
|
||||
def getPortletActions(self, page=None):
|
||||
def getPortletActions(self, page=None, target=None):
|
||||
actions = []
|
||||
actions.append(DialogAction(self, title='Edit Resource...',
|
||||
description='Modify resource object.',
|
||||
viewName='edit_object.html', dialogName='edit',
|
||||
page=page))
|
||||
page=page, target=target))
|
||||
return actions
|
||||
|
||||
def getObjectActions(self, page=None):
|
||||
def getObjectActions(self, page=None, target=None):
|
||||
acts = ['info']
|
||||
acts.extend('state.' + st for st in statefulActions)
|
||||
if self.xeditable:
|
||||
acts.append('external_edit')
|
||||
return actions.get('object', acts, view=self, page=page)
|
||||
return actions.get('object', acts, view=self, page=page, target=target)
|
||||
|
||||
actions = dict(portlet=getPortletActions, object=getObjectActions)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue