首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将节点的翻译和编辑限制为一种语言

将节点的翻译和编辑限制为一种语言
EN

Drupal用户
提问于 2020-07-03 13:16:45
回答 1查看 559关注 0票数 2

编辑

我在Workbench访问问题队列中发现了这种情况:https://www.drupal.org/project/workbench_访问/问题/2982941#评论-12670744

似乎我需要停用translate *bundle* *node*权限,因为如果设置了这些权限,权限就会短路,其他访问限制也不会适用,并自行创建一堆新的*translate *bundle* *node* *language*权限。在我的例子中,我们有15种节点类型和6种语言。这将导致90个新权限。这是压倒性的。

原始问题

我试图将Drupal管理部分中节点的创建和编辑权限限制为用户只使用一种语言。我没有找到提供此功能的模块。Is有任何这样做的模块吗?

然后我尝试创建自己的模块。我想出了一个解决方案

文件: custom_i18n_access.module

代码语言:javascript
复制
getRoles();

    if (in_array('administrator', $roles)) {
        return AccessResult::neutral();
    }

    if ($op !== 'update' && $op !== 'delete') {
        return AccessResult::neutral();
    }

    // Access should be restricted only if this permission is set
    if (!$account->hasPermission('custom_i18n_access_restrict')) {
        return AccessResult::neutral();
    }
    
    $current_language = \Drupal::languageManager()->getCurrentLanguage();
    $lang             = $current_language->getId();

    if ($account->hasPermission("custom_i18n_access_{$lang}_allow")) {
        return AccessResult::neutral();
    }
    return AccessResult::forbidden();
}

custom_i18n_access.permissions.yml文件:

文件permission_callbacks: - Drupal\custom_i18n_access\Permissions::permissions

文件: src/Permissions.php

代码语言:javascript
复制
getLanguages();

        $permissions["custom_i18n_access_restrict"] = [
            'title' => t("Restrict language access"),
            'description' => 'Restrict the edit access of nodes',
        ];

        foreach($languages as $lang) {
            $permissions["custom_i18n_access_{$lang->getId()}_allow"] = [
                'title' => t("Allow to edit @lang content", ['@lang' => $lang->getName()]),
            ];
        }

        return $permissions;
    }
}  

此自定义模块成功地将现有内容的编辑和删除限制为仅限于权限中指定的语言。但是它并不阻止新的将内容翻译成其他语言。

在我看来,并不是在翻译子任务页面上为每种语言调用HOOK_node_access钩子。我如何做到这一点?Is有一个不同的钩子吗?我没有在网上找到任何帮助。

EN

回答 1

Drupal用户

发布于 2020-07-08 20:22:43

我建议在这里检查NodeTranslationHandler类,在entityFormAlter中,您可以找到一种方法来限制用户创建新的翻译。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/295037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档