Beschränken Sie den Benutzer des Editors darauf, nur Inhalte in einer bestimmten Sprache zu bearbeiten

15

Ich versuche, eine Rolle für Redakteure zu erstellen, bei der ein Redakteur nur auf englische Inhalte und der andere nur auf Inhalte in einer anderen Sprache zugreifen kann.

Ich habe eine Weile recherchiert und auch Content Access überprüft, aber ich habe keine Lösung gefunden.

Wie kann ich das erreichen?

Vielen Dank!

Bálint Deáki
quelle
Scheint ein Duplikat von drupal.stackexchange.com/questions/130741/… zu sein .
Sumit Madan
1
Das glaube ich nicht, denn mein Problem ist nicht nur die Übersetzung. Es ist die Erlaubnis, Knoten auch separat zu erstellen und zu bearbeiten.
Bálint Deáki
Oh .. Okies. Ich habs.
Sumit Madan
1
drupal.org/project/i18n_access Sie können es versuchen, ähnlich Ihrer Anforderung
Bala

Antworten:

2

Die hier angegebene Antwort würde Ihnen helfen, die Erlaubnis zum Übersetzen einer bestimmten Sprache zu erteilen

Nach der Installation von Translation - Management - Modul ,

Sie können Benutzer mit ihren Übersetzungsfunktionen erstellen

Sie können festlegen, dass ein Benutzer nur vom Englischen ins Spanische und ein anderer Benutzer beim Erstellen des Benutzers vom Englischen ins Französische übersetzen kann

  • Erstellen Sie einen neuen Benutzer mit Benutzerrolle: Übersetzer (der bei der tmgt moduleInstallation erstellt wird)

  • Wählen Sie dann seine / ihre Übersetzungsfähigkeiten wie unten gezeigt:

Bildbeschreibung hier eingeben

Pravin Ajaaz
quelle
1
In diesem Fall benötige ich Berechtigungen, damit Benutzer Inhalte einer bestimmten Sprache erstellen / bearbeiten können.
Bálint Deáki
0

Sie können den Zugriffsrückruf für Knotenbearbeitungsformulare mit hook_menu_alter ersetzen oder ändern .

Um eine Berechtigung zu erstellen, die auf der Grundlage Ihrer verfügbaren Sprachen im Berechtigungsbildschirm angezeigt wird, benötigen Sie ein benutzerdefiniertes Modul mit diesem Haken:

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

Dies setzt ein Häkchen auf der Berechtigungsseite unter Ihrem Modulnamen für jede Sprache auf der Site. Ich gehe davon aus, dass sich die Namen der Sprachen nicht ändern. In diesem Fall ist dies sicher.

Dann müssen Sie sie nur verwenden, um den Zugriff zu blockieren, wenn der Benutzer nicht wie folgt berechtigt ist:

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

Beachten Sie, dass die Rolle auf diese Weise die Berechtigung "Knoten bearbeiten" UND die sprachbasierte Berechtigung zum Bearbeiten eines Knotens benötigt.

Darvanen
quelle
Abgesehen davon sieht es so aus, als würde das i18n_access-Modul den Trick machen.
Darvanen