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,10 +35,14 @@ class TargetAction(Action): | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def url(self): |     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 |             baseUrl = self.view.virtualTargetUrl | ||||||
|         else: |         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) |         return self.getActionUrl(baseUrl) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -55,7 +59,12 @@ class DialogAction(Action): | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def url(self): |     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 |     @Lazy | ||||||
|     def onClick(self): |     def onClick(self): | ||||||
|  | @ -69,7 +78,13 @@ class DialogAction(Action): | ||||||
|         if self.fixedType: |         if self.fixedType: | ||||||
|             urlParams['fixed_type'] = 'yes' |             urlParams['fixed_type'] = 'yes' | ||||||
|         urlParams.update(self.addParams) |         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, |         return self.jsOnClick % (self.dialogName, url, self.viewName, | ||||||
|                                  urlencode(urlParams)) |                                  urlencode(urlParams)) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -392,13 +392,13 @@ class BaseView(GenericView, I18NView): | ||||||
|     def editable(self): |     def editable(self): | ||||||
|         return canWriteObject(self.context) |         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 |         """ Return a list of actions that provide the view and edit actions | ||||||
|             available for the context object. |             available for the context object. | ||||||
|         """ |         """ | ||||||
|         actions = [] |         actions = [] | ||||||
|         if category in self.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 |         return actions | ||||||
| 
 | 
 | ||||||
|     def openEditWindow(self, viewName='edit.html'): |     def openEditWindow(self, viewName='edit.html'): | ||||||
|  |  | ||||||
|  | @ -349,12 +349,12 @@ class ConceptView(BaseView): | ||||||
|         for node in self.context.getClients(): |         for node in self.context.getClients(): | ||||||
|             yield NodeView(node, self.request) |             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) |         t = IType(self.context) | ||||||
|         actInfo = t.optionsDict.get('action.' + category, '') |         actInfo = t.optionsDict.get('action.' + category, '') | ||||||
|         actNames = [n.strip() for n in actInfo.split(',')] |         actNames = [n.strip() for n in actInfo.split(',')] | ||||||
|         if actNames: |         if actNames: | ||||||
|             return actions.get(category, actNames, view=self, page=page) |             return actions.get(category, actNames, view=self, page=page, target=target) | ||||||
|         return [] |         return [] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -114,7 +114,7 @@ | ||||||
|             <th i18n:translate="">Size</th> |             <th i18n:translate="">Size</th> | ||||||
|             <th i18n:translate="">Modification Date</th> |             <th i18n:translate="">Modification Date</th> | ||||||
|             <th i18n:translate="">Author(s)</th> |             <th i18n:translate="">Author(s)</th> | ||||||
|             <th i18n:translate="">St</th> |             <th i18n:translate="">Info</th> | ||||||
|           </tr> |           </tr> | ||||||
|           <tal:items repeat="related resources"> |           <tal:items repeat="related resources"> | ||||||
|             <tal:item define="class python: repeat['related'].odd() and 'even' or 'odd'; |             <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/modified">2007-03-30</span></td> | ||||||
|                 <td><span tal:replace="related/creators">John</span></td> |                 <td><span tal:replace="related/creators">John</span></td> | ||||||
|                 <td style="white-space: nowrap" |                 <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" /> |                   <div metal:use-macro="views/node_macros/object_actions" /> | ||||||
|                 </td> |                 </td> | ||||||
|               </tr> |               </tr> | ||||||
|  |  | ||||||
|  | @ -387,24 +387,24 @@ class NodeView(BaseView): | ||||||
|         actions = [] |         actions = [] | ||||||
|         self.registerDojo() |         self.registerDojo() | ||||||
|         if category in self.actions: |         if category in self.actions: | ||||||
|             actions.extend(self.actions[category](self)) |             actions.extend(self.actions[category](self, target=target)) | ||||||
|         if target is None: |         if target is None: | ||||||
|             target = self.virtualTarget |             target = self.virtualTarget | ||||||
|         if target is not None: |         if target is not None: | ||||||
|             actions.extend(target.getActions(category, page=self)) |             actions.extend(target.getActions(category, page=self, target=target)) | ||||||
|         return actions |         return actions | ||||||
| 
 | 
 | ||||||
|     def getPortletActions(self): |     def getPortletActions(self, target=None): | ||||||
|         actions = [] |         actions = [] | ||||||
|         cmeUrl = self.conceptMapEditorUrl |         cmeUrl = self.conceptMapEditorUrl | ||||||
|         if cmeUrl: |         if cmeUrl: | ||||||
|             actions.append(Action(self, title='Edit Concept Map', |             actions.append(Action(self, title='Edit Concept Map', | ||||||
|                       targetWindow='loops_cme', |                       targetWindow='loops_cme', | ||||||
|                       description='Open concept map editor in new window', |                       description='Open concept map editor in new window', | ||||||
|                       url=cmeUrl)) |                       url=cmeUrl, target=target)) | ||||||
|         actions.append(DialogAction(self, title='Create Resource...', |         actions.append(DialogAction(self, title='Create Resource...', | ||||||
|                   description='Create a new resource object.', |                   description='Create a new resource object.', | ||||||
|                   page=self)) |                   page=self, target=target)) | ||||||
|         return actions |         return actions | ||||||
| 
 | 
 | ||||||
|     actions = dict(portlet=getPortletActions) |     actions = dict(portlet=getPortletActions) | ||||||
|  | @ -508,31 +508,6 @@ class InlineEdit(NodeView): | ||||||
|         return 'OK' |         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 | # special (named) views for nodes | ||||||
| 
 | 
 | ||||||
| class SpecialNodeView(NodeView): | class SpecialNodeView(NodeView): | ||||||
|  |  | ||||||
|  | @ -187,7 +187,8 @@ | ||||||
| 
 | 
 | ||||||
| <metal:actions define-macro="object_actions"> | <metal:actions define-macro="object_actions"> | ||||||
|   <div style="float: right;" |   <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)"> |     <tal:actions repeat="action python:view.getActions('object', target=target)"> | ||||||
|       <metal:action use-macro="action/macro" /> |       <metal:action use-macro="action/macro" /> | ||||||
|     </tal:actions> |     </tal:actions> | ||||||
|  |  | ||||||
|  | @ -175,20 +175,20 @@ class ResourceView(BaseView): | ||||||
| 
 | 
 | ||||||
|     # actions |     # actions | ||||||
| 
 | 
 | ||||||
|     def getPortletActions(self, page=None): |     def getPortletActions(self, page=None, target=None): | ||||||
|         actions = [] |         actions = [] | ||||||
|         actions.append(DialogAction(self, title='Edit Resource...', |         actions.append(DialogAction(self, title='Edit Resource...', | ||||||
|                   description='Modify resource object.', |                   description='Modify resource object.', | ||||||
|                   viewName='edit_object.html', dialogName='edit', |                   viewName='edit_object.html', dialogName='edit', | ||||||
|                   page=page)) |                   page=page, target=target)) | ||||||
|         return actions |         return actions | ||||||
| 
 | 
 | ||||||
|     def getObjectActions(self, page=None): |     def getObjectActions(self, page=None, target=None): | ||||||
|         acts = ['info'] |         acts = ['info'] | ||||||
|         acts.extend('state.' + st for st in statefulActions) |         acts.extend('state.' + st for st in statefulActions) | ||||||
|         if self.xeditable: |         if self.xeditable: | ||||||
|             acts.append('external_edit') |             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) |     actions = dict(portlet=getPortletActions, object=getObjectActions) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm