マネージャーとサイト管理者以外の役割のワークフロー ステータス メニューで、「詳細 ...」(content_status_history) リンクを無効にしたいと考えています。これを行うために使用できる許可はありますか? それとも、このリンクの許可はトランジションの存在と結び付いていますか?
質問する
244 次
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 に答える