特定の言語のコンテンツのみを編集するようにエディターユーザーを制限する


15

私は、1人の編集者が英語のコンテンツを編集するためのアクセス権しか持たず、もう1人の編集者が別の言語のコンテンツにしかアクセスできない編集者の役割を作成しようとしています。

私はかなり長い間調査を続けており、Content Accessもチェックアウトしましたが、解決策は見つかりませんでした。

どうすればこれを実現できますか?

ありがとうございました!



1
私の問題は翻訳だけではないからです。ノードを個別に作成および編集する権限もあります。
バリントデアキ14

ああ。とった。
スミットマダン14

1
drupal.org/project/i18n_accessあなたはそれを試すことができます、あなたの要件に似ています
バラ

回答:


2

ここで指定された回答は、特定の言語に翻訳を許可するのに役立ちます

翻訳管理モジュールをインストールした後、

翻訳機能を使用してユーザーを作成できます

ユーザーは英語からスペイン語にのみ翻訳でき、別のユーザーは英語からフランス語に翻訳できるように指定できます

  • ユーザーロールを 持つ新しいユーザーを作成しますTranslatortmgt moduleインストール時に作成されます)

  • 次に、以下に示すように翻訳スキルを選択します。

ここに画像の説明を入力してください


1
この場合、ユーザーが特定の言語のコンテンツを作成/編集するためのアクセス許可が必要になります。説明したように、翻訳用ではありません。
バリントデアキ14


0

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

このように行うと、ロールには「ノードの編集」権限と、ノードを編集するための言語ベースの権限が必要になります。


そうは言っても、i18n_accessモジュールがうまくいくようです。
ダルヴァネン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.