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.