Workflow 在多语言网站中更改工作流仅适用于一种语言

Workflow 在多语言网站中更改工作流仅适用于一种语言,workflow,plone,multilingual,linguaplone,Workflow,Plone,Multilingual,Linguaplone,我有一个全新的Plone-4.1.5站点,安装了Linguaplone-4.1.1,选择了两种语言,并将头版翻译成另一种语言 通过“控制面板”将工作流从“简单”工作流更改为“内部网”工作流,并将旧状态映射为新状态时,只有当前所选语言的对象才能获得新映射。其他语言的对象获取新工作流的初始状态 是否有可能通过编程方式进行映射来克服这一问题?在这种情况下,只需修补重新映射工作流的代码可能是最简单的 打开plone.app.workflowegg(它的路径将在bin/instance脚本中列出),找到p

我有一个全新的Plone-4.1.5站点,安装了Linguaplone-4.1.1,选择了两种语言,并将头版翻译成另一种语言

通过“控制面板”将工作流从“简单”工作流更改为“内部网”工作流,并将旧状态映射为新状态时,只有当前所选语言的对象才能获得新映射。其他语言的对象获取新工作流的初始状态


是否有可能通过编程方式进行映射来克服这一问题?

在这种情况下,只需修补重新映射工作流的代码可能是最简单的

打开
plone.app.workflow
egg(它的路径将在
bin/instance
脚本中列出),找到
plone/app/workflow/remap.py
文件并编辑它

大约走到一半的时候,你会发现下面一行(我的副本中的第79行):

并添加
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_工作流
脚本然后使用对象的当前状态来查找它在新目标工作流中应该具有的新状态(它将为每个新工作流执行此操作);如果旧状态未在映射中列出,它将使用目标工作流的初始状态。

这听起来像是控制面板UI中的错误。LinguaPlone对目录查询应用自动过滤器,以仅包括当前语言中的项。控制面板在查询要重新映射的项目时可能需要覆盖所有语言。Thx太多了,我拥有一家酿酒厂+一个非常好的答案,有几种可能。我应该提交错误报告,还是已经记录了?(我已经看到你在工作流工具中为多行支持做出了贡献,所以我想我应该问问来源)。我没有寻找,如果你找不到现有的bug报告,请提交一个。如果需要,请随时在报告中链接到此帖子。:-)
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)