srhinow / rms-c3
Contao CMS的内容发布管理系统
Requires
- php: >=5.3
- contao-community-alliance/composer-plugin: ~2.4 || ~3.0
- contao/core-bundle: ^3.2, < 4.0-dev
Replaces
- contao-legacy/rms: 3.5.6
This package is not auto-updated.
Last update: 2024-09-23 08:24:38 UTC
README
rms-c3是一个Contao3扩展(对应Contao 4版本),允许特定用户组的用户管理发布。所有非作为超级编辑组在发布设置中指定的编辑器账号可以修改内容,或者如果允许也可以创建新内容。但是,保存后这些内容不会立即在网站上显示,而是在发布列表中。为了使各个发布编辑器不必在每次保存后都收到邮件,普通编辑器可以在编辑视图中留下发布注释,并有一个复选框来决定是否将消息发送给发布编辑器。此外,等待发布的内客在各自的区域列表视图中会用红色提示标记。
目前发布功能适用于以下区域
- 文章
- 所有内容元素,无论其父表是什么
- 新闻
- 通讯
- 常见问题(自3.2版起)
- 日历事件
实现
模块安装后,首先需要在“系统”/“设置”中的“发布模块”通过复选框激活。该模块可以在任何时候全局禁用。在这种情况下,不会删除现有的rms表内容,只是不执行。
编辑器的分配始终在各自区域的根设置中进行。例如,对于新闻,发布设置位于各自的新闻存档设置中,对于文章及其内容元素,则是每个页面结构树的根页面。这样可以将不同的区域分配给不同的责任人。分配的发布编辑器将在发布管理下只看到为他指定的发布。编辑器和发布编辑器的字段还需要在用户(组)权限中分配。(提示:在浏览器权限设置中搜索“发布”,然后逐个区域进行操作)。
在BE模块“发布请求”中,发布编辑器可以选择显示前端预览,查看更改的Diff视图,直接编辑内容,并通过复选框再次通过电子邮件通知编辑器。一旦编辑模式下的请求被保存,它就会在列表中(绿色)作为已编辑标记出现。为了更好的可读性,也可以根据编辑状态进行过滤。一旦发布请求在发布列表中通过复选标记确认,内容就会被发布,并且从发布列表中删除。如果删除发布条目,则在现有元素中会重置发布模式,删除新创建的元素,并从发布列表中删除条目。
其他全局rms设置位于“发布请求”/“发布设置”。首先需要指定具有发布权限的用户组。此外,需要在那里指定一个回退发布编辑器(也可以是具有管理员权限的人)。例如,如果由于某种原因,尽管区域已被标记为发布保护,但指定的用户不存在,将使用电子邮件地址。此外,可以输入逗号分隔的电子邮件地址,以便在每次发布时通知。
由...
Contao 2.11.x版本的rms扩展的第一个实现是根据订单要求和下萨克森州图书馆中心(http://www.bz-niedersachsen.de)的财务支持产生的。
Contao 3 的 rms 扩展实现以及“显示差异”功能的扩展,由 Cyrill Weiss (http://www.cyrillweiss.ch/)委托和资助。
允许为每个区域指定一个独立的发布编辑器的 rms 扩展修改,由 Michael Roedhamer (http://pixelkinder.com)委托和资助。
版本说明
关于从旧版本更新到 3.2 的说明:由于在版本中处理预览和存储设置的地点发生了变化,因此发布请求下不应再有条目。有关更新后如何以及在哪里检查设置,请参阅配置。
'rms' 模块已完全重新编写以适用于 Contao 3.x。此外,rms-c3 现在不再需要外部 DC 驱动程序,而是具有自己的驱动程序。这个 'DC_rmsTable.php' 是 DC_Table.php 的一个修改版本。该文件位于扩展 rms/drivers 内,无需额外放置。
rms-c3 **不**向下兼容。在从旧版本更新时,(未经测试)不应出现任何现有设置或数据记录的数据丢失。只是添加了字段,但没有删除或重命名列。
安装
- 将 https://github.com/srhinow/rms-c3 的内容复制到目录 TL_ROOT/system/modules/rms/。
- 例如,在扩展管理器下 -> 数据库更新中更新 Danbank。
- 在设置(Contao-BE)中,在底部较远的位置“发布模块” -> 启用发布模块。
- 在新的后端模块菜单项“发布请求” -> 发布设置中进行设置。
更新
为了删除 Contao2.x 的旧版本,最好删除整个旧的扩展文件夹 /system/modules/rms。然后以相同的路径复制此扩展,再次复制 /system/modules/rms。然后,在扩展管理器下更新数据库。
配置
直到 rms 版本 3.1.x(Contao 版本应为 3.0 或更高)
- 为了在安装后激活发布模块,请在后端系统/设置 -> 部分“发布模块”中勾选“激活发布模式”并保存设置。然后,后端“内容”区域应出现“发布请求”项目。
- 在用户管理/用户组区域创建一个作为发布编辑组使用的组。然后,将此组分配给一个用户。
- 现在切换到后端模块“发布请求”,并在“发布设置”中设置组(发布编辑组)、电子邮件地址、活动的模块和受保护的页面结构,并保存设置。
从 rms 版本 3.2-beta1 开始(Contao 版本应为 3.0 或更高)
- 为了在安装后激活发布模块,请在后端系统/设置 -> 部分“发布模块”中勾选“激活发布模式”并保存设置。这将填充具有附加字段的多个表。之后,后端“内容”区域应出现“发布请求”项目。
- 在用户管理/用户组区域创建一个作为发布编辑组使用的组。然后,将此组分配给所有应负责发布的用户。
- 现在切换到后端模块“发布请求”,并在“发布设置”中设置组(发布编辑组)、后备编辑器、在发布时应通知的额外电子邮件收件人和要忽略的字段。
- 与旧版本不同,负责发布的编辑员将始终在上层确定区域是否受保护、由谁管理,以及(仅限模块)哪个重定向页面用作预览。
- 对于特定页面结构树中的文章和内容元素,设置在页面结构/页面起点中确定
- 对于新闻,它是相应的新闻存档
- 对于相应日历中的事件
- 对于相应分发列表中的新闻通讯
- 对于相应FAQ分类中的常见问题解答
附加说明:对于自定义模块,也可以这样构建权限,因为我已经将其结构设计得非常灵活,它总是会自动确定最顶层级别(通过ptable),并在那里根据设置进行搜索
开发者信息
我已经尽量使模块对其他需要保护的扩展保持开放。
如果区域激活了权限管理,将会加载回调。它首先尝试在一个具有以下命名结构的类中找到“onEditCallback”和“onSubmitCallback”方法 [table].'_rms'。如果没有找到,则使用rmsDefaultCallbacks.php中相同名称的方法。因此,如果现有的功能足够,就不需要存在任何自定义逻辑。(来源:rmsHelper->handleBackendUserAccessControlls())
此外,还有额外的HOOKS用于检查内容是否受到权限保护。这些对于自定义扩展是必需的
- $GLOBALS['TL_HOOKS'] ['rmsIsContentProtected'] 如果扩展也依赖于tl_content表。传递当前表并检查GET参数do
- $GLOBALS['TL_HOOKS'] ['rmsIsTableProtected'] 用于所有非tl_content的扩展DCA。传递当前表并检查传递的表
- 对于某些模块,在发送到模板之前,如果覆盖了rms数据,可能会丢失前端输出的一些特定格式。在这种情况下,我会检查在Class $objTemplate->rms_ref_table.'_rms'中是否存在一个名为'modifyForPreview'的方法。以新闻为例,我在tl_news_rms类中定义了modifyForPreview方法,并在其中重新设置了一个模板参数'linkHeadline'。