teppokoivula/process-changelog

ProcessChangelog 是一个 ProcessWire CMS/CMF 模块,用于跟踪页面(编辑、添加、删除等)的更改。

资助包维护!
teppokoivula

安装数: 1,761

依赖项: 0

建议者: 0

安全: 0

星标: 9

关注者: 5

分支: 2

公开问题: 0

语言:JavaScript

类型:pw-module

1.18.0 2024-08-21 14:01 UTC

README

ProcessWire CMS/CMF 的变更日志模块。版权(c)2013-2022 Teppo Koivula

此模块跟踪您的 ProcessWire 网站上的更改(编辑、添加、删除等)。它不是作为一个版本控制解决方案:为此目的,有其他模块。此模块的目的是为管理员用户提供对网站更改的快速概览。

要求

  • ProcessWire 3.x(至少将正式支持最后两个主版本)
  • PHP 7.1+

自动清理(强烈推荐)需要您安装 LazyCron 模块。虽然 LazyCron 与核心包捆绑在一起,但默认情况下不会安装。如果没有自动清理,随着更改日志数据的不断积累,您的数据库最终可能会变得缓慢。

安装

此模块的安装方式与其他 ProcessWire 模块相同:将包含此模块的目录复制或克隆到您的 /site/modules/ 目录,登录,转到 Admin > 模块,点击“检查新模块”,然后安装“Changelog”。

或者您可以通过 Composer 获取模块文件

composer require teppokoivula/process-changelog

Process Changelog Hooks 将与主模块一起自动安装,而 Process Changelog RSS 的安装完全可选:如果安装,它将为您提供对网站更改的公开可查看的 RSS 源。更多详情请参阅“Changelog RSS 源”部分。

如何使用

当您安装此模块时,它将在 Admin 中创建一个名为“Changelog”的新页面(设置 > Changelog)。此页面包含自安装此模块以来网站页面上更改的列表。通过单击每行旁边的“更多”链接,可以查看该特定更改的更多信息。

为了访问变更日志页面,用户需要满足以下条件:a) 已认证,b) 拥有具有“变更日志”权限的角色或具有超级用户角色。虽然安装此模块时会自动添加变更日志权限,但需要手动将其分配给任何适用的角色。

Changelog RSS 源

此模块提供两种类型的 RSS 源:一种可以通过认证用户通过变更日志页面(/setup/changelog/rss/)访问,另一种可以通过安装可选的 Process Changelog RSS 模块,在它的配置设置中输入一个密钥,并通过类似于以下 URL 的 URL 访问源:http://example.com/process-changelog-rss.xml?key=1234567890

由于后者可以通过公开 URL 访问,请确保您的密钥尽可能难以猜测(并且永远不要使用密钥 1234567890)。如果您不确定是否真的需要此功能,请勿安装 Process Changelog RSS 模块。

模式更新说明

此模块会自动更新数据库模式,但在某些情况下,更新可能不会按预期工作,尤其是如果您数据库表中有大量数据。

如果发生错误,您可以手动运行模式更新。触发此操作的最简单方法是创建一个简单的引导脚本并在服务器上运行它

<?php

// place this script in your site's root directory, at the same level as the
// ProcessWire index.php file, and execute via the php command.

require __DIR__ . '/index.php';
$changelog = $wire->modules->get('ProcessChangelogHooks');
$changelog->updateDatabaseSchema(true);

这可能需要一段时间才能运行,但不应导致超时,这是通过管理员运行模式更新时出现错误的最可能原因。

如果您无法以这种方式运行架构更新,您可以直接在数据库中执行预期的更改(有关适用的SQL命令,请参阅ProcessChangelogHooks::updateDatabaseSchema()),然后手动更新“架构版本”设置在Process Changelog Hooks模块配置中。

钩子

Process Changelog公开了各种可钩子方法,其中一些您可以用来自定义收集的数据,而其他方法则更有助于触发动作或简单地修改模块本身的输出。在此,我们将提供一些有关如何挂钩到模块执行的建议。

注意:本README的这一部分仍在进行中;以后可能会添加更多技巧和窍门。

向管理表视图添加新列

您可以通过挂钩到ProcessChangelog::getHeaderRow()ProcessChangelog::parseTableRow()来定制管理表视图,通常是为了添加新列(但也可以选择删除一些列)。

// add header row for our new column
$wire->addHookAfter('ProcessChangelog::getHeaderRow', function($event) {
	$event->return = array_merge($event->arguments[0], ['Fields']);
});

// add data for our new column
$wire->addHookAfter('ProcessChangelog::parseTableRow', function($event) {
	$details = json_decode($event->arguments[0]['data'], true) ?: [];
	$event->return = array_merge($event->return, [$details['Fields edited'] ?? '']);
});

设置

本模块包含一些您应该知道的设置。设置可以通过ProcessWire的本地模块配置屏幕定义,每个捆绑的模块都有自己的设置。

有关详细信息,请参阅Process Changelog、Process Changelog Hooks和Process Changelog RSS模块配置屏幕。

图标

本模块使用的图标是Gnome项目的部分,并按照GNU GPL v2许可(https://gnu.ac.cn/licenses/gpl-2.0.html)进行许可。有关更多信息,请访问http://gnome.orghttp://art.gnome.org/themes/icon

许可证

本程序是免费软件;您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它;许可证的第2版,或者(根据您的选择)许可证的任何较新版本。

本程序的分发是希望它将是有用的,但没有任何保证;甚至没有对适销性或对特定目的适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。

您应该已经收到一份GNU通用公共许可证的副本;如果没有,请写信给自由软件基金会,Inc.,51 Franklin Street,第五层,波士顿,MA 02110-1301,USA。

(有关完整的许可证文本,请参阅所包含的LICENSE文件。)