Restrinja o usuário do editor para editar apenas o conteúdo em um idioma específico

15

Estou tentando criar uma função para editores, em que um editor só tem acesso para editar o conteúdo em inglês e o outro apenas tem acesso ao conteúdo em outro idioma.

Estou pesquisando há um bom tempo, verifiquei o Content Access também, mas não encontrei nenhuma solução.

Como posso fazer isso acontecer?

Obrigado!

Bálint Deáki
fonte
Parece duplicado de drupal.stackexchange.com/questions/130741/… .
precisa
11
Acho que não, porque meu problema não é apenas com a tradução. É a permissão de criar e editar nós separadamente também.
Bálint Deáki
Oh .. Okies. Entendi.
precisa
11
drupal.org/project/i18n_access você pode experimentá-lo, semelhante à sua exigência
Bala

Respostas:

2

As respostas especificadas aqui ajudarão você a dar permissão para traduzir um idioma específico

Depois de instalar o Translation Management Module ,

Você pode criar usuários com seus recursos de tradução

Você pode especificar que um usuário possa traduzir apenas do inglês para o espanhol e outro usuário possa traduzir do inglês para o francês enquanto cria o usuário

  • Crie um novo usuário com função de usuário: Tradutor (que é criado quando tmgt moduleé instalado)

  • Em seguida, escolha suas habilidades de tradução, como mostrado abaixo:

insira a descrição da imagem aqui

Pravin Ajaaz
fonte
11
Nesse caso, eu precisaria de permissões para os usuários criarem / editarem conteúdo de um idioma específico, como eu descrevi, não é para tradução.
Bálint Deáki
0

Você pode substituir ou alterar o retorno de chamada de acesso para formulários de edição de nó usando hook_menu_alter .

Para fazer uma permissão que será exibida na tela de permissões com base nos idiomas disponíveis, você precisará de um módulo personalizado com este gancho:

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

Isso colocará uma caixa de seleção na página de permissões sob o nome do módulo para cada idioma no site. Vou assumir que os nomes dos idiomas não mudam, caso em que é seguro fazer isso.

Então você só precisa usá-los para bloquear o acesso, se o usuário não for permitido assim:

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

Observe que, dessa maneira, a função precisará da permissão 'editar nós' E da permissão baseada no idioma para editar qualquer nó.

Darvanen
fonte
Dito isto, parece que o módulo i18n_access fará o truque.
precisa saber é o seguinte