私は、1人の編集者が英語のコンテンツを編集するためのアクセス権しか持たず、もう1人の編集者が別の言語のコンテンツにしかアクセスできない編集者の役割を作成しようとしています。
私はかなり長い間調査を続けており、Content Accessもチェックアウトしましたが、解決策は見つかりませんでした。
どうすればこれを実現できますか?
ありがとうございました!
私は、1人の編集者が英語のコンテンツを編集するためのアクセス権しか持たず、もう1人の編集者が別の言語のコンテンツにしかアクセスできない編集者の役割を作成しようとしています。
私はかなり長い間調査を続けており、Content Accessもチェックアウトしましたが、解決策は見つかりませんでした。
どうすればこれを実現できますか?
ありがとうございました!
回答:
ここで指定された回答は、特定の言語に翻訳を許可するのに役立ちます
翻訳管理モジュールをインストールした後、
翻訳機能を使用してユーザーを作成できます
ユーザーは英語からスペイン語にのみ翻訳でき、別のユーザーは英語からフランス語に翻訳できるように指定できます
ユーザーロールを 持つ新しいユーザーを作成します:Translator(tmgt moduleインストール時に作成されます)
次に、以下に示すように翻訳スキルを選択します。
 
 
おそらく、このhttps://www.drupal.org/project/i18n_accessの 7.x-devバージョンを使用できます 。
hook_menu_alterを使用して、ノード編集フォームのアクセスコールバックを置換または変更できます。
利用可能な言語に基づいてアクセス許可画面に表示されるアクセス許可を作成するには、このフックを含むカスタムモジュールが必要です。
/**
 * 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;
}これにより、サイトの各言語のモジュール名の下にあるアクセス許可ページにチェックボックスが配置されます。言語名は変わらないと仮定しますが、その場合は安全です。
次に、ユーザーが次のように許可されていない場合、それらを使用してアクセスをブロックする必要があります。
/**
 * 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;
}このように行うと、ロールには「ノードの編集」権限と、ノードを編集するための言語ベースの権限が必要になります。