function admin_page_fieldsets_form_system_modules_alter in Util 7
Implements hook_form_FORM_ID_alter() for system_modules().
File
- contribs/
admin_page_fieldsets/ admin_page_fieldsets.module, line 30 - Util contrib to collapse admin field sets.
Code
function admin_page_fieldsets_form_system_modules_alter(&$form, $form_state) {
drupal_add_css(drupal_get_path('module', 'admin_page_fieldsets') . '/admin_page_fieldsets.css');
$packages = array();
$weights = array();
$result = db_select('system', 's')
->condition('type', 'module')
->fields('s', array(
'filename',
'name',
'weight',
'info',
))
->execute();
foreach ($result as $module) {
$info = unserialize($module->info);
$package_name = isset($info['package']) && $info['package'] ? $info['package'] : t('Other');
$packages[$package_name] = $package_name;
$weights[$module->name] = $module->weight;
}
ksort($packages);
$form['admin_page_fieldsets_module_weights'] = array(
'#type' => 'hidden',
// pass to submit()
'#value' => $weights,
);
$form['admin_page_fieldsets_list'] = array(
'#type' => 'fieldset',
'#title' => t('Package display'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#weight' => -9999,
);
$defaults = variable_get('admin_page_fieldsets_packages', array());
$form['admin_page_fieldsets_list']['admin_page_fieldsets_packages'] = array(
'#type' => 'checkboxes',
'#description' => t('Checked module packages will be displayed in an open (non-collapsed) fieldset.'),
'#default_value' => $defaults,
'#options' => $packages,
);
$display_weights = variable_get('admin_page_fieldsets_module_weight');
$form['admin_page_fieldsets_list']['admin_page_fieldsets_module_weight'] = array(
'#type' => 'checkbox',
'#title' => t('Display and edit module weight in tables'),
'#default_value' => $display_weights,
);
foreach ($packages as $package) {
// set collapsed state
$form['modules'][$package]['#collapsed'] = isset($defaults[$package]) ? $defaults[$package] === 0 : FALSE;
if ($display_weights) {
$header_array =& $form['modules'][$package]['#header'];
if (is_array($header_array)) {
// add weight column to table header
array_splice($header_array, 3, 0, t('Weight'));
foreach ($form['modules'][$package] as $module => $row_array) {
if ($module[0] != '#') {
// add weight column to table row
$form['modules'][$package][$module]['weight'] = array(
'#type' => 'textfield',
'#size' => 4,
'#default_value' => $weights[$module],
);
}
}
}
}
}
$form['#validate'][] = 'admin_page_fieldsets_system_modules_validate';
array_unshift($form['#submit'], 'admin_page_fieldsets_system_modules_submit');
}