Batasi pengguna editor untuk hanya mengedit konten dalam satu bahasa tertentu

15

Saya mencoba membuat peran untuk editor di mana satu editor hanya memiliki akses untuk mengedit konten bahasa Inggris dan yang lainnya hanya memiliki akses ke konten dalam bahasa lain.

Saya telah meneliti cukup lama, memeriksa Akses Konten juga, tetapi saya belum menemukan solusi.

Bagaimana saya bisa mewujudkannya?

Terima kasih!

Bálint Deáki
sumber
Tampaknya duplikat drupal.stackexchange.com/questions/130741/… .
Sumit Madan
1
Saya rasa tidak, karena masalah saya bukan hanya pada terjemahan. Ini juga merupakan izin untuk membuat dan mengedit node secara terpisah.
Bálint Deáki
Oh, oke. Mengerti.
Sumit Madan
1
drupal.org/project/i18n_access Anda dapat mencobanya, mirip dengan kebutuhan Anda
Bala

Jawaban:

2

Jawaban yang Ditentukan di sini akan membantu Anda memberikan-izin-untuk-menerjemahkan-bahasa-spesifik

Setelah memasang Modul Manajemen Terjemahan ,

Anda dapat membuat pengguna dengan kemampuan terjemahan mereka

Anda dapat menentukan bahwa pengguna hanya dapat menerjemahkan dari bahasa Inggris ke bahasa Spanyol dan pengguna lain dapat menerjemahkan dari bahasa Inggris ke bahasa Prancis saat membuat pengguna

  • Buat pengguna baru dengan peran pengguna: Penerjemah (yang dibuat saat tmgt modulediinstal)

  • Kemudian Pilih keahlian Penerjemahannya seperti yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

Pravin Ajaaz
sumber
1
Dalam hal ini, saya akan memerlukan izin bagi pengguna untuk membuat / mengedit konten dari bahasa tertentu, seperti yang saya jelaskan, ini bukan untuk terjemahan.
Bálint Deáki
0

Anda dapat mengganti atau mengubah akses panggilan balik untuk bentuk edit simpul menggunakan hook_menu_alter .

Untuk membuat izin yang akan muncul di layar izin berdasarkan bahasa yang tersedia, Anda memerlukan modul khusus dengan kaitan ini:

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

Ini akan menempatkan kotak centang di halaman izin di bawah nama modul Anda untuk setiap bahasa di situs. Saya akan menganggap nama bahasa tidak berubah dalam hal ini aman untuk dilakukan.

Maka Anda hanya perlu menggunakannya untuk memblokir akses jika pengguna tidak diizinkan seperti ini:

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

Catatan, melakukannya dengan cara ini, peran akan memerlukan izin 'edit node' DAN izin berbasis bahasa untuk mengedit simpul apa pun.

Darvanen
sumber
Yang sedang berkata, sepertinya modul i18n_access akan melakukan trik.
Darvanen