Limitare l'utente dell'editor a modificare i contenuti solo in una lingua specifica


15

Sto cercando di creare un ruolo per i redattori in cui un solo editor ha accesso alla modifica dei contenuti in inglese e l'altro ha accesso solo ai contenuti in un'altra lingua.

Ho fatto ricerche per un po ', ho controllato anche l'accesso ai contenuti, ma non ho trovato alcuna soluzione.

Come posso farlo accadere?

Grazie!



1
Non penso che lo sia, perché il mio problema non riguarda solo la traduzione. È anche il permesso di creare e modificare nodi separatamente.
Bálint Deáki il

Oh .. va bene. Fatto.
Sumit Madan,

1
drupal.org/project/i18n_access puoi provarlo, simile al tuo requisito
Bala

Risposte:


2

La risposta qui specificata ti sarebbe di aiuto dare il permesso di tradurre una lingua specifica

Dopo aver installato Translation Management Module ,

Puoi creare utenti con le loro capacità di traduzione

È possibile specificare che un utente può tradurre solo dall'inglese allo spagnolo e che un altro utente può tradurre dall'inglese al francese durante la creazione dell'utente

  • Crea un nuovo utente con ruolo utente: Traduttore (che viene creato quando tmgt moduleviene installato)

  • Quindi scegli le sue abilità di traduzione come mostrato di seguito:

inserisci qui la descrizione dell'immagine


1
In questo caso, avrei bisogno delle autorizzazioni per gli utenti per creare / modificare i contenuti di una lingua specifica, come ho descritto, non è per la traduzione.
Bálint Deáki il


0

È possibile sostituire o modificare il callback di accesso per i moduli di modifica dei nodi utilizzando hook_menu_alter .

Per effettuare un'autorizzazione che verrà visualizzata nella schermata delle autorizzazioni in base alle lingue disponibili, è necessario un modulo personalizzato con questo hook al suo interno:

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

Questo metterà una casella di spunta nella pagina delle autorizzazioni sotto il nome del tuo modulo per ogni lingua sul sito. Suppongo che i nomi delle lingue non cambino, nel qual caso è sicuro farlo.

Quindi devi solo usarli per bloccare l'accesso se l'utente non è autorizzato in questo modo:

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

In questo modo, il ruolo richiederà l'autorizzazione "modifica nodi" E l'autorizzazione basata sulla lingua per modificare qualsiasi nodo.


Detto questo, sembra che il modulo i18n_access farà il trucco.
Darvanen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.