Eu escrevi uma solução simples e possível no segmento já mencionado: https://drupal.org/node/1048644#comment-7822687 . Por conveniência, colarei aqui.
Existe uma maneira simples de desativar as guias verticais em um formulário, simplesmente alterando o $form['additional_settings']['#type']
valor da variável para 'fieldset'
uma implementação de hook_form_alter () ou hook_form_FORM_ID_alter () , se for igual a 'vertical_tabs'
.
Você não precisa alterar as configurações de acesso ou percorrer toda a $form
matriz recursivamente, a última consome recursos demais desnecessariamente.
(Testado no Drupal 7.23 .)
/**
* Disable Vertical tabs on a form with simply changing the value of $form['additional_settings']['#type']
* @see https://drupal.org/node/1048644
*/
function form_disable_vertical_tabs(&$form){
// originally $form['additional_settings']['#type'] equals to 'vertical_tabs'
if(isset($form['additional_settings']['#type']) && ($form['additional_settings']['#type'] === 'vertical_tabs')){
$form['additional_settings']['#type'] = 'fieldset';
}
}
/**
* Implements hook_form_alter().
*/
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'my_form_id'){
// disable vertical tabs for this form
form_disable_vertical_tabs($form);
}
}
Isso é tudo, é claro, substituiMYMODULEORTHEMENAME
o nome do seu módulo ou tema (o último em um template.php
arquivo) emy_form_id
a identificação do seu formulário.
Você também pode desativar os campos verticais apenas para usuários que NÃO possuem a função de administrador :
/**
* Implements hook_form_alter().
*/
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {
global $user;
$is_administrator = in_array('administrator', array_values($user->roles));
if($form_id == 'my_form_id'){
// if $user does NOT have the administrator role.
if (!$is_administrator) {
// disable vertical tabs for this form
form_disable_vertical_tabs($form);
}
}
}
No caso de alguém está interessado, I anexa um remendo (que faz o mesmo que acima) para Dripman módulo de caixa de areia 's: # 2080739: simplificar o método de desativação guias verticais com apenas mudando a $form['additional_settings']['#type']
a'fieldset'
.