Обмежити користувача редактора редагувати вміст лише однією конкретною мовою


15

Я намагаюся створити роль для редакторів, де один редактор має доступ лише до редагування англійського вмісту, а інший має лише доступ до вмісту іншою мовою.

Я досить довго займався дослідженнями, перевіряв доступ до вмісту, але не знайшов жодного рішення.

Як я можу це зробити?

Дякую!



1
Я не думаю, що це так, тому що моя проблема не лише в перекладі. Це також дозвіл на створення та редагування вузлів окремо.
Bálint Deáki

Ох. Зрозумів.
Суміт Мадан

1
drupal.org/project/i18n_access ви можете спробувати, подібно до вашої вимоги
Бала

Відповіді:


2

Відповіді, вказані тут, допоможуть вам дати дозвіл на переклад-конкретний-мову

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

Ви можете створювати користувачів з їх можливостями перекладу

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

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

  • Потім виберіть його / її навички перекладу, як показано нижче:

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


1
У цьому випадку мені потрібні дозволи для користувачів створювати / редагувати вміст певної мови, як я описав, це не для перекладу.
Bálint Deáki


0

Ви можете замінити або змінити зворотний виклик доступу для форм редагування вузлів, використовуючи гачку_меню_алтер .

Щоб зробити дозвіл, який відображатиметься на екрані дозволів на основі доступних мов, вам знадобиться спеціальний модуль із цим гаком у ньому:

/**
 * 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 зробить свою справу.
Дарванен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.