You are here

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');
}