Ogranicz użytkownika edytora do edytowania treści tylko w jednym określonym języku

15

Próbuję utworzyć rolę dla redaktorów, w których jeden redaktor ma dostęp tylko do edycji treści w języku angielskim, a drugi tylko do treści w innym języku.

Od dłuższego czasu badam, sprawdziłem także dostęp do treści, ale nie znalazłem żadnego rozwiązania.

Jak mogę to zrobić?

Dziękuję Ci!

Bálint Deáki
źródło
Wydaje się duplikatem drupal.stackexchange.com/questions/130741/… .
Sumit Madan,
1
Nie sądzę, żeby tak było, ponieważ mój problem nie dotyczy wyłącznie tłumaczenia. To uprawnienie do oddzielnego tworzenia i edytowania węzłów.
Bálint Deáki,
Och .. Okies. Rozumiem.
Sumit Madan,
1
drupal.org/project/i18n_access możesz spróbować, podobnie jak chcesz
Bala

Odpowiedzi:

2

Odpowiedzi Określone tutaj pomogą ci dać pozwolenie na przetłumaczenie określonego języka

Po zainstalowaniu modułu zarządzania tłumaczeniami ,

Możesz tworzyć użytkowników z ich możliwościami tłumaczenia

Możesz określić, że użytkownik może tłumaczyć tylko z angielskiego na hiszpański, a inny użytkownik może tłumaczyć z angielskiego na francuski podczas tworzenia użytkownika

  • Utwórz nowego użytkownika z rolą użytkownika: Tłumacz (który jest tworzony po tmgt modulezainstalowaniu)

  • Następnie wybierz jego / jej umiejętności tłumaczenia, jak pokazano poniżej:

wprowadź opis zdjęcia tutaj

Pravin Ajaaz
źródło
1
W takim przypadku potrzebowałbym uprawnień użytkowników do tworzenia / edytowania treści określonego języka, tak jak to opisałem, nie jest to tłumaczenie.
Bálint Deáki,
0

Możesz zastąpić lub zmienić wywołanie zwrotne dostępu dla formularzy edycji węzłów za pomocą hook_menu_alter .

Aby uzyskać pozwolenie, które pojawi się na ekranie uprawnień w oparciu o dostępne języki, potrzebujesz niestandardowego modułu z tym zaczepem:

/**
 * 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;
}

Spowoduje to umieszczenie pola wyboru na stronie uprawnień pod nazwą modułu dla każdego języka w witrynie. Zakładam, że nazwy języków nie zmieniają się, w takim przypadku jest to bezpieczne.

Następnie wystarczy użyć ich, aby zablokować dostęp, jeśli użytkownik nie ma takich uprawnień:

/**
 * 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;
}

Uwaga: w ten sposób rola będzie wymagać uprawnienia do edycji węzłów ORAZ uprawnienia do edycji dowolnego węzła na podstawie języka.

Darvanen
źródło
To powiedziawszy, wygląda na to, że moduł i18n_access załatwi sprawę.
Darvanen,