Ви можете замінити або змінити зворотний виклик доступу для форм редагування вузлів, використовуючи гачку_меню_алтер .
Щоб зробити дозвіл, який відображатиметься на екрані дозволів на основі доступних мов, вам знадобиться спеціальний модуль із цим гаком у ньому:
/**
* 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;
}
Зауважте, що роблячи це таким чином, для редагування будь-якого вузла для ролі знадобиться дозвіл "редагувати вузли" І мовний дозвіл.