Index: system_module.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/util/system_module.module,v retrieving revision 1.4.2.2 diff -u -r1.4.2.2 system_module.module --- system_module.module 18 Sep 2009 15:56:16 -0000 1.4.2.2 +++ system_module.module 18 Sep 2009 19:30:37 -0000 @@ -9,7 +9,7 @@ function system_module_help($path, $args) { switch ($path) { case 'admin/build/modules': - return l(t('Set collapsed state'), 'admin/settings/util/sysmods'); + return '
'. l(t('Set collapsed state'), 'admin/settings/util/sysmods') .'
'; case 'admin/settings/util/sysmods': return l(t('Go to modules admin page'), 'admin/build/modules'); @@ -34,13 +34,17 @@ // Get all available packages. $modules = module_rebuild_cache(); + $packages = $includes = array(); foreach ($modules as $module) { if (!isset($module->info['package']) || !$module->info['package']) { $module->info['package'] = t('Other'); } - $packages[$module->info['package']] = $module->info['package']; + $pkg = $module->info['package']; + $packages[$pkg] = $pkg; + $includes[$pkg][] = $module->info['name']; } ksort($packages); + ksort($includes); // Build settings form $result = db_fetch_array(db_query("SELECT data FROM {system_module_users} WHERE uid = %d}", $user->uid)); @@ -68,6 +72,27 @@ '#options' => $packages, ); + $form['dir'] = array( + '#type' => 'fieldset', + '#title' => t('Directory of package contents'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + + $rows = array(); + $header = array(t('Package'), t('Includes')); + foreach ($includes as $pkg => $modules) { + $pkg_id = _system_modules_make_pkgid($pkg); + $rows[] = array( + l($pkg, 'admin/build/modules', array('fragment' => "package_$pkg_id", 'query' => 'expand="'. $pkg .'"')), + implode(', ', $modules), + ); + } + $form['dir']['list'] = array( + '#type' => 'markup', + '#value' => theme('table', $header, $rows), + ); + $form['submit'] = array( '#type' => 'submit', '#value' => 'Save configuration', @@ -113,6 +138,7 @@ } } +// @TODO: Doesn't the system already do this? function system_module_disable() { drupal_rebuild_theme_registry(); } @@ -198,11 +224,20 @@ else { $collapsed = (isset($user->system_module_cfg[$package]) ? TRUE : FALSE); } + // Is there an 'expand' request? + if (isset($_GET['expand'])) { + // Strip the quotes from the name. + $expand = drupal_substr($_GET['expand'], 1, -1); + if ($expand == $package) { + $collapsed = FALSE; + } + } $fieldset = array( '#title' => $package .' ['. $enabled_count .'] of ['. sizeof($modules) .']', '#collapsible' => TRUE, '#collapsed' => $collapsed, + '#attributes' => array('id' => 'package_'. _system_modules_make_pkgid($package)), '#value' => theme('table', $header, $rows, array('class' => 'package')), ); $output .= theme('fieldset', $fieldset); @@ -210,4 +245,19 @@ $output .= drupal_render($form); return $output; -} \ No newline at end of file +} + +/** + * Build a package id for the fieldset. + */ +function _system_modules_make_pkgid($package) { + switch ($package) { + case 'Core - required': + case 'Core - optional': + $pkg_id = drupal_strtolower(str_replace(' ', '', $package)); + break; + default: + $pkg_id = drupal_strtolower(str_replace(array(' ', '/', '"', "'"), array('_', '_', '', ''), $package)); + } + return $pkg_id; +}