2

我想为除经理和站点管理员之外的其他角色禁用工作流状态菜单中的“高级...”(content_status_history)链接。是否有我可以用来执行此操作的权限?还是此链接的许可与过渡的存在相结合?

4

2 回答 2

3

链接的存在与工作流转换相关联。它链接到的表单提供了额外的选项来设置当前对象上可用的转换。没有权限控制它的存在;菜单项是硬编​​码的。

plone.app.contentmenu.menu来源

    if len(results) > 0:
        results.append({ 'title'        : _(u'label_advanced', default=u'Advanced...'),
                         'description'  : '',
                         'action'       : url + '/content_status_history',
                         'selected'     : False,
                         'icon'         : None,
                         'extra'        : {'id': 'advanced', 'separator': 'actionSeparator', 'class': 'kssIgnore'},
                         'submenu'      : None,
                        })

要提供您自己的实现(如果满足某些条件,可能使用再次删除最后一个选项的子类),您必须使用 anoverride重新定义browser:menu注册。

在您的情况下,您必须使用以下声明overrides.zcml指向您自己的实现:browser:menu

  <browser:menu
    id="plone_contentmenu_workflow"
    title="The 'workflow' menu - allows the user to execute workflow transitions"
    class=".yourmodule.YourWorkflowMenu"
    />

然后在yourmodule.py创建一个YourWorkflowMenu类,例如:

from plone.app.contentmenu.menu import WorkflowMenu

class YourWorkflowMenu(WorkflowMenu):
    def getMenuItems(self, context, request):
        results = super(YourWorkflowMenu, self).getMenuItems(context, request)
        if len(results) > 0 and someothercondition:
            # Remove status history menu item ('Advanced...')
            results = [r for r in results
                if not r['action'].endswith('/content_status_history')]
        return results
于 2012-08-10T15:03:48.867 回答
2

您应该能够通过添加隐藏菜单项

a#advanced {
   display: none;
}

到你的风格。

与臃肿的前清洁解决方案相比,这是一个务实的解决方案。

于 2012-08-10T17:40:39.970 回答