多种上下文:一种只读,一种完全控制

时间:2018-08-30 17:16:48

标签: modx modx-revolution modx-resources

多上下文站点具有两个(实际上更多)上下文。 我们需要有一个用户(组),每个用户都可以在一个上下文中进行编辑,而只能查看另一个上下文。

该网站的设计目的是在每个上下文中没有 个根节点(由于友好的url和逻辑,即home不是任何其他页面的父级)。

资源组似乎无法正常工作,因为您必须在组中手动添加每个资源(其中有大量文档)。

任何想法如何处理?

1 个答案:

答案 0 :(得分:1)

您必须为此使用资源组和一个插件,该插件在保存资源期间根据上下文设置资源组。可以一次运行一个摘要来设置现有资源。

该插件的代码非常简单,它必须在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;