Plone内容进行大量文本替换的管理工具
项目描述
请仔细阅读!
即使这个产品提供了一个高级的Plone用户界面,它并不是为最终用户或“普通”网站管理员设计的。你必须是一个 Python正则表达式 专家(可能是一位大师)。
另外:使用此产品可能会 减慢 您运行的Plone网站。
简介
此产品将为您的Plone网站管理员提供一个使用 正则表达式 查询进行文本搜索的工具,并且可选地在您网站内容的正文本段中执行文本替换。
用例
您正在大洋国超级国家的真理部工作。战争历史表明,大洋国与东亚结盟,与欧亚大陆处于战争状态。
您负责保持大洋国网站更新,党选择了Plone作为唯一的CMS。
然后党实行双重思想,历史改变:大洋国从未与东亚结盟,但它与欧亚大陆结盟(并与东亚处于战争状态)。您必须迅速更新Plone网站。
您需要迅速审查所有提到东亚和欧亚大陆的文档,并在必要时交换这两个名称。您不能简单地执行批量替换,因为您必须阅读要替换的术语所使用的上下文。
例如:关于东亚作为朋友的文档必须更改,描述欧亚大陆地理位置的文档可以保持不变。
如何使用
该产品设计用于在不逐一编辑每个文档的情况下,对同一类型的文本进行批量替换操作。
默认情况下,该产品与Plone内容中所有已知的富文本字段一起工作,它们是
页面内容类型的文本字段
事件内容类型的文本字段
新闻条目内容类型的文本字段
收藏内容类型的文本字段(旧式也适用)
您可以通过提供第三方扩展来扩展上述集合(见下文)。
访问“批量修改内容”面板
在您的“站点设置”部分,您将找到一个新的“批量修改内容”面板。所有操作都从该页面进行。
基本搜索
页面上半部分是关于搜索内容。
您必须通过勾选“内容类型”部分来选择您想要检查的内容类型。尽管此选择显示所有内容类型,但请注意,只有其中的一小部分可用(例如:链接内容类型目前没有使用任何文本字段)。
此选择将触发对所选类型的目录搜索(因此请将此选择保持最小)。
最重要的字段是“搜索正则表达式”,您必须在此处编写正则表达式。对于找到的每个内容类型,它的文本字段将被加载,并对其中的文本进行解析,以与正则表达式进行匹配搜索。
您可以使用“正则表达式标志”复选框组更改一些正则表达式搜索配置选项。
现在您可以点击下面的搜索按钮。
结果
搜索结果将显示在页面底部的表格中。
表格将包含找到的文本的预览以及关于内容的简要信息。请注意,单个文档可以在表格中出现多次,因为最小实体是文本匹配,而不是文档本身。
替换文本
执行文本替换的最简单方法是填写“默认替换”文本区域。
结果表将更改,提供应用替换表达式后将发生更改的图形预览。
用户现在必须选择他真正想要应用的替换,然后单击“修改所选”按钮。只有选定的匹配项会被更改。
替换选项
在更改文本时,您显然是在更改Plone内容,因此您有一些额外的选项可用
- 不更新任何内容(静默更改)
如果想要修复一些内容而不更新来自内容的其他元数据,则很有用。只有文本字段(以及Plone全文索引)将更新。
网站成员永远不会注意到这种类型的更改。
- 更新修改时间
同时更新文档的最后修改时间。
- 创建新版本(如果可能)
完整修改。如果内容类型是可版本的,将保存新版本。
高级使用
高级服务器端操作
有时简单的文本正则表达式不够用。该产品支持通过调用一些服务器端组件来处理真正复杂的文本替换的方法。
默认情况下,只有一个处理程序可用:“将内部链接转换为resolveuid使用”,可以将Plone内部链接转换为使用“resolveuid”调用的形式。这可以用于误未启用TinyMCE选项“使用UID链接”的Plone站点(类似于Kupu编辑器提供的功能)。
添加新的服务器端特殊处理器
提供新的IBulkModifyReplacementHandler实用程序将自动显示新的特殊替换
<utility name="handler_name" component="your.product.utility.YourTextSpacialReplacement" provides="rt.bulkmodify.interfaces.IBulkModifyReplacementHandler" />
扩展处理类型
要更改未处理的类型的文本字段,您必须提供适当的适配器与第三方产品
<adapter for="your.product.interfaces.IYourContentTypeInterface" provides="..interfaces.IBulkModifyContentChanger" factory="your.product.adapter.YourTextContentAdapter" />
待办事项
添加一种使用文本替换作为运行脚本的方法,例如
我们真的需要JavaScript测试
JavaScript几乎还没有优化
该产品设计用于在ZODB上执行多次写提交,但可能有一种执行单个大型写操作的方法是有用的
鸣谢
在Regione Emilia Romagna的支持下开发;Regione Emilia Romagna支持PloneGov倡议。
变更日志
0.4.1 (2014-05-29)
如果使用Python 2.6,则需要zope.tal >= 3.6.1。这接近#2。 [keul]
使portal_css和portal_javascript满意:不要为JavaScript和CSS添加加载条件。这防止加载资源碎片化[keul]
0.4 (2013-10-07)
以优雅的方式显示类型检查,以及全选/全不选命令[keul]
显示真正检查的文档计数器(即:对于找到IBulkModifyContentChanger适配器的文档)[keul]
在替换文本时也显示HTML预览(这解决了#3)[keul]
如果“文本”无法读取,则不会中断(例如:对于名为“text”的计算字段)[keul]
0.3 (2013-04-02)
更改后调用新搜索直到重新启动实例才会工作[keul]
修复了损坏的测试[keul]
更改后UI更好(显示每个内容的一个消息,并保持内容标题)[keul]
在相同内容上调用附加更改不会工作(或者更糟:它可能执行错误的替换)[keul]
修复了在相同元素上有多个匹配项时标签/复选框关联的故障[keul]
添加了新的复选框类型,用于选择同一文档的所有匹配项[keul]
0.2 (2013-03-26)
在服务器更改后保留到内容的链接[keul]
在新窗口中打开链接[keul]
当文档更新多次时,只会创建一个新版本[keul]
提交替换请求时显示旋转器并禁用复选框[keul]
显示运行搜索的计数器[keul]
JSHint清理和针对Internet Explorer的修复[keul]
现在可以暂停然后继续搜索操作[keul]
0.1.1 (2013-03-15)
从Archetypes字段加载数据时,使用raw格式。这防止替换破坏resolveuid使用[keul]
执行搜索时,立即显示“加载”信息,而不仅仅是第一个完成请求后[keul]
0.1 (2013-03-14)
初始版本