Я пишу модуль безопасности, чтобы разрешить включение определенных модулей для многосайтовой установки Drupal. Прямо сейчас мы можем легко отключить форму «Модули», используя следующий фрагмент.
Мы бы хотели установить элементы формы только для чтения, а затем включить возможность включать / отключать только подмножество.
function disable_form_fields_form_alter(&$form, $form_state, $form_id) {
//get handle on drupal user var
global $user;
//if we are uid == 1 then we can edit this stuff...
if($user->uid !=1 && variable_get('osu_update_lockdown',1)==1){
if ($form_id == 'system_modules'){
//find all the modules not disabled
$modules_to_disabled = array_diff_key($form['status']['#options'], array_flip($form['status']['#disabled_modules']));
//for each not in our disabled list lets add it in
foreach($modules_to_disabled as $name => $value){
$form['status']['#disabled_modules'][] = $name;
}
//disable non-checked boxes
foreach($form['status']['#options'] as $key=>$val){
$form['status']['#process']['system_modules_disable'][0][]=$key;
}
//disable checked boxes
foreach($form['status']['#default_value'] as $key=>$val){
$form['status']['#process']['system_modules_disable'][0][]=$val;
}
unset($form['buttons']['submit']);
}
}
}