From 21743d6e5214c22d54849f1b4cbc4dafe8923f24 Mon Sep 17 00:00:00 2001 From: helmutm Date: Sat, 26 Apr 2008 12:44:46 +0000 Subject: [PATCH] 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 --- browser/action.py | 23 +++++++++++++++++++---- browser/common.py | 4 ++-- browser/concept.py | 4 ++-- browser/concept_macros.pt | 5 +++-- browser/node.py | 35 +++++------------------------------ browser/node_macros.pt | 3 ++- browser/resource.py | 8 ++++---- 7 files changed, 37 insertions(+), 45 deletions(-) diff --git a/browser/action.py b/browser/action.py index 56d1204..c9e86b8 100644 --- a/browser/action.py +++ b/browser/action.py @@ -35,10 +35,14 @@ 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: - baseUrl = self.page.virtualTargetUrl + 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,7 +78,13 @@ class DialogAction(Action): if self.fixedType: urlParams['fixed_type'] = 'yes' urlParams.update(self.addParams) - url = self.page.virtualTargetUrl + #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)) diff --git a/browser/common.py b/browser/common.py index f10d066..7e9e2fb 100644 --- a/browser/common.py +++ b/browser/common.py @@ -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'): diff --git a/browser/concept.py b/browser/concept.py index 3127bfc..245e174 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -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 [] diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt index 4c4ec11..3c26c3f 100644 --- a/browser/concept_macros.pt +++ b/browser/concept_macros.pt @@ -114,7 +114,7 @@ Size Modification Date Author(s) - St + Info 2007-03-30 John + tal:define="target nocall:related; + style nothing">
diff --git a/browser/node.py b/browser/node.py index 04b2c44..fc5cdb5 100644 --- a/browser/node.py +++ b/browser/node.py @@ -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): diff --git a/browser/node_macros.pt b/browser/node_macros.pt index 0c2b741..3cc807a 100644 --- a/browser/node_macros.pt +++ b/browser/node_macros.pt @@ -187,7 +187,8 @@
+ tal:define="target nocall:target|nothing;" + tal:attributes="style style|string:float: right"> diff --git a/browser/resource.py b/browser/resource.py index 74ed77b..b2ed02a 100644 --- a/browser/resource.py +++ b/browser/resource.py @@ -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)