Index: administration.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/administration/administration.module,v retrieving revision 1.24 diff -u -r1.24 administration.module --- administration.module 24 Feb 2006 19:01:10 -0000 1.24 +++ administration.module 22 Jun 2006 22:44:17 -0000 @@ -15,7 +15,7 @@ function administration_help($section) { switch ($section) { case 'admin/modules#description': - return t('Site administration dashboard.'); + return t('Site administration dashboard. Do not disable this module without first going to administration settings and clicking "deactivate menus."', array('%settings' => url('admin/settings/administration'))); case 'admin/settings/administration': return t('IMPORTANT! Before deactivating this module click the "Deactivate" button on this page. If you deactivate this module BEFORE clicking the "Deactivate" button on this page you will need to reactivate the administration module by going to url "admin/modules" and then return here and click "Deactivate".'); } @@ -24,14 +24,11 @@ * Implementation of hook_menu(). */ function administration_menu($may_cache) { - global $user; - - $items = array(); if ($may_cache) { $access = user_access('administer site configuration'); $top_path = 'sadmin'; - if (variable_get('administration_module_active', 'false') == 'true') { + if (variable_get('administration_module_active', FALSE)) { $config = administration_menu_config(); if ($config['top_path']) { $top_path = $config['top_path']; @@ -78,8 +75,15 @@ 'type' => MENU_CALLBACK ); - if (variable_get('administration_module_active', 'false') == 'true') { + if (variable_get('administration_module_active', FALSE)) { $menu_weight = -10; + // Redefine the 'admin' menu here as a callback to get rid of it in the menu + // we need to do this so 'logs' doesn't show up twice + $items[] = array( + 'path' => 'admin', + 'type' => MENU_CALLBACK + ); + foreach ($config['section'] as $section_path => $section) { if ($section['callback']) { $items[] = array( @@ -89,11 +93,11 @@ 'access' => $access, 'callback' => $section['callback'], 'callback arguments' => $section['callback arguments'], - 'type' => MENU_NORMAL_ITEM, + 'type' => ($section['callback'] == '_administration_sub_dashboard_page' ? MENU_ITEM_GROUPING : MENU_NORMAL_ITEM), 'weight' => isset($section['weight']) ? $section['weight'] : $menu_weight++, ); + $item_weight = 0; foreach ((array) $section['items'] as $item_path => $item_info) { - $item_weight = 0; if ($item_info['callback']) { $items[] = array( 'path' => $item_path, @@ -111,7 +115,6 @@ } } } - theme_add_style(drupal_get_path('module','administration') .'/administration.css'); return $items; } @@ -166,29 +169,37 @@ /** * Display the form that turns on and off the menu configuration. */ -function administration_form($edit = '') { +function administration_form() { if (!module_exist('menu')) { drupal_set_message(t('IMPORTANT! The "Menu" must be enabled BEFORE you activate this module!'), 'error'); } - if (variable_get('administration_module_active', 'false') == 'true') { + if (variable_get('administration_module_active', FALSE)) { $config = administration_menu_config(); if (function_exists('administration_form_' . variable_get('administration_config', 'default'))) { - $form = call_user_func('administration_form_' . variable_get('administration_config', 'default'), $form, $edit); + $form[variable_get('administration_config', 'default')] = call_user_func('administration_form_' . variable_get('administration_config', 'default'), $form); } - $form['buttons']['activate'] = array('#type' => 'submit', '#value' => t('Deactivate menus')); } else { $files = system_listing('\.inc$', drupal_get_path('module', 'administration'), 'name', 0); foreach ($files as $file => $info) { $options[$file] = $file; } - $form['config'] = array( + $form['administration_config'] = array( '#type' => 'radios', + '#title' => t('Configuration profile'), '#default_value' => variable_get('administration_config', 'default'), '#options' => $options, ); - $form['activate'] = array('#type' => 'submit', '#value' => t('Activate menus')); } + $form['administration_module_active'] = array( + '#type' => 'radios', + '#title' => t('Administration menus'), + '#default_value' => variable_get('administration_module_active', FALSE), + '#options' => array(t('Disabled'), t('Enabled')), + '#description' => t('Activate administration menus and dashboard.') + ); + + $form['submit'] = array('#type' => 'submit', '#value' => t('Save configuration')); return drupal_get_form('administration_form', $form); } @@ -197,36 +208,47 @@ * Submit function for the administration form. */ function administration_form_submit($formid, $form_values) { + // Retrieve module state before saving changes + $already_active = variable_get('administration_module_active', FALSE); - $op = isset($_POST['op']) ? $_POST['op'] : ''; - - if ($op == 'Deactivate menus') { - _administration_unset_menus(); - variable_del('administration_panels'); + if ($form_values['administration_config']) { + variable_set('administration_config', $form_values['administration_config']); } - else { - if ($op == 'Activate menus') { - variable_set('administration_config', $form_values['config']); - variable_set('administration_module_active', 'true'); - variable_set('administration_show_menu_icons', $form_values['menu_icons']); + + if ($form_values['administration_module_active']) { + if (!$already_active) { + variable_set('administration_module_active', TRUE); // force a menu_rebuild to get the right menu sections. // Yes, this means menu_rebuild is performed twice. menu_rebuild(); - _administration_set_menus(); - } - else { - if (function_exists('administration_form_submit_' . variable_get('administration_config', 'default') . '')) { - call_user_func('administration_form_submit_' . variable_get('administration_config', 'default'), $formid, $form_values); - } + _administration_activate_menus(); } } - if (form_get_errors()) { - return administration_form($edit); - } else { - //drupal_set_message(t('Changes made.')); - drupal_goto('admin/settings/administration'); + if ($already_active){ + variable_set('administration_module_active', FALSE); + _administration_deactivate_menus(); + } } + + if (function_exists('administration_form_submit_' . variable_get('administration_config', 'default'))) { + call_user_func('administration_form_submit_' . variable_get('administration_config', 'default'), $formid, $form_values); + } +} + +/** + * De-activates custom menus + */ +function _administration_deactivate_menus() { + _administration_unset_menus(); + variable_del('administration_panels'); +} + +/** + * Activates custom menus + */ +function _administration_activate_menus() { + _administration_set_menus(); } /** @@ -291,12 +313,8 @@ function _administration_set_head() { $config = administration_menu_config(); $cssfile = $config['cssfile'] ? $config['cssfile'] : 'default.css'; - static $sent = array(); - if (!isset($sent[drupal_get_path('module','administration') . "/$cssfile"])) { - theme_add_style(drupal_get_path('module','administration') .'/' . $cssfile); - $sent[drupal_get_path('module','administration') . "/' . $cssfile . ;"] = TRUE; - } - return; + $path = drupal_get_path('module','administration') . '/'; + theme_add_style($path . $cssfile); } /** @@ -325,6 +343,9 @@ } } menu_rebuild(); + if ($config['after_build']) { + call_user_func($config['after_build'], $config); + } } /** @@ -335,9 +356,6 @@ $config = administration_menu_config(); $top_path = $config['top_path'] ? $config['top_path'] : 'sadmin'; _administration_unset_menu_item($menu['path index'][$top_path]); - db_query('DELETE FROM {menu} WHERE mid = %d', $menu['path index']['admin']); - - drupal_clear_path_cache(); menu_rebuild(); } @@ -363,7 +381,7 @@ } else { $mid = db_next_id('{menu}_mid'); - $type = MENU_CUSTOM_ITEM | MENU_MODIFIED_BY_ADMIN; + $type = MENU_NORMAL_ITEM | MENU_MODIFIED_BY_ADMIN; db_query("INSERT INTO {menu} (mid, pid, path, title, description, weight, type) VALUES (%d, %d, '%s', '%s', '%s', %d, %d)", $mid, $pid, $path, $title, $desc, $weight, $type); } return; @@ -376,12 +394,12 @@ db_query('DELETE FROM {menu} WHERE pid = %d', $pid); $menu = menu_get_menu(); - foreach ($menu['items'][$pid]['children'] as $cid) { + foreach ((array) $menu['items'][$pid]['children'] as $cid) { if (!empty($menu['items'][$cid]) && $menu['items'][$cid]['children']) { _administration_unset_menu_item($cid); } } - variable_set('administration_module_active', 'false'); + variable_set('administration_module_active', FALSE); } Index: default.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/administration/default.inc,v retrieving revision 1.23 diff -u -r1.23 default.inc --- default.inc 21 Feb 2006 01:42:12 -0000 1.23 +++ default.inc 22 Jun 2006 22:44:17 -0000 @@ -77,7 +77,7 @@ 'description' => "Configure my site's module settings", ), // NOTE: We need to give THIS menu item a different callback TOO - 'admin' => array( + 'admin/uncategorized' => array( 'title' => 'other', 'description' => "Configure uncategorized items for modules", ), @@ -251,7 +251,7 @@ ); // overrides to repoint a couple of settings. - $config['section']['admin'] = array( + $config['section']['admin/uncategorized'] = array( 'title' => t('configure modules'), 'description' => t("Configure uncategorized module settings"), 'callback' => '_administration_sub_dashboard_page', @@ -544,7 +544,7 @@ return $output; } -function administration_form_default($form, $edit = ''){ +function administration_form_default($form){ $form['default'] = array( '#type' => 'fieldset', '#title' => t('Settings for default dashboard theme'), '#collapsible' => FALSE, '#collapsed' => FALSE @@ -555,22 +555,11 @@ '#default_value' => variable_get('administration_show_menu_icons', FALSE), '#tree' => FALSE ); - $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') ); - $form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults') ); return $form; } function administration_form_submit_default($formid, $form_values) { - $op = isset($_POST['op']) ? $_POST['op'] : ''; - - if ($op == 'Save configuration') { - variable_set('administration_show_menu_icons', $form_values['menu_icons']); - } - else { - if ($op == 'Reset to defaults') { - variable_set('administration_show_menu_icons', FALSE); - } - } + variable_set('administration_show_menu_icons', $form_values['menu_icons']); } function _administration_get_icon_file_name($path) { @@ -697,7 +686,7 @@ $output .= '
'; $output .= theme('table', $header, $rows); $output .= '
'; - $output .= theme('pager', NULL, $page_size, 0, tablesort_pager()); + $output .= theme('pager', NULL, $page_size, 0); return $output; } Index: merged.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/administration/merged.inc,v retrieving revision 1.2 diff -u -r1.2 merged.inc --- merged.inc 13 Apr 2006 15:49:30 -0000 1.2 +++ merged.inc 22 Jun 2006 22:44:18 -0000 @@ -322,7 +322,7 @@ ); // overrides to repoint a couple of settings. - $config['section']['admin'] = array( + $config['section']['admin/uncategorized'] = array( 'title' => t('configure modules'), 'description' => t("Configure uncategorized module settings"), 'callback' => '_administration_sub_dashboard_page', @@ -384,7 +384,7 @@ else { if ($config['section'][$path]['menu_expandable']) $collapsible = 'collapsible'; $output .= '