Разрешить редактору редактировать содержимое только на одном языке

15

Я пытаюсь создать роль для редакторов, в которой один редактор имеет доступ только к редактированию английского содержимого, а другой - только к контенту на другом языке.

Я долго изучал, тоже проверял доступ к контенту, но я не нашел никакого решения.

Как я могу это сделать?

Спасибо!

Балинт Деаки
источник
Кажется, дубликат drupal.stackexchange.com/questions/130741/… .
Сумит Мадан
1
Я так не думаю, потому что моя проблема не только в переводе. Это разрешение на создание и редактирование узлов отдельно.
Балинт Деаки
Ох .. Оки. Понял.
Сумит Мадан
1
drupal.org/project/i18n_access вы можете попробовать, аналогично вашему требованию
Бала

Ответы:

2

Ответ, указанный здесь, поможет вам дать разрешение на перевод на конкретный язык

После установки модуля управления перевода ,

Вы можете создавать пользователей с их возможностями перевода

Вы можете указать, что пользователь может переводить только с английского на испанский, а другой пользователь может переводить с английского на французский при создании пользователя.

  • Создайте нового пользователя с ролью пользователя: Переводчик (который создается при tmgt moduleустановке)

  • Затем выберите его / ее навыки перевода, как показано ниже:

введите описание изображения здесь

Правин Аджаз
источник
1
В этом случае мне потребуются разрешения для пользователей на создание / редактирование содержимого определенного языка, как я описал, это не для перевода.
Балинт Деаки
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;
}

Обратите внимание, что для этого роли потребуется разрешение «редактировать узлы» И разрешение на основе языка для редактирования любого узла.

Darvanen
источник
При этом похоже, что модуль i18n_access справится с задачей.
Дарванен