diff --git a/browser/common.py b/browser/common.py index 641ee5f..1e400cb 100644 --- a/browser/common.py +++ b/browser/common.py @@ -613,16 +613,18 @@ class BaseView(GenericView, I18NView): # states + viewStatesPermission = 'zope.ManageContent' + @Lazy def states(self): result = [] - if not checkPermission('loops.ManageSite', self.context): - # TODO: replace by more sensible permission + if not checkPermission(self.viewStatesPermission, self.context): return result if IResource.providedBy(self.target): statesDefs = self.globalOptions('organize.stateful.resource', ()) else: - statesDefs = self.globalOptions('organize.stateful.concept', ()) + statesDefs = (self.globalOptions('organize.stateful.concept', []) + + self.typeOptions('organize.stateful', [])) for std in statesDefs: stf = component.getAdapter(self.target, IStateful, name=std) result.append(stf) diff --git a/browser/concept.py b/browser/concept.py index 9265492..0c1fe97 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -505,9 +505,9 @@ class ConceptView(BaseView): def getObjectActions(self, page=None, target=None): acts = ['info'] - acts.extend('state.' + st.statesDefinition for st in self.states) if self.globalOptions('organize.allowSendEmail'): acts.append('send_email') + acts.extend('state.' + st.statesDefinition for st in self.states) return actions.get('object', acts, view=self, page=page, target=target) actions = dict(object=getObjectActions) diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt index f4f7ebd..d648679 100644 --- a/browser/concept_macros.pt +++ b/browser/concept_macros.pt @@ -107,7 +107,7 @@