diff --git a/browser/common.py b/browser/common.py index 7ecf01b..3773355 100644 --- a/browser/common.py +++ b/browser/common.py @@ -496,6 +496,9 @@ class BaseView(GenericView, I18NView): def showObjectActions(self): return not IUnauthenticatedPrincipal.providedBy(self.request.principal) + def checkAction(self, name, category, target): + return True + def openEditWindow(self, viewName='edit.html'): if self.editable: if checkPermission('loops.ManageSite', self.context): diff --git a/browser/concept.py b/browser/concept.py index 0a74c3e..9e958c2 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -371,6 +371,11 @@ class ConceptView(BaseView): actions = dict(object=getObjectActions) + def checkAction(self, name, category, target): + if name in (self.typeOptions('hide_action.' + category) or []): + return False + return True + class ConceptRelationView(ConceptView, BaseRelationView): diff --git a/browser/node.py b/browser/node.py index 0687548..2ab46ac 100644 --- a/browser/node.py +++ b/browser/node.py @@ -423,10 +423,10 @@ class NodeView(BaseView): actions = [] #self.registerDojo() self.registerDojoFormAll() - if category in self.actions: - actions.extend(self.actions[category](self, target=target)) if target is None: target = self.virtualTarget + if category in self.actions: + actions.extend(self.actions[category](self, target=target)) if target is not None: actions.extend(target.getActions(category, page=self, target=target)) if target != self.virtualTarget: # self view must be used directly for target @@ -441,19 +441,19 @@ class NodeView(BaseView): targetWindow='loops_cme', description='Open concept map editor in new window', url=cmeUrl, target=target)) - actions.append(DialogAction(self, title='Create Resource...', - description='Create a new resource object.', - page=self, target=target)) + if self.checkAction('create_resource', 'portlet', target): + actions.append(DialogAction(self, title='Create Resource...', + description='Create a new resource object.', + page=self, target=target)) return actions - def xx_getObjectActions(self, target=None): - acts = [] - if self.globalOptions('organize.allowSendEmail'): - acts.append('send_email') - return actions.get('object', acts, view=self, page=self, target=target) - actions = dict(portlet=getPortletActions) + def checkAction(self, name, category, target): + if name in ('create_resource',) and target is not None: + return target.checkAction(name, category, target) + return True + @Lazy def popupCreateObjectForm(self): return ("javascript:function%%20openDialog(url){"