多个上下文:一个 ReadOnly,一个 FullControl
Multiple Contexts: One ReadOnly, One FullControl
多上下文站点有两个(实际上更多)上下文。
我们需要有一个用户(组),每个用户都可以在一个上下文中编辑,而只能查看另一个上下文。
网站设计为在每个上下文中没有 单个根节点(因为友好的 url 和逻辑,主页不是任何其他页面的父级)。
Resource-Groups 似乎不起作用,因为您必须在组中手动添加每个资源(里面有大量文档)。
任何想法如何处理这个?
您必须为此使用资源组和一个插件,该插件在保存资源期间根据上下文设置资源组。现有资源可以一次性 运行ning 片段设置。
插件的代码很简单,它必须运行在onDocFormSave:
<?php
/**
* SetResourceGroup
*
* @package setresourcegroup
*/
/** @var $modx modX */
/** @var $scriptProperties array */
/* only operate on new resources */
if ($mode != modSystemEvent::MODE_NEW) {
$modx->log(xPDO::LOG_LEVEL_INFO, 'Old Resource ' . $resource->get('id'));
return;
} else {
$modx->log(xPDO::LOG_LEVEL_INFO, 'New Resource ' . $resource->get('id'));
switch($resource->get('context_key')) {
case 'en':
$group = 'Translator (en)';
if (!$resource->joinGroup($group)) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Can\'t add the resource ' . $resource->get('id') . 'to the Resource Group "'. $group . '"');
}
break;
}
$group = 'Administrator';
if (!$resource->joinGroup($group)) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Can\'t add the resource ' . $resource->get('id') . 'to the Resource Group "'. $group . '"');
}
}
return;
多上下文站点有两个(实际上更多)上下文。 我们需要有一个用户(组),每个用户都可以在一个上下文中编辑,而只能查看另一个上下文。
网站设计为在每个上下文中没有 单个根节点(因为友好的 url 和逻辑,主页不是任何其他页面的父级)。
Resource-Groups 似乎不起作用,因为您必须在组中手动添加每个资源(里面有大量文档)。
任何想法如何处理这个?
您必须为此使用资源组和一个插件,该插件在保存资源期间根据上下文设置资源组。现有资源可以一次性 运行ning 片段设置。
插件的代码很简单,它必须运行在onDocFormSave:
<?php
/**
* SetResourceGroup
*
* @package setresourcegroup
*/
/** @var $modx modX */
/** @var $scriptProperties array */
/* only operate on new resources */
if ($mode != modSystemEvent::MODE_NEW) {
$modx->log(xPDO::LOG_LEVEL_INFO, 'Old Resource ' . $resource->get('id'));
return;
} else {
$modx->log(xPDO::LOG_LEVEL_INFO, 'New Resource ' . $resource->get('id'));
switch($resource->get('context_key')) {
case 'en':
$group = 'Translator (en)';
if (!$resource->joinGroup($group)) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Can\'t add the resource ' . $resource->get('id') . 'to the Resource Group "'. $group . '"');
}
break;
}
$group = 'Administrator';
if (!$resource->joinGroup($group)) {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Can\'t add the resource ' . $resource->get('id') . 'to the Resource Group "'. $group . '"');
}
}
return;