Restreindre l'utilisateur de l'éditeur à modifier uniquement le contenu dans une langue spécifique


15

J'essaie de créer un rôle pour les éditeurs où un éditeur n'a accès qu'à l'édition de contenu anglais et l'autre n'a accès qu'à des contenus dans une autre langue.

Je fais des recherches depuis un certain temps, j'ai également consulté Content Access, mais je n'ai trouvé aucune solution.

Comment puis-je y arriver?

Je vous remercie!



1
Je ne pense pas que ce soit le cas, car mon problème ne concerne pas seulement la traduction. C'est également la permission de créer et de modifier des nœuds séparément.
Bálint Deáki

Oh .. Okies. Je l'ai.
Sumit Madan

1
drupal.org/project/i18n_access vous pouvez l'essayer, similaire à vos besoins
Bala

Réponses:


2

La réponse spécifiée ici vous aiderait à donner la permission de traduire une langue spécifique

Après avoir installé le module de gestion de la traduction ,

Vous pouvez créer des utilisateurs avec leurs capacités de traduction

Vous pouvez spécifier qu'un utilisateur ne peut traduire que de l'anglais vers l'espagnol et qu'un autre utilisateur peut traduire de l'anglais vers le français lors de la création de l'utilisateur

  • Créer un nouvel utilisateur avec un rôle d'utilisateur: Traducteur (qui est créé lors de l' tmgt moduleinstallation)

  • Choisissez ensuite ses compétences en traduction comme indiqué ci-dessous:

entrez la description de l'image ici


1
Dans ce cas, j'aurais besoin d'autorisations pour que les utilisateurs créent / modifient le contenu d'une langue spécifique, comme je l'ai décrit, ce n'est pas pour la traduction.
Bálint Deáki


0

Vous pouvez remplacer ou modifier le rappel d'accès pour les formulaires de modification de noeud à l'aide de hook_menu_alter .

Pour créer une autorisation qui apparaîtra dans l'écran des autorisations en fonction de vos langues disponibles, vous aurez besoin d'un module personnalisé avec ce crochet:

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

Cela mettra une case à cocher dans la page des autorisations sous le nom de votre module pour chaque langue sur le site. Je vais supposer que les noms de langue ne changent pas, auquel cas c'est sûr à faire.

Ensuite, il vous suffit de les utiliser pour bloquer l'accès si l'utilisateur n'est pas autorisé comme ceci:

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

Notez que, en procédant de cette façon, le rôle aura besoin de l'autorisation «modifier les nœuds» ET de l'autorisation basée sur la langue pour modifier n'importe quel nœud.


Cela étant dit, il semble que le module i18n_access fera l'affaire.
Darvanen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.