限制编辑者用户只能编辑一种特定语言的内容


15

我正在尝试为编辑者创建一个角色,其中一个编辑者只能访问编辑英语内容,而另一个只能访问另一种语言的内容。

我已经研究了很长时间,也检查了Content Access,但是没有找到任何解决方案。

我怎样才能做到这一点?

谢谢!



1
我认为不是,因为我的问题不只是翻译。也可以单独创建和编辑节点。
巴林·德基(BálintDeáki)2014年

哦,好吧 得到它了。
Sumit Madan 2014年

1
drupal.org/project/i18n_access可以尝试,类似于您的要求
Bala 2015年

Answers:


2

此处指定的答案将帮助您提供翻译特定语言的权限

安装翻译管理模块后

您可以创建具有翻译功能的用户

您可以指定在创建用户时,一个用户只能将英语翻译成西班牙语,而另一个用户可以将英语翻译成法语。

  • 创建一个具有用户角色 的新用户转换器tmgt module安装时创建)

  • 然后选择他/她的翻译技能,如下所示:

在此处输入图片说明


1
在这种情况下,我将需要用户权限来创建/编辑特定语言的内容(如我所述),这不是翻译。
巴林·德基(BálintDeáki)2014年


0

您可以使用hook_menu_alter替换或更改节点编辑表单的访问回调。

要使权限根据您的可用语言显示在权限屏幕中,您需要一个带有此挂钩的自定义模块:

/**
 * Implements hook_permission().
 */
function MODULENAME_permission(){

  //do something here to get an array of language names: $languages (I'm not familiar with i18n)

  foreach ($languages as $lang) {
    $permissions[$term->name] = array(
      'title' => t($lang->name), //Or wherever the langauge name is stored
      'description' => t('Edit content in '. $lang->name), //Again, adjust as needed
    );
  }

  return $permissions;
}

这将在网站上每种语言的模块名称下的权限页面中打勾。我将假设语言名称不会更改,在这种情况下可以安全地进行操作。

然后,如果不允许这样的用户,您只需要使用它们来阻止访问:

/**
 * Implements hook_node_access($node, $op, $account).
 */
function MODULENAME_node_access($node, $op, $account){

  //Get the language name for the node and store in variable $lang (again, I don't know how)

  //Then see if the user can do anything except view it
  if ($op != 'view'){
    if (!user_access($lang)){
      return NODE_ACCESS_DENY;
    }
  }

  return NODE_ACCESS_IGNORE;
}

注意,通过这种方式,角色将需要“编辑节点”权限以及基于语言的权限才能编辑任何节点。


话虽如此,看来i18n_access模块​​可以解决问题。
Darvanen 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.