From 2a1e980cdd92e327c0b72a59608138ff51e76bb4 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 26 Dec 2007 19:02:24 +0000 Subject: - Patch #203509 by pwolanin, chx, cwgordon7 et al: fixed menu inheritenace. --- COPYRIGHT.txt | 8 ++++---- INSTALL.txt | 6 +++--- includes/menu.inc | 8 ++++---- modules/profile/profile.module | 1 + modules/system/system.admin.inc | 9 ++++++--- modules/system/system.module | 18 ++++++++++++++---- modules/user/user.module | 3 ++- 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index 9b8f93241..1df084d9f 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -1,20 +1,20 @@ // $Id$ All Drupal code is Copyright 2001 - 2008 by the original authors. - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program as the file LICENSE.txt; if not, please see http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. - + Drupal is a registered trademark of Dries Buytaert. Drupal includes works under other copyright notices and distributed diff --git a/INSTALL.txt b/INSTALL.txt index 59bc86054..d914a6ea5 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -190,12 +190,12 @@ INSTALLATION 8. CRON MAINTENANCE TASKS - Many Drupal modules have periodic tasks that must be triggered by a cron - maintenance task, including search module (to build and update the index + Many Drupal modules have periodic tasks that must be triggered by a cron + maintenance task, including search module (to build and update the index used for keyword searching), aggregator module (to retrieve feeds from other sites), ping module (to notify other sites about new or updated content), and system module (to perform routine maintenance and pruning on system tables). - To activate these tasks, call the cron page by visiting + To activate these tasks, call the cron page by visiting http://www.example.com/cron.php, which, in turn, executes tasks on behalf of installed modules. diff --git a/includes/menu.inc b/includes/menu.inc index 8020cf0f1..b94d1ee4e 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -2119,10 +2119,6 @@ function _menu_router_build($callbacks) { // Apply inheritance rules. foreach ($menu as $path => $v) { $item = &$menu[$path]; - if (!isset($item['access callback']) && isset($item['access arguments'])) { - // Default callback. - $item['access callback'] = 'user_access'; - } if (!$item['_tab']) { // Non-tab items. $item['tab_parent'] = ''; @@ -2164,6 +2160,10 @@ function _menu_router_build($callbacks) { } } } + if (!isset($item['access callback']) && isset($item['access arguments'])) { + // Default callback. + $item['access callback'] = 'user_access'; + } if (!isset($item['access callback']) || empty($item['page callback'])) { $item['access callback'] = 0; } diff --git a/modules/profile/profile.module b/modules/profile/profile.module index 229dc91b5..c5aed1680 100644 --- a/modules/profile/profile.module +++ b/modules/profile/profile.module @@ -88,6 +88,7 @@ function profile_menu() { 'description' => 'Create customizable fields for your users.', 'page callback' => 'drupal_get_form', 'page arguments' => array('profile_admin_overview'), + 'access arguments' => array('administer users'), 'file' => 'profile.admin.inc', ); $items['admin/user/profile/add'] = array( diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc index cd73adac6..52d5c85cc 100644 --- a/modules/system/system.admin.inc +++ b/modules/system/system.admin.inc @@ -72,9 +72,12 @@ function system_main_admin_page($arg = NULL) { */ function system_admin_menu_block_page() { $item = menu_get_item(); - $content = system_admin_menu_block($item); - - $output = theme('admin_block_content', $content); + if ($content = system_admin_menu_block($item)) { + $output = theme('admin_block_content', $content); + } + else { + $output = t('You do not have any administrative items.'); + } return $output; } diff --git a/modules/system/system.module b/modules/system/system.module index 07ec28c20..edf3a3bff 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -155,7 +155,7 @@ function system_theme() { * Implementation of hook_perm(). */ function system_perm() { - return array('administer site configuration', 'access administration pages', 'administer actions', 'select different theme', 'administer files'); + return array('administer site configuration', 'access administration pages', 'administer actions', 'access site reports', 'select different theme', 'administer files'); } /** @@ -234,7 +234,6 @@ function system_menu() { 'position' => 'left', 'weight' => -10, 'page callback' => 'system_admin_menu_block_page', - 'access arguments' => array('access administration pages'), 'file' => 'system.admin.inc', ); @@ -245,7 +244,6 @@ function system_menu() { 'position' => 'right', 'weight' => -5, 'page callback' => 'system_settings_overview', - 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/build'] = array( @@ -254,7 +252,6 @@ function system_menu() { 'position' => 'right', 'weight' => -10, 'page callback' => 'system_admin_menu_block_page', - 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/admin'] = array( @@ -263,6 +260,7 @@ function system_menu() { 'position' => 'left', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_admin_theme_settings'), + 'access arguments' => array('administer site configuration'), 'block callback' => 'system_admin_theme_settings', 'file' => 'system.admin.inc', ); @@ -272,6 +270,7 @@ function system_menu() { 'description' => 'Change which theme your site uses or allows users to set.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_themes_form', NULL), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/build/themes/select'] = array( @@ -308,6 +307,7 @@ function system_menu() { 'description' => 'Enable or disable add-on modules for your site.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_modules'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/build/modules/list'] = array( @@ -367,6 +367,7 @@ function system_menu() { 'description' => 'Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_site_information_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/error-reporting'] = array( @@ -374,12 +375,14 @@ function system_menu() { 'description' => 'Control how Drupal deals with errors including 403/404 errors as well as PHP error reporting.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_error_reporting_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/logging'] = array( 'title' => 'Logging and alerts', 'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destination, such as syslog, database, email, ...etc.", 'page callback' => 'system_logging_overview', + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/performance'] = array( @@ -387,6 +390,7 @@ function system_menu() { 'description' => 'Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_performance_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/file-system'] = array( @@ -394,6 +398,7 @@ function system_menu() { 'description' => 'Tell Drupal where to store uploaded files and how they are accessed.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_file_system_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/image-toolkit'] = array( @@ -401,6 +406,7 @@ function system_menu() { 'description' => 'Choose which image toolkit to use if you have installed optional toolkits.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_image_toolkit_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/content/rss-publishing'] = array( @@ -416,6 +422,7 @@ function system_menu() { 'description' => "Settings for how Drupal displays date and time, as well as the system's default timezone.", 'page callback' => 'drupal_get_form', 'page arguments' => array('system_date_time_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/date-time/lookup'] = array( @@ -429,6 +436,7 @@ function system_menu() { 'description' => 'Take the site off-line for maintenance or bring it back online.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_site_maintenance_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/clean-urls'] = array( @@ -436,6 +444,7 @@ function system_menu() { 'description' => 'Enable or disable clean URLs for your site.', 'page callback' => 'drupal_get_form', 'page arguments' => array('system_clean_url_settings'), + 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', ); $items['admin/settings/clean-urls/check'] = array( @@ -460,6 +469,7 @@ function system_menu() { 'title' => 'Reports', 'description' => 'View reports from system logs and other status information.', 'page callback' => 'system_admin_menu_block_page', + 'access arguments' => array('access site reports'), 'weight' => 5, 'position' => 'left', 'file' => 'system.admin.inc', diff --git a/modules/user/user.module b/modules/user/user.module index ce272ea9a..cb9249411 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -915,7 +915,7 @@ function user_menu() { 'description' => "Manage your site's users, groups and access to site features.", 'position' => 'left', 'page callback' => 'system_admin_menu_block_page', - 'access arguments' => array('administer site configuration'), + 'access arguments' => array('access administration pages'), 'file' => 'system.admin.inc', 'file path' => drupal_get_path('module', 'system'), ); @@ -943,6 +943,7 @@ function user_menu() { 'description' => 'Configure default behavior of users, including registration requirements, e-mails, and user pictures.', 'page callback' => 'drupal_get_form', 'page arguments' => array('user_admin_settings'), + 'access arguments' => array('administer users'), 'file' => 'user.admin.inc', ); -- cgit v1.2.3