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,
                        })

独自の実装を提供するには (特定の条件が満たされた場合に最後のオプションを再度削除するサブクラスを使用するなど)、 を使用して登録overrideを再定義する必要があります。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 に答える