1

Linguaplone-4.1.1 がインストールされた新しい Plone-4.1.5 サイトがあり、2 つの言語が選択され、フロントページが他の言語に翻訳されています。

コントロール パネルを使用してワークフローを simple_workflow から intranet_workflow に変更し、古い状態を新しい状態にマッピングすると、現在選択されている言語のオブジェクトのみが新しいマッピングを取得します。他の言語のオブジェクトは、新しいワークフローの初期状態を取得します。

これを克服するためにプログラムでマッピングを行うことは可能ですか?

4

1 に答える 1

2

この場合、ワークフローを再マップするコードにパッチを適用するのがおそらく最も簡単です。

plone.app.workflow卵を開き (そのパスはスクリプトにリストされます) bin/instanceplone/app/workflow/remap.pyファイルを見つけて編集します。

半分ほど下に、次の行があります (私のコピーでは 79 行目)。

for brain in portal_catalog(portal_type=type_ids):

それに追加Language='all'します:

for brain in portal_catalog(portal_type=type_ids, Language='all'):

別の方法は、そのファイル全体を自分のプロジェクトにコピーし、その変更をローカルで行ってから、次のように呼び出すことです。

statemap = {
    'oldstate1_id': 'newstate1_id',
    'oldstate2_id': 'newstate2_id'
}
chain_name = ('workflow_id',)  # tuple of wf ids (can be empty), or the string '(Default)'
portal_types = ('sequence', 'of', 'portal_types')

copiedremap.remap_workflow(portal, portal_types, chain_name, state_map)

次に、remap_workflowスクリプトはオブジェクトの現在の状態を使用して、新しいターゲット ワークフローで必要な新しい状態を見つけます (新しいワークフローごとにこれを行います)。古い状態がマップにリストされていない場合は、ターゲット ワークフローの初期状態が使用されます。

于 2012-12-16T21:11:28.070 に答える