summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/bootstrap.inc2
-rw-r--r--includes/menu.inc209
-rw-r--r--modules/admin.module12
-rw-r--r--modules/aggregator.module94
-rw-r--r--modules/aggregator/aggregator.module94
-rw-r--r--modules/archive.module13
-rw-r--r--modules/archive/archive.module13
-rw-r--r--modules/block.module41
-rw-r--r--modules/block/block.module41
-rw-r--r--modules/blog.module33
-rw-r--r--modules/blog/blog.module33
-rw-r--r--modules/blogapi.module7
-rw-r--r--modules/blogapi/blogapi.module7
-rw-r--r--modules/book.module48
-rw-r--r--modules/book/book.module48
-rw-r--r--modules/comment.module98
-rw-r--r--modules/comment/comment.module98
-rw-r--r--modules/drupal.module10
-rw-r--r--modules/drupal/drupal.module10
-rw-r--r--modules/filter.module74
-rw-r--r--modules/filter/filter.module74
-rw-r--r--modules/forum.module16
-rw-r--r--modules/forum/forum.module16
-rw-r--r--modules/help.module28
-rw-r--r--modules/help/help.module28
-rw-r--r--modules/legacy.module58
-rw-r--r--modules/legacy/legacy.module58
-rw-r--r--modules/locale.module81
-rw-r--r--modules/locale/locale.module81
-rw-r--r--modules/menu.module75
-rw-r--r--modules/menu/menu.module75
-rw-r--r--modules/node.module93
-rw-r--r--modules/node/node.module93
-rw-r--r--modules/page.module10
-rw-r--r--modules/page/page.module10
-rw-r--r--modules/path.module40
-rw-r--r--modules/path/path.module40
-rw-r--r--modules/poll.module53
-rw-r--r--modules/poll/poll.module53
-rw-r--r--modules/profile.module46
-rw-r--r--modules/profile/profile.module46
-rw-r--r--modules/queue.module14
-rw-r--r--modules/search.module34
-rw-r--r--modules/search/search.module34
-rw-r--r--modules/statistics.module62
-rw-r--r--modules/statistics/statistics.module62
-rw-r--r--modules/story.module10
-rw-r--r--modules/story/story.module10
-rw-r--r--modules/system.module83
-rw-r--r--modules/system/system.module83
-rw-r--r--modules/taxonomy.module34
-rw-r--r--modules/taxonomy/taxonomy.module34
-rw-r--r--modules/tracker.module25
-rw-r--r--modules/tracker/tracker.module25
-rw-r--r--modules/upload.module42
-rw-r--r--modules/upload/upload.module42
-rw-r--r--modules/user.module142
-rw-r--r--modules/user/user.module142
-rw-r--r--modules/watchdog.module16
-rw-r--r--modules/watchdog/watchdog.module16
60 files changed, 1605 insertions, 1364 deletions
diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index cf55dc173..7a0a37ac4 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -5,7 +5,7 @@
* @file
* Functions that need to be loaded on every Drupal request.
*/
-
+
define('CACHE_PERMANENT', 0);
define('CACHE_TEMPORARY', -1);
diff --git a/includes/menu.inc b/includes/menu.inc
index 9ac5a2647..889828d8e 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -196,11 +196,24 @@ define('MENU_ACCESS_DENIED', 3);
*/
function menu_get_menu() {
global $_menu;
+ global $user;
if (!isset($_menu['items'])) {
// _menu_build() may indirectly call this function, so prevent infinite loops.
$_menu['items'] = array();
- _menu_build();
+
+ $cid = 'menu:'. $user->uid;
+ if ($cached = cache_get($cid)) {
+ $_menu = unserialize($cached->data);
+ }
+ else {
+ _menu_build();
+ // Cache the menu structure for this user, to expire after one day.
+ cache_set($cid, serialize($_menu), time() + (60 * 60 * 24));
+ }
+
+ // Make sure items that cannot be cached are added.
+ _menu_append_contextual_items();
}
return $_menu;
@@ -330,7 +343,7 @@ function menu_execute_active_handler() {
}
// We found one, and are allowed to execute it.
- $arguments = $menu['items'][$mid]['callback arguments'];
+ $arguments = array_key_exists('callback arguments', $menu['items'][$mid]) ? $menu['items'][$mid]['callback arguments'] : array();
$arg = substr($_GET['q'], strlen($menu['items'][$mid]['path']) + 1);
if (strlen($arg)) {
$arguments = array_merge($arguments, explode('/', $arg));
@@ -478,36 +491,41 @@ function menu_in_active_trail($mid) {
* This need only be called at the start of pages that modify the menu.
*/
function menu_rebuild() {
+ // Clear the page cache, so that changed menus are reflected for anonymous users.
cache_clear_all();
- _menu_build();
- $menu = menu_get_menu();
+ // Also clear the menu cache.
+ cache_clear_all('menu:', TRUE);
- $new_items = array();
- foreach ($menu['items'] as $mid => $item) {
- if ($mid < 0 && ($item['type'] & MENU_MODIFIABLE_BY_ADMIN)) {
- $new_mid = db_next_id('{menu}_mid');
- if (isset($new_items[$item['pid']])) {
- $new_pid = $new_items[$item['pid']]['mid'];
- }
- else {
- $new_pid = $item['pid'];
- }
+ if (module_exist('menu')) {
+ $menu = menu_get_menu();
- // Fix parent IDs for menu items already added.
- if ($item['children']) {
- foreach ($item['children'] as $child) {
- if (isset($new_items[$child])) {
- $new_items[$child]['pid'] = $new_mid;
+ $new_items = array();
+ foreach ($menu['items'] as $mid => $item) {
+ if ($mid < 0 && ($item['type'] & MENU_MODIFIABLE_BY_ADMIN)) {
+ $new_mid = db_next_id('{menu}_mid');
+ if (isset($new_items[$item['pid']])) {
+ $new_pid = $new_items[$item['pid']]['mid'];
+ }
+ else {
+ $new_pid = $item['pid'];
+ }
+
+ // Fix parent IDs for menu items already added.
+ if ($item['children']) {
+ foreach ($item['children'] as $child) {
+ if (isset($new_items[$child])) {
+ $new_items[$child]['pid'] = $new_mid;
+ }
}
}
- }
- $new_items[$mid] = array('mid' => $new_mid, 'pid' => $new_pid, 'path' => $item['path'], 'title' => $item['title'], 'description' => $item['description'], 'weight' => $item['weight'], 'type' => $item['type']);
+ $new_items[$mid] = array('mid' => $new_mid, 'pid' => $new_pid, 'path' => $item['path'], 'title' => $item['title'], 'description' => array_key_exists('description', $item) ? $item['description'] : '', 'weight' => $item['weight'], 'type' => $item['type']);
+ }
}
- }
- foreach ($new_items as $item) {
- db_query('INSERT INTO {menu} (mid, pid, path, title, description, weight, type) VALUES (%d, %d, \'%s\', \'%s\', \'%s\', %d, %d)', $item['mid'], $item['pid'], $item['path'], $item['title'], $item['description'], $item['weight'], $item['type']);
+ foreach ($new_items as $item) {
+ db_query('INSERT INTO {menu} (mid, pid, path, title, description, weight, type) VALUES (%d, %d, \'%s\', \'%s\', \'%s\', %d, %d)', $item['mid'], $item['pid'], $item['path'], $item['title'], $item['description'], $item['weight'], $item['type']);
+ }
}
// Rebuild the menu to account for any changes.
@@ -559,7 +577,7 @@ function theme_menu_item($mid) {
$link_mid = $menu['items'][$link_mid]['pid'];
}
- return l($menu['items'][$mid]['title'], $menu['items'][$link_mid]['path'], $menu['items'][$mid]['description'] ? array("title" => $menu['items'][$mid]['description']) : array());
+ return l($menu['items'][$mid]['title'], $menu['items'][$link_mid]['path'], array_key_exists('description', $menu['items'][$mid]) ? array("title" => $menu['items'][$mid]['description']) : array());
}
/**
@@ -669,7 +687,7 @@ function _menu_build() {
);
// Build a sequential list of all menu items.
- $menu_item_list = module_invoke_all('menu');
+ $menu_item_list = module_invoke_all('menu', TRUE);
// Menu items not in the DB get temporary negative IDs.
$temp_mid = -1;
@@ -681,15 +699,9 @@ function _menu_build() {
if (!array_key_exists('type', $item)) {
$item['type'] = MENU_NORMAL_ITEM;
}
- if (!array_key_exists('description', $item)) {
- $item['description'] = '';
- }
if (!array_key_exists('weight', $item)) {
$item['weight'] = 0;
}
- if (!array_key_exists('callback arguments', $item)) {
- $item['callback arguments'] = array();
- }
$mid = $temp_mid;
if (array_key_exists($item['path'], $_menu['path index'])) {
// Newer menu items overwrite older ones.
@@ -717,7 +729,7 @@ function _menu_build() {
else {
// It has a permanent ID. Only replace with non-custom menu items.
if ($item->type & MENU_CREATED_BY_ADMIN) {
- $_menu['items'][$item->mid] = array('path' => $item->path, 'access' => TRUE, 'callback' => '', 'callback arguments' => array());
+ $_menu['items'][$item->mid] = array('path' => $item->path, 'access' => TRUE, 'callback' => '');
}
else {
// Leave the old item around as a shortcut to this one.
@@ -729,7 +741,7 @@ function _menu_build() {
else {
// The path was not declared, so this is a custom item or an orphaned one.
if ($item->type & MENU_CREATED_BY_ADMIN) {
- $_menu['items'][$item->mid] = array('path' => $item->path, 'access' => TRUE, 'callback' => '', 'callback arguments' => array());
+ $_menu['items'][$item->mid] = array('path' => $item->path, 'access' => TRUE, 'callback' => '');
if (!empty($item->path)) {
$_menu['path index'][$item->path] = $item->mid;
}
@@ -747,35 +759,8 @@ function _menu_build() {
}
}
- // Establish parent-child relationships.
- foreach ($_menu['items'] as $mid => $item) {
- if (!isset($item['pid'])) {
- // Parent's location has not been customized, so figure it out using the path.
- $parent = $item['path'];
- do {
- $parent = substr($parent, 0, strrpos($parent, '/'));
- }
- while ($parent && !array_key_exists($parent, $_menu['path index']));
-
- $pid = $parent ? $_menu['path index'][$parent] : 1;
- $_menu['items'][$mid]['pid'] = $pid;
- }
- else {
- $pid = $item['pid'];
- }
-
- // Don't make root a child of itself.
- if ($mid) {
- if (isset ($_menu['items'][$pid])) {
- $_menu['items'][$pid]['children'][] = $mid;
- }
- else {
- // If parent is missing, it is a menu item that used to be defined
- // but is no longer. Default to a root-level "Navigation" menu item.
- $_menu['items'][1]['children'][] = $mid;
- }
- }
- }
+ // Associate parent and child menu items.
+ _menu_find_parents($_menu['items']);
// Prepare to display trees to the user as required.
_menu_build_visible_tree();
@@ -840,6 +825,104 @@ function _menu_build_visible_tree($pid = 0) {
}
/**
+ * Account for menu items that are only defined at certain paths, so will not
+ * be cached.
+ *
+ * We don't support the full range of menu item options for these menu items. We
+ * don't support MENU_VISIBLE_IF_HAS_CHILDREN, and we require parent items to be
+ * declared before their children.
+ */
+function _menu_append_contextual_items() {
+ global $_menu;
+
+ // Build a sequential list of all menu items.
+ $menu_item_list = module_invoke_all('menu', FALSE);
+
+ // Menu items not in the DB get temporary negative IDs.
+ $temp_mid = min(array_keys($_menu['items'])) - 1;
+ $new_items = array();
+
+ foreach ($menu_item_list as $item) {
+ if (array_key_exists($item['path'], $_menu['path index'])) {
+ // The menu item already exists, so just add appropriate callback information.
+ $mid = $_menu['path index'][$item['path']];
+
+ $_menu['items'][$mid]['access'] = $item['access'];
+ $_menu['items'][$mid]['callback'] = $item['callback'];
+ $_menu['items'][$mid]['callback arguments'] = $item['callback arguments'];
+ }
+ else {
+ if (!array_key_exists('path', $item)) {
+ $item['path'] = '';
+ }
+ if (!array_key_exists('type', $item)) {
+ $item['type'] = MENU_NORMAL_ITEM;
+ }
+ if (!array_key_exists('weight', $item)) {
+ $item['weight'] = 0;
+ }
+ $_menu['items'][$temp_mid] = $item;
+ $_menu['path index'][$item['path']] = $temp_mid;
+ $new_items[$temp_mid] = $item;
+ $temp_mid--;
+ }
+ }
+
+ // Establish parent-child relationships.
+ _menu_find_parents($new_items);
+
+ // Add new items to the visible tree if necessary.
+ foreach ($new_items as $mid => $item) {
+ $item = $_menu['items'][$mid];
+ if (($item['type'] & MENU_VISIBLE_IN_TREE) && _menu_item_is_accessible($mid)) {
+ $pid = $item['pid'];
+ while ($pid && !array_key_exists($pid, $_menu['visible'])) {
+ $pid = $_menu['items'][$pid]['pid'];
+ }
+ $_menu['visible'][$mid] = array('title' => $item['title'], 'path' => $item['path'], 'pid' => $pid);
+ $_menu['visible'][$pid]['children'][] = $mid;
+ usort($_menu['visible'][$pid]['children'], '_menu_sort');
+ }
+ }
+}
+
+/**
+ * Establish parent-child relationships.
+ */
+function _menu_find_parents(&$items) {
+ global $_menu;
+
+ foreach ($items as $mid => $item) {
+ if (!isset($item['pid'])) {
+ // Parent's location has not been customized, so figure it out using the path.
+ $parent = $item['path'];
+ do {
+ $parent = substr($parent, 0, strrpos($parent, '/'));
+ }
+ while ($parent && !array_key_exists($parent, $_menu['path index']));
+
+ $pid = $parent ? $_menu['path index'][$parent] : 1;
+ $_menu['items'][$mid]['pid'] = $pid;
+ }
+ else {
+ $pid = $item['pid'];
+ }
+
+ // Don't make root a child of itself.
+ if ($mid) {
+ if (isset ($_menu['items'][$pid])) {
+ $_menu['items'][$pid]['children'][] = $mid;
+ }
+ else {
+ // If parent is missing, it is a menu item that used to be defined
+ // but is no longer. Default to a root-level "Navigation" menu item.
+ $_menu['items'][1]['children'][] = $mid;
+ }
+ }
+ }
+}
+
+/**
* Find all the items in the current local task tree.
*
* Since this is only for display, we only need title, path, and children
diff --git a/modules/admin.module b/modules/admin.module
index d528c2d49..98520fbc0 100644
--- a/modules/admin.module
+++ b/modules/admin.module
@@ -21,12 +21,14 @@ function admin_help($section) {
/**
* Implementation of hook_menu().
*/
-function admin_menu() {
+function admin_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin', 'title' => t('administer'),
- 'access' => user_access('access administration pages'),
- 'callback' => 'admin_main_page',
- 'weight' => 9);
+ if ($may_cache) {
+ $items[] = array('path' => 'admin', 'title' => t('administer'),
+ 'access' => user_access('access administration pages'),
+ 'callback' => 'admin_main_page',
+ 'weight' => 9);
+ }
return $items;
}
diff --git a/modules/aggregator.module b/modules/aggregator.module
index 7c16f06dc..91c26b396 100644
--- a/modules/aggregator.module
+++ b/modules/aggregator.module
@@ -119,53 +119,49 @@ function aggregator_link($type) {
/**
* Implementation of hook_menu().
*/
-function aggregator_menu() {
+function aggregator_menu($may_cache) {
$items = array();
- $edit = user_access('administer news feeds');
- $view = user_access('access news feeds');
-
- $items[] = array('path' => 'admin/aggregator', 'title' => t('aggregator'),
- 'callback' => 'aggregator_admin_overview', 'access' => $edit);
- $items[] = array('path' => 'admin/aggregator/edit/feed', 'title' => t('edit feed'),
- 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/aggregator/edit/category', 'title' => t('edit category'),
- 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/aggregator/remove', 'title' => t('remove items'),
- 'callback' => 'aggregator_admin_remove_feed', 'access' => $edit,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/aggregator/update', 'title' => t('update items'),
- 'callback' => 'aggregator_admin_refresh_feed', 'access' => $edit,
- 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'admin/aggregator/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/aggregator/add/feed', 'title' => t('add feed'),
- 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/aggregator/add/category', 'title' => t('add category'),
- 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/aggregator/configure', 'title' => t('configure'),
- 'callback' => 'aggregator_configure', 'access' => $edit,
- 'type' => MENU_LOCAL_TASK);
-
- $items[] = array('path' => 'aggregator', 'title' => t('news aggregator'),
- 'callback' => 'aggregator_page_last', 'access' => $view,
- 'weight' => 5);
- $items[] = array('path' => 'aggregator/sources', 'title' => t('sources'),
- 'callback' => 'aggregator_page_sources', 'access' => $view);
- $items[] = array('path' => 'aggregator/categories', 'title' => t('categories'),
- 'callback' => 'aggregator_page_categories', 'access' => $view,
- 'type' => MENU_ITEM_GROUPING);
-
- // To reduce the number of SQL queries, we don't query the database when
- // not on an aggregator page.
- // If caching of the menu is implemented, this check should be removed
- // so that DHTML menu presentation can be used correctly.
- if (arg(0) == 'aggregator') {
+ if ($may_cache) {
+ $edit = user_access('administer news feeds');
+ $view = user_access('access news feeds');
+
+ $items[] = array('path' => 'admin/aggregator', 'title' => t('aggregator'),
+ 'callback' => 'aggregator_admin_overview', 'access' => $edit);
+ $items[] = array('path' => 'admin/aggregator/edit/feed', 'title' => t('edit feed'),
+ 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/aggregator/edit/category', 'title' => t('edit category'),
+ 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/aggregator/remove', 'title' => t('remove items'),
+ 'callback' => 'aggregator_admin_remove_feed', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/aggregator/update', 'title' => t('update items'),
+ 'callback' => 'aggregator_admin_refresh_feed', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'admin/aggregator/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/aggregator/add/feed', 'title' => t('add feed'),
+ 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/aggregator/add/category', 'title' => t('add category'),
+ 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/aggregator/configure', 'title' => t('configure'),
+ 'callback' => 'aggregator_configure', 'access' => $edit,
+ 'type' => MENU_LOCAL_TASK);
+
+ $items[] = array('path' => 'aggregator', 'title' => t('news aggregator'),
+ 'callback' => 'aggregator_page_last', 'access' => $view,
+ 'weight' => 5);
+ $items[] = array('path' => 'aggregator/sources', 'title' => t('sources'),
+ 'callback' => 'aggregator_page_sources', 'access' => $view);
+ $items[] = array('path' => 'aggregator/categories', 'title' => t('categories'),
+ 'callback' => 'aggregator_page_categories', 'access' => $view,
+ 'type' => MENU_ITEM_GROUPING);
+
// Sources:
$result = db_query('SELECT title, fid FROM {aggregator_feed} ORDER BY title');
while ($feed = db_fetch_object($result)) {
@@ -197,11 +193,11 @@ function aggregator_menu() {
'type' => MENU_LOCAL_TASK,
'weight' => 1);
}
- }
- $items[] = array('path' => 'aggregator/opml', 'title' => t('opml'),
- 'callback' => 'aggregator_page_opml', 'access' => $view,
- 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'aggregator/opml', 'title' => t('opml'),
+ 'callback' => 'aggregator_page_opml', 'access' => $view,
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module
index 7c16f06dc..91c26b396 100644
--- a/modules/aggregator/aggregator.module
+++ b/modules/aggregator/aggregator.module
@@ -119,53 +119,49 @@ function aggregator_link($type) {
/**
* Implementation of hook_menu().
*/
-function aggregator_menu() {
+function aggregator_menu($may_cache) {
$items = array();
- $edit = user_access('administer news feeds');
- $view = user_access('access news feeds');
-
- $items[] = array('path' => 'admin/aggregator', 'title' => t('aggregator'),
- 'callback' => 'aggregator_admin_overview', 'access' => $edit);
- $items[] = array('path' => 'admin/aggregator/edit/feed', 'title' => t('edit feed'),
- 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/aggregator/edit/category', 'title' => t('edit category'),
- 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/aggregator/remove', 'title' => t('remove items'),
- 'callback' => 'aggregator_admin_remove_feed', 'access' => $edit,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/aggregator/update', 'title' => t('update items'),
- 'callback' => 'aggregator_admin_refresh_feed', 'access' => $edit,
- 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'admin/aggregator/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/aggregator/add/feed', 'title' => t('add feed'),
- 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/aggregator/add/category', 'title' => t('add category'),
- 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/aggregator/configure', 'title' => t('configure'),
- 'callback' => 'aggregator_configure', 'access' => $edit,
- 'type' => MENU_LOCAL_TASK);
-
- $items[] = array('path' => 'aggregator', 'title' => t('news aggregator'),
- 'callback' => 'aggregator_page_last', 'access' => $view,
- 'weight' => 5);
- $items[] = array('path' => 'aggregator/sources', 'title' => t('sources'),
- 'callback' => 'aggregator_page_sources', 'access' => $view);
- $items[] = array('path' => 'aggregator/categories', 'title' => t('categories'),
- 'callback' => 'aggregator_page_categories', 'access' => $view,
- 'type' => MENU_ITEM_GROUPING);
-
- // To reduce the number of SQL queries, we don't query the database when
- // not on an aggregator page.
- // If caching of the menu is implemented, this check should be removed
- // so that DHTML menu presentation can be used correctly.
- if (arg(0) == 'aggregator') {
+ if ($may_cache) {
+ $edit = user_access('administer news feeds');
+ $view = user_access('access news feeds');
+
+ $items[] = array('path' => 'admin/aggregator', 'title' => t('aggregator'),
+ 'callback' => 'aggregator_admin_overview', 'access' => $edit);
+ $items[] = array('path' => 'admin/aggregator/edit/feed', 'title' => t('edit feed'),
+ 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/aggregator/edit/category', 'title' => t('edit category'),
+ 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/aggregator/remove', 'title' => t('remove items'),
+ 'callback' => 'aggregator_admin_remove_feed', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/aggregator/update', 'title' => t('update items'),
+ 'callback' => 'aggregator_admin_refresh_feed', 'access' => $edit,
+ 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'admin/aggregator/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/aggregator/add/feed', 'title' => t('add feed'),
+ 'callback' => 'aggregator_admin_edit_feed', 'access' => $edit,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/aggregator/add/category', 'title' => t('add category'),
+ 'callback' => 'aggregator_admin_edit_category', 'access' => $edit,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/aggregator/configure', 'title' => t('configure'),
+ 'callback' => 'aggregator_configure', 'access' => $edit,
+ 'type' => MENU_LOCAL_TASK);
+
+ $items[] = array('path' => 'aggregator', 'title' => t('news aggregator'),
+ 'callback' => 'aggregator_page_last', 'access' => $view,
+ 'weight' => 5);
+ $items[] = array('path' => 'aggregator/sources', 'title' => t('sources'),
+ 'callback' => 'aggregator_page_sources', 'access' => $view);
+ $items[] = array('path' => 'aggregator/categories', 'title' => t('categories'),
+ 'callback' => 'aggregator_page_categories', 'access' => $view,
+ 'type' => MENU_ITEM_GROUPING);
+
// Sources:
$result = db_query('SELECT title, fid FROM {aggregator_feed} ORDER BY title');
while ($feed = db_fetch_object($result)) {
@@ -197,11 +193,11 @@ function aggregator_menu() {
'type' => MENU_LOCAL_TASK,
'weight' => 1);
}
- }
- $items[] = array('path' => 'aggregator/opml', 'title' => t('opml'),
- 'callback' => 'aggregator_page_opml', 'access' => $view,
- 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'aggregator/opml', 'title' => t('opml'),
+ 'callback' => 'aggregator_page_opml', 'access' => $view,
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/archive.module b/modules/archive.module
index 21047dae7..d92e990f0 100644
--- a/modules/archive.module
+++ b/modules/archive.module
@@ -207,12 +207,15 @@ function archive_link($type) {
/**
* Implementation of hook_menu().
*/
-function archive_menu() {
+function archive_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'archive', 'title' => t('archives'),
- 'access' => user_access('access content'),
- 'callback' => 'archive_page',
- 'type' => MENU_SUGGESTED_ITEM);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'archive', 'title' => t('archives'),
+ 'access' => user_access('access content'),
+ 'callback' => 'archive_page',
+ 'type' => MENU_SUGGESTED_ITEM);
+ }
return $items;
}
diff --git a/modules/archive/archive.module b/modules/archive/archive.module
index 21047dae7..d92e990f0 100644
--- a/modules/archive/archive.module
+++ b/modules/archive/archive.module
@@ -207,12 +207,15 @@ function archive_link($type) {
/**
* Implementation of hook_menu().
*/
-function archive_menu() {
+function archive_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'archive', 'title' => t('archives'),
- 'access' => user_access('access content'),
- 'callback' => 'archive_page',
- 'type' => MENU_SUGGESTED_ITEM);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'archive', 'title' => t('archives'),
+ 'access' => user_access('access content'),
+ 'callback' => 'archive_page',
+ 'type' => MENU_SUGGESTED_ITEM);
+ }
return $items;
}
diff --git a/modules/block.module b/modules/block.module
index 9011c7984..faa21eeb3 100644
--- a/modules/block.module
+++ b/modules/block.module
@@ -48,26 +48,29 @@ function block_perm() {
/**
* Implementation of hook_menu().
*/
-function block_menu() {
+function block_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/block', 'title' => t('blocks'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_admin');
- $items[] = array('path' => 'admin/block/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/block/edit', 'title' => t('edit block'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_box_edit',
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/block/delete', 'title' => t('delete block'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_box_delete',
- 'type' => MENU_CALLBACK);
- // Tabs:
- $items[] = array('path' => 'admin/block/add', 'title' => t('add'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_box_edit',
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/block', 'title' => t('blocks'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_admin');
+ $items[] = array('path' => 'admin/block/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/block/edit', 'title' => t('edit block'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_box_edit',
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/block/delete', 'title' => t('delete block'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_box_delete',
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/block/add', 'title' => t('add'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_box_edit',
+ 'type' => MENU_LOCAL_TASK);
+ }
+
return $items;
}
diff --git a/modules/block/block.module b/modules/block/block.module
index 9011c7984..faa21eeb3 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -48,26 +48,29 @@ function block_perm() {
/**
* Implementation of hook_menu().
*/
-function block_menu() {
+function block_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/block', 'title' => t('blocks'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_admin');
- $items[] = array('path' => 'admin/block/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/block/edit', 'title' => t('edit block'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_box_edit',
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/block/delete', 'title' => t('delete block'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_box_delete',
- 'type' => MENU_CALLBACK);
- // Tabs:
- $items[] = array('path' => 'admin/block/add', 'title' => t('add'),
- 'access' => user_access('administer blocks'),
- 'callback' => 'block_box_edit',
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/block', 'title' => t('blocks'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_admin');
+ $items[] = array('path' => 'admin/block/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/block/edit', 'title' => t('edit block'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_box_edit',
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/block/delete', 'title' => t('delete block'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_box_delete',
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/block/add', 'title' => t('add'),
+ 'access' => user_access('administer blocks'),
+ 'callback' => 'block_box_edit',
+ 'type' => MENU_LOCAL_TASK);
+ }
+
return $items;
}
diff --git a/modules/blog.module b/modules/blog.module
index d1a97da32..beec0eb5f 100644
--- a/modules/blog.module
+++ b/modules/blog.module
@@ -259,23 +259,26 @@ function blog_link($type, $node = 0, $main) {
/**
* Implementation of hook_menu().
*/
-function blog_menu() {
+function blog_menu($may_cache) {
global $user;
-
$items = array();
- $items[] = array('path' => 'node/add/blog', 'title' => t('blog entry'),
- 'access' => user_access('edit own blog'));
- $items[] = array('path' => 'blog', 'title' => t('blogs'),
- 'callback' => 'blog_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'blog/'. $user->uid, 'title' => t('my blog'),
- 'access' => user_access('edit own blog'),
- 'type' => MENU_DYNAMIC_ITEM);
- $items[] = array('path' => 'blog/feed', 'title' => t('RSS feed'),
- 'callback' => 'blog_feed',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/blog', 'title' => t('blog entry'),
+ 'access' => user_access('edit own blog'));
+ $items[] = array('path' => 'blog', 'title' => t('blogs'),
+ 'callback' => 'blog_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'blog/feed', 'title' => t('RSS feed'),
+ 'callback' => 'blog_feed',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'blog/'. $user->uid, 'title' => t('my blog'),
+ 'access' => user_access('edit own blog'),
+ 'type' => MENU_DYNAMIC_ITEM);
+ }
+
return $items;
}
diff --git a/modules/blog/blog.module b/modules/blog/blog.module
index d1a97da32..beec0eb5f 100644
--- a/modules/blog/blog.module
+++ b/modules/blog/blog.module
@@ -259,23 +259,26 @@ function blog_link($type, $node = 0, $main) {
/**
* Implementation of hook_menu().
*/
-function blog_menu() {
+function blog_menu($may_cache) {
global $user;
-
$items = array();
- $items[] = array('path' => 'node/add/blog', 'title' => t('blog entry'),
- 'access' => user_access('edit own blog'));
- $items[] = array('path' => 'blog', 'title' => t('blogs'),
- 'callback' => 'blog_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'blog/'. $user->uid, 'title' => t('my blog'),
- 'access' => user_access('edit own blog'),
- 'type' => MENU_DYNAMIC_ITEM);
- $items[] = array('path' => 'blog/feed', 'title' => t('RSS feed'),
- 'callback' => 'blog_feed',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/blog', 'title' => t('blog entry'),
+ 'access' => user_access('edit own blog'));
+ $items[] = array('path' => 'blog', 'title' => t('blogs'),
+ 'callback' => 'blog_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'blog/feed', 'title' => t('RSS feed'),
+ 'callback' => 'blog_feed',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'blog/'. $user->uid, 'title' => t('my blog'),
+ 'access' => user_access('edit own blog'),
+ 'type' => MENU_DYNAMIC_ITEM);
+ }
+
return $items;
}
diff --git a/modules/blogapi.module b/modules/blogapi.module
index a603b2185..534174660 100644
--- a/modules/blogapi.module
+++ b/modules/blogapi.module
@@ -512,15 +512,16 @@ function blogapi_settings() {
return $output;
}
-function blogapi_menu() {
- global $user;
+function blogapi_menu($may_cache) {
$items = array();
if ($_GET['q'] == variable_get('site_frontpage', 'node')) {
drupal_set_html_head('<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . url('blogapi/rsd', NULL, NULL, TRUE) . '" />');
}
- $items[] = array('path' => 'blogapi', 'title' => t('RSD'), 'callback' => 'blogapi_blogapi', 'access' => user_access('access_content'), 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $items[] = array('path' => 'blogapi', 'title' => t('RSD'), 'callback' => 'blogapi_blogapi', 'access' => user_access('access_content'), 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/blogapi/blogapi.module b/modules/blogapi/blogapi.module
index a603b2185..534174660 100644
--- a/modules/blogapi/blogapi.module
+++ b/modules/blogapi/blogapi.module
@@ -512,15 +512,16 @@ function blogapi_settings() {
return $output;
}
-function blogapi_menu() {
- global $user;
+function blogapi_menu($may_cache) {
$items = array();
if ($_GET['q'] == variable_get('site_frontpage', 'node')) {
drupal_set_html_head('<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . url('blogapi/rsd', NULL, NULL, TRUE) . '" />');
}
- $items[] = array('path' => 'blogapi', 'title' => t('RSD'), 'callback' => 'blogapi_blogapi', 'access' => user_access('access_content'), 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $items[] = array('path' => 'blogapi', 'title' => t('RSD'), 'callback' => 'blogapi_blogapi', 'access' => user_access('access_content'), 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/book.module b/modules/book.module
index f4a847515..f349991fd 100644
--- a/modules/book.module
+++ b/modules/book.module
@@ -76,31 +76,33 @@ function book_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function book_menu() {
+function book_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/book', 'title' => t('book page'),
- 'access' => user_access('maintain books'));
- $items[] = array('path' => 'admin/node/book', 'title' => t('books'),
- 'callback' => 'book_admin',
- 'access' => user_access('administer nodes'),
- 'weight' => 4);
- $items[] = array('path' => 'admin/node/book/orphan', 'title' => t('orphan pages'),
- 'callback' => 'book_admin_orphan',
- 'access' => user_access('administer nodes'),
- 'weight' => 8);
- $result = db_query('SELECT n.nid, n.title FROM {node} n INNER JOIN {book} b ON n.nid = b.nid WHERE b.parent = 0 ORDER BY b.weight, n.title');
- while ($book = db_fetch_object($result)) {
- $items[] = array('path' => 'admin/node/book/'. $book->nid, 'title' => t('"%title" book', array('%title' => $book->title)));
- }
- $items[] = array('path' => 'book', 'title' => t('books'),
- 'callback' => 'book_render',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'book/print', 'title' => t('printer-friendly version'),
- 'callback' => 'book_print',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/book', 'title' => t('book page'),
+ 'access' => user_access('maintain books'));
+ $items[] = array('path' => 'admin/node/book', 'title' => t('books'),
+ 'callback' => 'book_admin',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 4);
+ $items[] = array('path' => 'admin/node/book/orphan', 'title' => t('orphan pages'),
+ 'callback' => 'book_admin_orphan',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 8);
+ $result = db_query('SELECT n.nid, n.title FROM {node} n INNER JOIN {book} b ON n.nid = b.nid WHERE b.parent = 0 ORDER BY b.weight, n.title');
+ while ($book = db_fetch_object($result)) {
+ $items[] = array('path' => 'admin/node/book/'. $book->nid, 'title' => t('"%title" book', array('%title' => $book->title)));
+ }
+ $items[] = array('path' => 'book', 'title' => t('books'),
+ 'callback' => 'book_render',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'book/print', 'title' => t('printer-friendly version'),
+ 'callback' => 'book_print',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/book/book.module b/modules/book/book.module
index f4a847515..f349991fd 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -76,31 +76,33 @@ function book_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function book_menu() {
+function book_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/book', 'title' => t('book page'),
- 'access' => user_access('maintain books'));
- $items[] = array('path' => 'admin/node/book', 'title' => t('books'),
- 'callback' => 'book_admin',
- 'access' => user_access('administer nodes'),
- 'weight' => 4);
- $items[] = array('path' => 'admin/node/book/orphan', 'title' => t('orphan pages'),
- 'callback' => 'book_admin_orphan',
- 'access' => user_access('administer nodes'),
- 'weight' => 8);
- $result = db_query('SELECT n.nid, n.title FROM {node} n INNER JOIN {book} b ON n.nid = b.nid WHERE b.parent = 0 ORDER BY b.weight, n.title');
- while ($book = db_fetch_object($result)) {
- $items[] = array('path' => 'admin/node/book/'. $book->nid, 'title' => t('"%title" book', array('%title' => $book->title)));
- }
- $items[] = array('path' => 'book', 'title' => t('books'),
- 'callback' => 'book_render',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'book/print', 'title' => t('printer-friendly version'),
- 'callback' => 'book_print',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/book', 'title' => t('book page'),
+ 'access' => user_access('maintain books'));
+ $items[] = array('path' => 'admin/node/book', 'title' => t('books'),
+ 'callback' => 'book_admin',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 4);
+ $items[] = array('path' => 'admin/node/book/orphan', 'title' => t('orphan pages'),
+ 'callback' => 'book_admin_orphan',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 8);
+ $result = db_query('SELECT n.nid, n.title FROM {node} n INNER JOIN {book} b ON n.nid = b.nid WHERE b.parent = 0 ORDER BY b.weight, n.title');
+ while ($book = db_fetch_object($result)) {
+ $items[] = array('path' => 'admin/node/book/'. $book->nid, 'title' => t('"%title" book', array('%title' => $book->title)));
+ }
+ $items[] = array('path' => 'book', 'title' => t('books'),
+ 'callback' => 'book_render',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'book/print', 'title' => t('printer-friendly version'),
+ 'callback' => 'book_print',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/comment.module b/modules/comment.module
index 9e746e3d3..af71c129a 100644
--- a/modules/comment.module
+++ b/modules/comment.module
@@ -84,56 +84,58 @@ function comment_help($section = "admin/help#comment") {
/**
* Implementation of hook_menu().
*/
-function comment_menu() {
+function comment_menu($may_cache) {
$items = array();
- $access = user_access('administer comments');
- $items[] = array('path' => 'admin/comment', 'title' => t('comments'),
- 'callback' => 'comment_admin_overview', 'access' => $access);
- $items[] = array('path' => 'admin/comment/edit', 'title' => t('edit comment'),
- 'callback' => 'comment_admin_edit', 'access' => $access, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/comment/delete', 'title' => t('delete comment'),
- 'callback' => 'comment_delete', 'access' => $access, 'type' => MENU_CALLBACK);
-
- // Tabs:
- $items[] = array('path' => 'admin/comment/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/comment/configure', 'title' => t('configure'),
- 'callback' => 'comment_configure', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- if (module_exist('search')) {
- $items[] = array('path' => 'admin/comment/search', 'title' => t('search'),
- 'callback' => 'comment_search', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- }
-
- // Subtabs:
- $items[] = array('path' => 'admin/comment/list/new', 'title' => t('new comments'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/comment/list/approval', 'title' => t('approval queue'),
- 'callback' => 'comment_admin_overview', 'access' => $access,
- 'callback arguments' => 'approval',
- 'type' => MENU_LOCAL_TASK);
-
- $items[] = array('path' => 'admin/comment/configure/settings', 'title' => t('settings'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
-
- $access = user_access('administer comments') && user_access('administer moderation');
- $items[] = array('path' => 'admin/comment/configure/matrix', 'title' => t('moderation matrix'),
- 'callback' => 'comment_matrix_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/comment/configure/thresholds', 'title' => t('moderation thresholds'),
- 'callback' => 'comment_threshold_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/comment/configure/roles', 'title' => t('moderation roles'),
- 'callback' => 'comment_role_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/comment/configure/votes', 'title' => t('moderation votes'),
- 'callback' => 'comment_vote_settings', 'access' => $access,'type' => MENU_LOCAL_TASK);
-
- $access = user_access('post comments');
- $items[] = array('path' => 'comment/reply', 'title' => t('reply to comment'),
- 'callback' => 'comment_reply', 'access' => $access, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'comment/edit', 'title' => t('edit your comment'),
- 'callback' => 'comment_edit', 'access' => $access, 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'comment', 'title' => t('reply to comment'),
- 'callback' => 'comment_save_settings', 'access' => 1, 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $access = user_access('administer comments');
+ $items[] = array('path' => 'admin/comment', 'title' => t('comments'),
+ 'callback' => 'comment_admin_overview', 'access' => $access);
+ $items[] = array('path' => 'admin/comment/edit', 'title' => t('edit comment'),
+ 'callback' => 'comment_admin_edit', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/comment/delete', 'title' => t('delete comment'),
+ 'callback' => 'comment_delete', 'access' => $access, 'type' => MENU_CALLBACK);
+
+ // Tabs:
+ $items[] = array('path' => 'admin/comment/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/comment/configure', 'title' => t('configure'),
+ 'callback' => 'comment_configure', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ if (module_exist('search')) {
+ $items[] = array('path' => 'admin/comment/search', 'title' => t('search'),
+ 'callback' => 'comment_search', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ }
+
+ // Subtabs:
+ $items[] = array('path' => 'admin/comment/list/new', 'title' => t('new comments'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/comment/list/approval', 'title' => t('approval queue'),
+ 'callback' => 'comment_admin_overview', 'access' => $access,
+ 'callback arguments' => 'approval',
+ 'type' => MENU_LOCAL_TASK);
+
+ $items[] = array('path' => 'admin/comment/configure/settings', 'title' => t('settings'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+
+ $access = user_access('administer comments') && user_access('administer moderation');
+ $items[] = array('path' => 'admin/comment/configure/matrix', 'title' => t('moderation matrix'),
+ 'callback' => 'comment_matrix_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/comment/configure/thresholds', 'title' => t('moderation thresholds'),
+ 'callback' => 'comment_threshold_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/comment/configure/roles', 'title' => t('moderation roles'),
+ 'callback' => 'comment_role_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/comment/configure/votes', 'title' => t('moderation votes'),
+ 'callback' => 'comment_vote_settings', 'access' => $access,'type' => MENU_LOCAL_TASK);
+
+ $access = user_access('post comments');
+ $items[] = array('path' => 'comment/reply', 'title' => t('reply to comment'),
+ 'callback' => 'comment_reply', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'comment/edit', 'title' => t('edit your comment'),
+ 'callback' => 'comment_edit', 'access' => $access, 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'comment', 'title' => t('reply to comment'),
+ 'callback' => 'comment_save_settings', 'access' => 1, 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 9e746e3d3..af71c129a 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -84,56 +84,58 @@ function comment_help($section = "admin/help#comment") {
/**
* Implementation of hook_menu().
*/
-function comment_menu() {
+function comment_menu($may_cache) {
$items = array();
- $access = user_access('administer comments');
- $items[] = array('path' => 'admin/comment', 'title' => t('comments'),
- 'callback' => 'comment_admin_overview', 'access' => $access);
- $items[] = array('path' => 'admin/comment/edit', 'title' => t('edit comment'),
- 'callback' => 'comment_admin_edit', 'access' => $access, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/comment/delete', 'title' => t('delete comment'),
- 'callback' => 'comment_delete', 'access' => $access, 'type' => MENU_CALLBACK);
-
- // Tabs:
- $items[] = array('path' => 'admin/comment/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/comment/configure', 'title' => t('configure'),
- 'callback' => 'comment_configure', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- if (module_exist('search')) {
- $items[] = array('path' => 'admin/comment/search', 'title' => t('search'),
- 'callback' => 'comment_search', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- }
-
- // Subtabs:
- $items[] = array('path' => 'admin/comment/list/new', 'title' => t('new comments'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/comment/list/approval', 'title' => t('approval queue'),
- 'callback' => 'comment_admin_overview', 'access' => $access,
- 'callback arguments' => 'approval',
- 'type' => MENU_LOCAL_TASK);
-
- $items[] = array('path' => 'admin/comment/configure/settings', 'title' => t('settings'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
-
- $access = user_access('administer comments') && user_access('administer moderation');
- $items[] = array('path' => 'admin/comment/configure/matrix', 'title' => t('moderation matrix'),
- 'callback' => 'comment_matrix_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/comment/configure/thresholds', 'title' => t('moderation thresholds'),
- 'callback' => 'comment_threshold_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/comment/configure/roles', 'title' => t('moderation roles'),
- 'callback' => 'comment_role_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/comment/configure/votes', 'title' => t('moderation votes'),
- 'callback' => 'comment_vote_settings', 'access' => $access,'type' => MENU_LOCAL_TASK);
-
- $access = user_access('post comments');
- $items[] = array('path' => 'comment/reply', 'title' => t('reply to comment'),
- 'callback' => 'comment_reply', 'access' => $access, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'comment/edit', 'title' => t('edit your comment'),
- 'callback' => 'comment_edit', 'access' => $access, 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'comment', 'title' => t('reply to comment'),
- 'callback' => 'comment_save_settings', 'access' => 1, 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $access = user_access('administer comments');
+ $items[] = array('path' => 'admin/comment', 'title' => t('comments'),
+ 'callback' => 'comment_admin_overview', 'access' => $access);
+ $items[] = array('path' => 'admin/comment/edit', 'title' => t('edit comment'),
+ 'callback' => 'comment_admin_edit', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/comment/delete', 'title' => t('delete comment'),
+ 'callback' => 'comment_delete', 'access' => $access, 'type' => MENU_CALLBACK);
+
+ // Tabs:
+ $items[] = array('path' => 'admin/comment/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/comment/configure', 'title' => t('configure'),
+ 'callback' => 'comment_configure', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ if (module_exist('search')) {
+ $items[] = array('path' => 'admin/comment/search', 'title' => t('search'),
+ 'callback' => 'comment_search', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ }
+
+ // Subtabs:
+ $items[] = array('path' => 'admin/comment/list/new', 'title' => t('new comments'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/comment/list/approval', 'title' => t('approval queue'),
+ 'callback' => 'comment_admin_overview', 'access' => $access,
+ 'callback arguments' => 'approval',
+ 'type' => MENU_LOCAL_TASK);
+
+ $items[] = array('path' => 'admin/comment/configure/settings', 'title' => t('settings'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+
+ $access = user_access('administer comments') && user_access('administer moderation');
+ $items[] = array('path' => 'admin/comment/configure/matrix', 'title' => t('moderation matrix'),
+ 'callback' => 'comment_matrix_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/comment/configure/thresholds', 'title' => t('moderation thresholds'),
+ 'callback' => 'comment_threshold_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/comment/configure/roles', 'title' => t('moderation roles'),
+ 'callback' => 'comment_role_settings', 'access' => $access, 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/comment/configure/votes', 'title' => t('moderation votes'),
+ 'callback' => 'comment_vote_settings', 'access' => $access,'type' => MENU_LOCAL_TASK);
+
+ $access = user_access('post comments');
+ $items[] = array('path' => 'comment/reply', 'title' => t('reply to comment'),
+ 'callback' => 'comment_reply', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'comment/edit', 'title' => t('edit your comment'),
+ 'callback' => 'comment_edit', 'access' => $access, 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'comment', 'title' => t('reply to comment'),
+ 'callback' => 'comment_save_settings', 'access' => 1, 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/drupal.module b/modules/drupal.module
index 388b8dac6..a4da75208 100644
--- a/modules/drupal.module
+++ b/modules/drupal.module
@@ -185,11 +185,13 @@ function drupal_auth($username, $password, $server) {
/**
* Implementation of hook_menu().
*/
-function drupal_menu() {
+function drupal_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'drupal', 'title' => t('Drupal'),
- 'callback' => 'drupal_page_help', 'access' => TRUE,
- 'type' => MENU_SUGGESTED_ITEM);
+ if ($may_cache) {
+ $items[] = array('path' => 'drupal', 'title' => t('Drupal'),
+ 'callback' => 'drupal_page_help', 'access' => TRUE,
+ 'type' => MENU_SUGGESTED_ITEM);
+ }
return $items;
}
diff --git a/modules/drupal/drupal.module b/modules/drupal/drupal.module
index 388b8dac6..a4da75208 100644
--- a/modules/drupal/drupal.module
+++ b/modules/drupal/drupal.module
@@ -185,11 +185,13 @@ function drupal_auth($username, $password, $server) {
/**
* Implementation of hook_menu().
*/
-function drupal_menu() {
+function drupal_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'drupal', 'title' => t('Drupal'),
- 'callback' => 'drupal_page_help', 'access' => TRUE,
- 'type' => MENU_SUGGESTED_ITEM);
+ if ($may_cache) {
+ $items[] = array('path' => 'drupal', 'title' => t('Drupal'),
+ 'callback' => 'drupal_page_help', 'access' => TRUE,
+ 'type' => MENU_SUGGESTED_ITEM);
+ }
return $items;
}
diff --git a/modules/filter.module b/modules/filter.module
index dece83b8e..26eeac602 100644
--- a/modules/filter.module
+++ b/modules/filter.module
@@ -106,50 +106,54 @@ function filter_filter_tips($delta, $format, $long = false) {
/**
* Implementation of hook_menu().
*/
-function filter_menu() {
+function filter_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/filters', 'title' => t('input formats'),
- 'callback' => 'filter_admin_overview',
- 'access' => user_access('administer filters'));
-
- $items[] = array('path' => 'admin/filters/delete', 'title' => t('delete input format'),
- 'callback' => 'filter_admin_delete',
- 'type' => MENU_CALLBACK,
- 'access' => user_access('administer filters'));
-
- if (arg(0) == 'admin' && arg(1) == 'filters' && is_numeric(arg(2))) {
- $formats = filter_formats();
-
- if (isset($formats[arg(2)])) {
- $items[] = array('path' => 'admin/filters/'. arg(2), 'title' => t("'%format' input format", array('%format' => $formats[arg(2)]->name)),
- 'callback' => 'filter_admin_filters',
- 'type' => MENU_CALLBACK,
- 'access' => user_access('administer filters'));
-
- $items[] = array('path' => 'admin/filters/'. arg(2) .'/list', 'title' => t('list filters'),
- 'callback' => 'filter_admin_filters',
- 'type' => MENU_DEFAULT_LOCAL_TASK,
- 'weight' => 0,
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/filters', 'title' => t('input formats'),
+ 'callback' => 'filter_admin_overview',
'access' => user_access('administer filters'));
- $items[] = array('path' => 'admin/filters/'. arg(2) .'/configure', 'title' => t('configure filters'),
- 'callback' => 'filter_admin_configure',
- 'type' => MENU_LOCAL_TASK,
- 'weight' => 1,
+ $items[] = array('path' => 'admin/filters/delete', 'title' => t('delete input format'),
+ 'callback' => 'filter_admin_delete',
+ 'type' => MENU_CALLBACK,
'access' => user_access('administer filters'));
- $items[] = array('path' => 'admin/filters/'. arg(2) .'/order', 'title' => t('rearrange filters'),
- 'callback' => 'filter_admin_order',
- 'type' => MENU_LOCAL_TASK,
- 'weight' => 2,
- 'access' => user_access('administer filters'));
+ $items[] = array('path' => 'filter/tips', 'title' => t('compose tips'),
+ 'callback' => 'filter_tips_long', 'access' => TRUE,
+ 'type' => MENU_SUGGESTED_ITEM);
+ }
+ else {
+ if (arg(0) == 'admin' && arg(1) == 'filters' && is_numeric(arg(2))) {
+ $formats = filter_formats();
+
+ if (isset($formats[arg(2)])) {
+ $items[] = array('path' => 'admin/filters/'. arg(2), 'title' => t("'%format' input format", array('%format' => $formats[arg(2)]->name)),
+ 'callback' => 'filter_admin_filters',
+ 'type' => MENU_CALLBACK,
+ 'access' => user_access('administer filters'));
+
+ $items[] = array('path' => 'admin/filters/'. arg(2) .'/list', 'title' => t('list filters'),
+ 'callback' => 'filter_admin_filters',
+ 'type' => MENU_DEFAULT_LOCAL_TASK,
+ 'weight' => 0,
+ 'access' => user_access('administer filters'));
+
+ $items[] = array('path' => 'admin/filters/'. arg(2) .'/configure', 'title' => t('configure filters'),
+ 'callback' => 'filter_admin_configure',
+ 'type' => MENU_LOCAL_TASK,
+ 'weight' => 1,
+ 'access' => user_access('administer filters'));
+
+ $items[] = array('path' => 'admin/filters/'. arg(2) .'/order', 'title' => t('rearrange filters'),
+ 'callback' => 'filter_admin_order',
+ 'type' => MENU_LOCAL_TASK,
+ 'weight' => 2,
+ 'access' => user_access('administer filters'));
+ }
}
}
- $items[] = array('path' => 'filter/tips', 'title' => t('compose tips'),
- 'callback' => 'filter_tips_long', 'access' => TRUE,
- 'type' => MENU_SUGGESTED_ITEM);
return $items;
}
diff --git a/modules/filter/filter.module b/modules/filter/filter.module
index dece83b8e..26eeac602 100644
--- a/modules/filter/filter.module
+++ b/modules/filter/filter.module
@@ -106,50 +106,54 @@ function filter_filter_tips($delta, $format, $long = false) {
/**
* Implementation of hook_menu().
*/
-function filter_menu() {
+function filter_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/filters', 'title' => t('input formats'),
- 'callback' => 'filter_admin_overview',
- 'access' => user_access('administer filters'));
-
- $items[] = array('path' => 'admin/filters/delete', 'title' => t('delete input format'),
- 'callback' => 'filter_admin_delete',
- 'type' => MENU_CALLBACK,
- 'access' => user_access('administer filters'));
-
- if (arg(0) == 'admin' && arg(1) == 'filters' && is_numeric(arg(2))) {
- $formats = filter_formats();
-
- if (isset($formats[arg(2)])) {
- $items[] = array('path' => 'admin/filters/'. arg(2), 'title' => t("'%format' input format", array('%format' => $formats[arg(2)]->name)),
- 'callback' => 'filter_admin_filters',
- 'type' => MENU_CALLBACK,
- 'access' => user_access('administer filters'));
-
- $items[] = array('path' => 'admin/filters/'. arg(2) .'/list', 'title' => t('list filters'),
- 'callback' => 'filter_admin_filters',
- 'type' => MENU_DEFAULT_LOCAL_TASK,
- 'weight' => 0,
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/filters', 'title' => t('input formats'),
+ 'callback' => 'filter_admin_overview',
'access' => user_access('administer filters'));
- $items[] = array('path' => 'admin/filters/'. arg(2) .'/configure', 'title' => t('configure filters'),
- 'callback' => 'filter_admin_configure',
- 'type' => MENU_LOCAL_TASK,
- 'weight' => 1,
+ $items[] = array('path' => 'admin/filters/delete', 'title' => t('delete input format'),
+ 'callback' => 'filter_admin_delete',
+ 'type' => MENU_CALLBACK,
'access' => user_access('administer filters'));
- $items[] = array('path' => 'admin/filters/'. arg(2) .'/order', 'title' => t('rearrange filters'),
- 'callback' => 'filter_admin_order',
- 'type' => MENU_LOCAL_TASK,
- 'weight' => 2,
- 'access' => user_access('administer filters'));
+ $items[] = array('path' => 'filter/tips', 'title' => t('compose tips'),
+ 'callback' => 'filter_tips_long', 'access' => TRUE,
+ 'type' => MENU_SUGGESTED_ITEM);
+ }
+ else {
+ if (arg(0) == 'admin' && arg(1) == 'filters' && is_numeric(arg(2))) {
+ $formats = filter_formats();
+
+ if (isset($formats[arg(2)])) {
+ $items[] = array('path' => 'admin/filters/'. arg(2), 'title' => t("'%format' input format", array('%format' => $formats[arg(2)]->name)),
+ 'callback' => 'filter_admin_filters',
+ 'type' => MENU_CALLBACK,
+ 'access' => user_access('administer filters'));
+
+ $items[] = array('path' => 'admin/filters/'. arg(2) .'/list', 'title' => t('list filters'),
+ 'callback' => 'filter_admin_filters',
+ 'type' => MENU_DEFAULT_LOCAL_TASK,
+ 'weight' => 0,
+ 'access' => user_access('administer filters'));
+
+ $items[] = array('path' => 'admin/filters/'. arg(2) .'/configure', 'title' => t('configure filters'),
+ 'callback' => 'filter_admin_configure',
+ 'type' => MENU_LOCAL_TASK,
+ 'weight' => 1,
+ 'access' => user_access('administer filters'));
+
+ $items[] = array('path' => 'admin/filters/'. arg(2) .'/order', 'title' => t('rearrange filters'),
+ 'callback' => 'filter_admin_order',
+ 'type' => MENU_LOCAL_TASK,
+ 'weight' => 2,
+ 'access' => user_access('administer filters'));
+ }
}
}
- $items[] = array('path' => 'filter/tips', 'title' => t('compose tips'),
- 'callback' => 'filter_tips_long', 'access' => TRUE,
- 'type' => MENU_SUGGESTED_ITEM);
return $items;
}
diff --git a/modules/forum.module b/modules/forum.module
index 4d7269400..8c54405a7 100644
--- a/modules/forum.module
+++ b/modules/forum.module
@@ -186,15 +186,17 @@ function forum_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function forum_menu() {
+function forum_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/forum', 'title' => t('forum topic'),
- 'access' => user_access('create forum topics'));
- $items[] = array('path' => 'forum', 'title' => t('forums'),
- 'callback' => 'forum_page',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/forum', 'title' => t('forum topic'),
+ 'access' => user_access('create forum topics'));
+ $items[] = array('path' => 'forum', 'title' => t('forums'),
+ 'callback' => 'forum_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index 4d7269400..8c54405a7 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -186,15 +186,17 @@ function forum_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function forum_menu() {
+function forum_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/forum', 'title' => t('forum topic'),
- 'access' => user_access('create forum topics'));
- $items[] = array('path' => 'forum', 'title' => t('forums'),
- 'callback' => 'forum_page',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/forum', 'title' => t('forum topic'),
+ 'access' => user_access('create forum topics'));
+ $items[] = array('path' => 'forum', 'title' => t('forums'),
+ 'callback' => 'forum_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/help.module b/modules/help.module
index 1fb68e743..b3fe02ef4 100644
--- a/modules/help.module
+++ b/modules/help.module
@@ -9,22 +9,26 @@
/**
* Implementation of hook_menu().
*/
-function help_menu() {
+function help_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/help', 'title' => t('help'),
- 'callback' => 'help_main',
- 'access' => user_access('access administration pages'),
- 'weight' => 9);
- foreach (module_list() as $name) {
- if (module_hook($name, 'help')) {
- $items[] = array('path' => 'admin/help/' . $name,
- 'title' => t($name),
- 'callback' => 'help_page',
- 'type' => MENU_CALLBACK,
- 'access' => user_access('access administration pages'));
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/help', 'title' => t('help'),
+ 'callback' => 'help_main',
+ 'access' => user_access('access administration pages'),
+ 'weight' => 9);
+
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ $items[] = array('path' => 'admin/help/' . $name,
+ 'title' => t($name),
+ 'callback' => 'help_page',
+ 'type' => MENU_CALLBACK,
+ 'access' => user_access('access administration pages'));
+ }
}
}
+
return $items;
}
diff --git a/modules/help/help.module b/modules/help/help.module
index 1fb68e743..b3fe02ef4 100644
--- a/modules/help/help.module
+++ b/modules/help/help.module
@@ -9,22 +9,26 @@
/**
* Implementation of hook_menu().
*/
-function help_menu() {
+function help_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/help', 'title' => t('help'),
- 'callback' => 'help_main',
- 'access' => user_access('access administration pages'),
- 'weight' => 9);
- foreach (module_list() as $name) {
- if (module_hook($name, 'help')) {
- $items[] = array('path' => 'admin/help/' . $name,
- 'title' => t($name),
- 'callback' => 'help_page',
- 'type' => MENU_CALLBACK,
- 'access' => user_access('access administration pages'));
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/help', 'title' => t('help'),
+ 'callback' => 'help_main',
+ 'access' => user_access('access administration pages'),
+ 'weight' => 9);
+
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ $items[] = array('path' => 'admin/help/' . $name,
+ 'title' => t($name),
+ 'callback' => 'help_page',
+ 'type' => MENU_CALLBACK,
+ 'access' => user_access('access administration pages'));
+ }
}
}
+
return $items;
}
diff --git a/modules/legacy.module b/modules/legacy.module
index 662eaf81f..52348c61c 100644
--- a/modules/legacy.module
+++ b/modules/legacy.module
@@ -21,36 +21,38 @@ function legacy_help($section) {
*
* Registers menu paths used in earlier Drupal versions.
*/
-function legacy_menu() {
+function legacy_menu($may_cache) {
$items = array();
- // Map "node/view/52" to "node/52".
- $items[] = array('path' => 'node/view', 'title' => t('view'),
- 'callback' => 'drupal_goto',
- 'callback arguments' => array('node/'. arg(2), NULL, NULL),
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "book/view/52" to "node/52".
- $items[] = array('path' => 'book/view', 'title' => t('view'),
- 'callback' => 'drupal_goto',
- 'callback arguments' => array('node/'. arg(2), NULL, NULL),
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "user/view/52" to "user/52".
- $items[] = array('path' => 'user/view', 'title' => t('view'),
- 'callback' => 'drupal_goto',
- 'callback arguments' => array('user/'. arg(2), NULL, NULL),
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "taxonomy/page/or/52,97" to "taxonomy/term/52+97".
- $items[] = array('path' => 'taxonomy/page', 'title' => t('taxonomy'),
- 'callback' => 'legacy_taxonomy_page',
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "taxonomy/feed/or/52,97" to "taxonomy/term/52+97/0/feed".
- $items[] = array('path' => 'taxonomy/feed', 'title' => t('taxonomy'),
- 'callback' => 'legacy_taxonomy_feed',
- 'access' => TRUE, 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ // Map "node/view/52" to "node/52".
+ $items[] = array('path' => 'node/view', 'title' => t('view'),
+ 'callback' => 'drupal_goto',
+ 'callback arguments' => array('node/'. arg(2), NULL, NULL),
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "book/view/52" to "node/52".
+ $items[] = array('path' => 'book/view', 'title' => t('view'),
+ 'callback' => 'drupal_goto',
+ 'callback arguments' => array('node/'. arg(2), NULL, NULL),
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "user/view/52" to "user/52".
+ $items[] = array('path' => 'user/view', 'title' => t('view'),
+ 'callback' => 'drupal_goto',
+ 'callback arguments' => array('user/'. arg(2), NULL, NULL),
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "taxonomy/page/or/52,97" to "taxonomy/term/52+97".
+ $items[] = array('path' => 'taxonomy/page', 'title' => t('taxonomy'),
+ 'callback' => 'legacy_taxonomy_page',
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "taxonomy/feed/or/52,97" to "taxonomy/term/52+97/0/feed".
+ $items[] = array('path' => 'taxonomy/feed', 'title' => t('taxonomy'),
+ 'callback' => 'legacy_taxonomy_feed',
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/legacy/legacy.module b/modules/legacy/legacy.module
index 662eaf81f..52348c61c 100644
--- a/modules/legacy/legacy.module
+++ b/modules/legacy/legacy.module
@@ -21,36 +21,38 @@ function legacy_help($section) {
*
* Registers menu paths used in earlier Drupal versions.
*/
-function legacy_menu() {
+function legacy_menu($may_cache) {
$items = array();
- // Map "node/view/52" to "node/52".
- $items[] = array('path' => 'node/view', 'title' => t('view'),
- 'callback' => 'drupal_goto',
- 'callback arguments' => array('node/'. arg(2), NULL, NULL),
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "book/view/52" to "node/52".
- $items[] = array('path' => 'book/view', 'title' => t('view'),
- 'callback' => 'drupal_goto',
- 'callback arguments' => array('node/'. arg(2), NULL, NULL),
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "user/view/52" to "user/52".
- $items[] = array('path' => 'user/view', 'title' => t('view'),
- 'callback' => 'drupal_goto',
- 'callback arguments' => array('user/'. arg(2), NULL, NULL),
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "taxonomy/page/or/52,97" to "taxonomy/term/52+97".
- $items[] = array('path' => 'taxonomy/page', 'title' => t('taxonomy'),
- 'callback' => 'legacy_taxonomy_page',
- 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- // Map "taxonomy/feed/or/52,97" to "taxonomy/term/52+97/0/feed".
- $items[] = array('path' => 'taxonomy/feed', 'title' => t('taxonomy'),
- 'callback' => 'legacy_taxonomy_feed',
- 'access' => TRUE, 'type' => MENU_CALLBACK);
+ if ($may_cache) {
+ // Map "node/view/52" to "node/52".
+ $items[] = array('path' => 'node/view', 'title' => t('view'),
+ 'callback' => 'drupal_goto',
+ 'callback arguments' => array('node/'. arg(2), NULL, NULL),
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "book/view/52" to "node/52".
+ $items[] = array('path' => 'book/view', 'title' => t('view'),
+ 'callback' => 'drupal_goto',
+ 'callback arguments' => array('node/'. arg(2), NULL, NULL),
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "user/view/52" to "user/52".
+ $items[] = array('path' => 'user/view', 'title' => t('view'),
+ 'callback' => 'drupal_goto',
+ 'callback arguments' => array('user/'. arg(2), NULL, NULL),
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "taxonomy/page/or/52,97" to "taxonomy/term/52+97".
+ $items[] = array('path' => 'taxonomy/page', 'title' => t('taxonomy'),
+ 'callback' => 'legacy_taxonomy_page',
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ // Map "taxonomy/feed/or/52,97" to "taxonomy/term/52+97/0/feed".
+ $items[] = array('path' => 'taxonomy/feed', 'title' => t('taxonomy'),
+ 'callback' => 'legacy_taxonomy_feed',
+ 'access' => TRUE, 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/locale.module b/modules/locale.module
index 6669f1df0..d7caf6d56 100644
--- a/modules/locale.module
+++ b/modules/locale.module
@@ -62,46 +62,49 @@ function locale_help($section = "admin/help#locale") {
/**
* Implementation of hook_menu().
*/
-function locale_menu() {
-
+function locale_menu($may_cache) {
$items = array();
- $access = user_access('administer locales');
-
- // Main admin menu item
- $items[] = array('path' => 'admin/locale', 'title' => t('localization'),
- 'callback' => 'locale_admin_manage', 'access' => $access);
-
- // Top level tabs
- $items[] = array('path' => 'admin/locale/language', 'title' => t('manage languages'),
- 'access' => $access, 'weight' => -10, 'type' => MENU_DEFAULT_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/string/search', 'title' => t('manage strings'),
- 'callback' => 'locale_admin_string', 'access' => $access, 'weight' => 10,
- 'type' => MENU_LOCAL_TASK);
-
- // Manage languages subtabs
- $items[] = array('path' => 'admin/locale/language/overview', 'title' => t('list'),
- 'callback' => 'locale_admin_manage', 'access' => $access, "weight" => 0,
- 'type' => MENU_DEFAULT_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/language/add', 'title' => t('add language'),
- 'callback' => 'locale_admin_manage_add', 'access' => $access, "weight" => 5,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/language/import', 'title' => t('import'),
- 'callback' => 'locale_admin_import', 'access' => $access, 'weight' => 10,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/language/export', 'title' => t('export'),
- 'callback' => 'locale_admin_export', 'access' => $access, 'weight' => 20,
- 'type' => MENU_LOCAL_TASK);
-
- // Language related callbacks
- $items[] = array('path' => 'admin/locale/language/delete', 'title' => t('confirm'),
- 'callback' => 'locale_admin_manage_delete_screen', 'access' => $access,
- 'type' => MENU_CALLBACK);
-
- // String related callbacks
- $items[] = array('path' => 'admin/locale/string/edit', 'title' => t('edit'),
- 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/locale/string/delete', 'title' => t('delete'),
- 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $access = user_access('administer locales');
+
+ // Main admin menu item
+ $items[] = array('path' => 'admin/locale', 'title' => t('localization'),
+ 'callback' => 'locale_admin_manage', 'access' => $access);
+
+ // Top level tabs
+ $items[] = array('path' => 'admin/locale/language', 'title' => t('manage languages'),
+ 'access' => $access, 'weight' => -10, 'type' => MENU_DEFAULT_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/string/search', 'title' => t('manage strings'),
+ 'callback' => 'locale_admin_string', 'access' => $access, 'weight' => 10,
+ 'type' => MENU_LOCAL_TASK);
+
+ // Manage languages subtabs
+ $items[] = array('path' => 'admin/locale/language/overview', 'title' => t('list'),
+ 'callback' => 'locale_admin_manage', 'access' => $access, "weight" => 0,
+ 'type' => MENU_DEFAULT_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/language/add', 'title' => t('add language'),
+ 'callback' => 'locale_admin_manage_add', 'access' => $access, "weight" => 5,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/language/import', 'title' => t('import'),
+ 'callback' => 'locale_admin_import', 'access' => $access, 'weight' => 10,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/language/export', 'title' => t('export'),
+ 'callback' => 'locale_admin_export', 'access' => $access, 'weight' => 20,
+ 'type' => MENU_LOCAL_TASK);
+
+ // Language related callbacks
+ $items[] = array('path' => 'admin/locale/language/delete', 'title' => t('confirm'),
+ 'callback' => 'locale_admin_manage_delete_screen', 'access' => $access,
+ 'type' => MENU_CALLBACK);
+
+ // String related callbacks
+ $items[] = array('path' => 'admin/locale/string/edit', 'title' => t('edit'),
+ 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/locale/string/delete', 'title' => t('delete'),
+ 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
+ }
+
return $items;
}
diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index 6669f1df0..d7caf6d56 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -62,46 +62,49 @@ function locale_help($section = "admin/help#locale") {
/**
* Implementation of hook_menu().
*/
-function locale_menu() {
-
+function locale_menu($may_cache) {
$items = array();
- $access = user_access('administer locales');
-
- // Main admin menu item
- $items[] = array('path' => 'admin/locale', 'title' => t('localization'),
- 'callback' => 'locale_admin_manage', 'access' => $access);
-
- // Top level tabs
- $items[] = array('path' => 'admin/locale/language', 'title' => t('manage languages'),
- 'access' => $access, 'weight' => -10, 'type' => MENU_DEFAULT_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/string/search', 'title' => t('manage strings'),
- 'callback' => 'locale_admin_string', 'access' => $access, 'weight' => 10,
- 'type' => MENU_LOCAL_TASK);
-
- // Manage languages subtabs
- $items[] = array('path' => 'admin/locale/language/overview', 'title' => t('list'),
- 'callback' => 'locale_admin_manage', 'access' => $access, "weight" => 0,
- 'type' => MENU_DEFAULT_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/language/add', 'title' => t('add language'),
- 'callback' => 'locale_admin_manage_add', 'access' => $access, "weight" => 5,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/language/import', 'title' => t('import'),
- 'callback' => 'locale_admin_import', 'access' => $access, 'weight' => 10,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/locale/language/export', 'title' => t('export'),
- 'callback' => 'locale_admin_export', 'access' => $access, 'weight' => 20,
- 'type' => MENU_LOCAL_TASK);
-
- // Language related callbacks
- $items[] = array('path' => 'admin/locale/language/delete', 'title' => t('confirm'),
- 'callback' => 'locale_admin_manage_delete_screen', 'access' => $access,
- 'type' => MENU_CALLBACK);
-
- // String related callbacks
- $items[] = array('path' => 'admin/locale/string/edit', 'title' => t('edit'),
- 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/locale/string/delete', 'title' => t('delete'),
- 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $access = user_access('administer locales');
+
+ // Main admin menu item
+ $items[] = array('path' => 'admin/locale', 'title' => t('localization'),
+ 'callback' => 'locale_admin_manage', 'access' => $access);
+
+ // Top level tabs
+ $items[] = array('path' => 'admin/locale/language', 'title' => t('manage languages'),
+ 'access' => $access, 'weight' => -10, 'type' => MENU_DEFAULT_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/string/search', 'title' => t('manage strings'),
+ 'callback' => 'locale_admin_string', 'access' => $access, 'weight' => 10,
+ 'type' => MENU_LOCAL_TASK);
+
+ // Manage languages subtabs
+ $items[] = array('path' => 'admin/locale/language/overview', 'title' => t('list'),
+ 'callback' => 'locale_admin_manage', 'access' => $access, "weight" => 0,
+ 'type' => MENU_DEFAULT_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/language/add', 'title' => t('add language'),
+ 'callback' => 'locale_admin_manage_add', 'access' => $access, "weight" => 5,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/language/import', 'title' => t('import'),
+ 'callback' => 'locale_admin_import', 'access' => $access, 'weight' => 10,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/locale/language/export', 'title' => t('export'),
+ 'callback' => 'locale_admin_export', 'access' => $access, 'weight' => 20,
+ 'type' => MENU_LOCAL_TASK);
+
+ // Language related callbacks
+ $items[] = array('path' => 'admin/locale/language/delete', 'title' => t('confirm'),
+ 'callback' => 'locale_admin_manage_delete_screen', 'access' => $access,
+ 'type' => MENU_CALLBACK);
+
+ // String related callbacks
+ $items[] = array('path' => 'admin/locale/string/edit', 'title' => t('edit'),
+ 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/locale/string/delete', 'title' => t('delete'),
+ 'callback' => 'locale_admin_string', 'access' => $access, 'type' => MENU_CALLBACK);
+ }
+
return $items;
}
diff --git a/modules/menu.module b/modules/menu.module
index 916c31903..fb3c042fb 100644
--- a/modules/menu.module
+++ b/modules/menu.module
@@ -9,42 +9,45 @@
/**
* Implementation of hook_menu().
*/
-function menu_menu() {
+function menu_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/menu', 'title' => t('menus'),
- 'callback' => 'menu_overview',
- 'access' => user_access('administer menu'));
- $items[] = array('path' => 'admin/menu/item/edit', 'title' => t('edit menu item'),
- 'callback' => 'menu_edit_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/menu/item/reset', 'title' => t('reset menu item'),
- 'callback' => 'menu_reset_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/menu/item/disable', 'title' => t('disable menu item'),
- 'callback' => 'menu_disable_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/menu/item/delete', 'title' => t('delete menu item'),
- 'callback' => 'menu_delete_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'admin/menu/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/menu/menu/add', 'title' => t('add menu'),
- 'callback' => 'menu_add_menu',
- 'access' => user_access('administer menu'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/menu/item/add', 'title' => t('add menu item'),
- 'callback' => 'menu_edit_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/menu/reset', 'title' => t('reset menus'),
- 'callback' => 'menu_reset',
- 'access' => user_access('administer menu'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/menu', 'title' => t('menus'),
+ 'callback' => 'menu_overview',
+ 'access' => user_access('administer menu'));
+ $items[] = array('path' => 'admin/menu/item/edit', 'title' => t('edit menu item'),
+ 'callback' => 'menu_edit_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/menu/item/reset', 'title' => t('reset menu item'),
+ 'callback' => 'menu_reset_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/menu/item/disable', 'title' => t('disable menu item'),
+ 'callback' => 'menu_disable_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/menu/item/delete', 'title' => t('delete menu item'),
+ 'callback' => 'menu_delete_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'admin/menu/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/menu/menu/add', 'title' => t('add menu'),
+ 'callback' => 'menu_add_menu',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/menu/item/add', 'title' => t('add menu item'),
+ 'callback' => 'menu_edit_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/menu/reset', 'title' => t('reset menus'),
+ 'callback' => 'menu_reset',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_LOCAL_TASK);
+ }
return $items;
}
@@ -334,8 +337,6 @@ function menu_edit_item_save($edit) {
drupal_set_message(t('Since a menu item %old already exists for %path, this new menu item was created as a shortcut to that location.', array('%old' => l('<em>'. $old_item['title'] .'</em>', 'admin/menu/item/edit/'. $old_mid), '%path' => '<em>'. $edit['path'] .'</em>')));
}
}
-
- menu_rebuild();
}
/**
diff --git a/modules/menu/menu.module b/modules/menu/menu.module
index 916c31903..fb3c042fb 100644
--- a/modules/menu/menu.module
+++ b/modules/menu/menu.module
@@ -9,42 +9,45 @@
/**
* Implementation of hook_menu().
*/
-function menu_menu() {
+function menu_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/menu', 'title' => t('menus'),
- 'callback' => 'menu_overview',
- 'access' => user_access('administer menu'));
- $items[] = array('path' => 'admin/menu/item/edit', 'title' => t('edit menu item'),
- 'callback' => 'menu_edit_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/menu/item/reset', 'title' => t('reset menu item'),
- 'callback' => 'menu_reset_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/menu/item/disable', 'title' => t('disable menu item'),
- 'callback' => 'menu_disable_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/menu/item/delete', 'title' => t('delete menu item'),
- 'callback' => 'menu_delete_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'admin/menu/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/menu/menu/add', 'title' => t('add menu'),
- 'callback' => 'menu_add_menu',
- 'access' => user_access('administer menu'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/menu/item/add', 'title' => t('add menu item'),
- 'callback' => 'menu_edit_item',
- 'access' => user_access('administer menu'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/menu/reset', 'title' => t('reset menus'),
- 'callback' => 'menu_reset',
- 'access' => user_access('administer menu'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/menu', 'title' => t('menus'),
+ 'callback' => 'menu_overview',
+ 'access' => user_access('administer menu'));
+ $items[] = array('path' => 'admin/menu/item/edit', 'title' => t('edit menu item'),
+ 'callback' => 'menu_edit_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/menu/item/reset', 'title' => t('reset menu item'),
+ 'callback' => 'menu_reset_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/menu/item/disable', 'title' => t('disable menu item'),
+ 'callback' => 'menu_disable_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/menu/item/delete', 'title' => t('delete menu item'),
+ 'callback' => 'menu_delete_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'admin/menu/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/menu/menu/add', 'title' => t('add menu'),
+ 'callback' => 'menu_add_menu',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/menu/item/add', 'title' => t('add menu item'),
+ 'callback' => 'menu_edit_item',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/menu/reset', 'title' => t('reset menus'),
+ 'callback' => 'menu_reset',
+ 'access' => user_access('administer menu'),
+ 'type' => MENU_LOCAL_TASK);
+ }
return $items;
}
@@ -334,8 +337,6 @@ function menu_edit_item_save($edit) {
drupal_set_message(t('Since a menu item %old already exists for %path, this new menu item was created as a shortcut to that location.', array('%old' => l('<em>'. $old_item['title'] .'</em>', 'admin/menu/item/edit/'. $old_mid), '%path' => '<em>'. $edit['path'] .'</em>')));
}
}
-
- menu_rebuild();
}
/**
diff --git a/modules/node.module b/modules/node.module
index c7497a04c..9c7156ba2 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -626,62 +626,65 @@ function node_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function node_menu() {
+function node_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/node', 'title' => t('content'),
- 'callback' => 'node_admin',
- 'access' => user_access('administer nodes'));
- $items[] = array('path' => 'admin/node/overview', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/node/configure', 'title' => t('configure'),
- 'callback' => 'node_configure',
- 'access' => user_access('administer nodes'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/node/configure/settings', 'title' => t('settings'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/node/configure/defaults', 'title' => t('default workflow'),
- 'callback' => 'node_default_settings',
- 'access' => user_access('administer nodes'),
- 'type' => MENU_LOCAL_TASK);
- if (module_exist('search')) {
- $items[] = array('path' => 'admin/node/search', 'title' => t('search'),
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/node', 'title' => t('content'),
'callback' => 'node_admin',
+ 'access' => user_access('administer nodes'));
+ $items[] = array('path' => 'admin/node/overview', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/node/configure', 'title' => t('configure'),
+ 'callback' => 'node_configure',
'access' => user_access('administer nodes'),
'type' => MENU_LOCAL_TASK);
- }
-
- $items[] = array('path' => 'node', 'title' => t('content'),
- 'callback' => 'node_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'node/add', 'title' => t('create content'),
- 'callback' => 'node_page',
- 'access' => user_access('access content'),
- 'type' => MENU_ITEM_GROUPING,
- 'weight' => 1);
-
- if (arg(0) == 'node' && is_numeric(arg(1))) {
- $node = node_load(array('nid' => arg(1)));
+ $items[] = array('path' => 'admin/node/configure/settings', 'title' => t('settings'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/node/configure/defaults', 'title' => t('default workflow'),
+ 'callback' => 'node_default_settings',
+ 'access' => user_access('administer nodes'),
+ 'type' => MENU_LOCAL_TASK);
+ if (module_exist('search')) {
+ $items[] = array('path' => 'admin/node/search', 'title' => t('search'),
+ 'callback' => 'node_admin',
+ 'access' => user_access('administer nodes'),
+ 'type' => MENU_LOCAL_TASK);
+ }
- $items[] = array('path' => 'node/'. arg(1), 'title' => t('view'),
+ $items[] = array('path' => 'node', 'title' => t('content'),
'callback' => 'node_page',
- 'access' => node_access('view', $node),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'node/'. arg(1) .'/view', 'title' => t('view'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('edit'),
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'node/add', 'title' => t('create content'),
'callback' => 'node_page',
- 'access' => node_access('update', $node),
- 'weight' => 1,
- 'type' => MENU_LOCAL_TASK);
+ 'access' => user_access('access content'),
+ 'type' => MENU_ITEM_GROUPING,
+ 'weight' => 1);
+ }
+ else {
+ if (arg(0) == 'node' && is_numeric(arg(1))) {
+ $node = node_load(array('nid' => arg(1)));
- if ($node->revisions) {
- $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'),
+ $items[] = array('path' => 'node/'. arg(1), 'title' => t('view'),
'callback' => 'node_page',
- 'access' => user_access('administer nodes'),
- 'weight' => 2,
+ 'access' => node_access('view', $node),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'node/'. arg(1) .'/view', 'title' => t('view'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('edit'),
+ 'callback' => 'node_page',
+ 'access' => node_access('update', $node),
+ 'weight' => 1,
'type' => MENU_LOCAL_TASK);
+
+ if ($node->revisions) {
+ $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'),
+ 'callback' => 'node_page',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 2,
+ 'type' => MENU_LOCAL_TASK);
+ }
}
}
diff --git a/modules/node/node.module b/modules/node/node.module
index c7497a04c..9c7156ba2 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -626,62 +626,65 @@ function node_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function node_menu() {
+function node_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/node', 'title' => t('content'),
- 'callback' => 'node_admin',
- 'access' => user_access('administer nodes'));
- $items[] = array('path' => 'admin/node/overview', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/node/configure', 'title' => t('configure'),
- 'callback' => 'node_configure',
- 'access' => user_access('administer nodes'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/node/configure/settings', 'title' => t('settings'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/node/configure/defaults', 'title' => t('default workflow'),
- 'callback' => 'node_default_settings',
- 'access' => user_access('administer nodes'),
- 'type' => MENU_LOCAL_TASK);
- if (module_exist('search')) {
- $items[] = array('path' => 'admin/node/search', 'title' => t('search'),
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/node', 'title' => t('content'),
'callback' => 'node_admin',
+ 'access' => user_access('administer nodes'));
+ $items[] = array('path' => 'admin/node/overview', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/node/configure', 'title' => t('configure'),
+ 'callback' => 'node_configure',
'access' => user_access('administer nodes'),
'type' => MENU_LOCAL_TASK);
- }
-
- $items[] = array('path' => 'node', 'title' => t('content'),
- 'callback' => 'node_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'node/add', 'title' => t('create content'),
- 'callback' => 'node_page',
- 'access' => user_access('access content'),
- 'type' => MENU_ITEM_GROUPING,
- 'weight' => 1);
-
- if (arg(0) == 'node' && is_numeric(arg(1))) {
- $node = node_load(array('nid' => arg(1)));
+ $items[] = array('path' => 'admin/node/configure/settings', 'title' => t('settings'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/node/configure/defaults', 'title' => t('default workflow'),
+ 'callback' => 'node_default_settings',
+ 'access' => user_access('administer nodes'),
+ 'type' => MENU_LOCAL_TASK);
+ if (module_exist('search')) {
+ $items[] = array('path' => 'admin/node/search', 'title' => t('search'),
+ 'callback' => 'node_admin',
+ 'access' => user_access('administer nodes'),
+ 'type' => MENU_LOCAL_TASK);
+ }
- $items[] = array('path' => 'node/'. arg(1), 'title' => t('view'),
+ $items[] = array('path' => 'node', 'title' => t('content'),
'callback' => 'node_page',
- 'access' => node_access('view', $node),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'node/'. arg(1) .'/view', 'title' => t('view'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('edit'),
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'node/add', 'title' => t('create content'),
'callback' => 'node_page',
- 'access' => node_access('update', $node),
- 'weight' => 1,
- 'type' => MENU_LOCAL_TASK);
+ 'access' => user_access('access content'),
+ 'type' => MENU_ITEM_GROUPING,
+ 'weight' => 1);
+ }
+ else {
+ if (arg(0) == 'node' && is_numeric(arg(1))) {
+ $node = node_load(array('nid' => arg(1)));
- if ($node->revisions) {
- $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'),
+ $items[] = array('path' => 'node/'. arg(1), 'title' => t('view'),
'callback' => 'node_page',
- 'access' => user_access('administer nodes'),
- 'weight' => 2,
+ 'access' => node_access('view', $node),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'node/'. arg(1) .'/view', 'title' => t('view'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('edit'),
+ 'callback' => 'node_page',
+ 'access' => node_access('update', $node),
+ 'weight' => 1,
'type' => MENU_LOCAL_TASK);
+
+ if ($node->revisions) {
+ $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'),
+ 'callback' => 'node_page',
+ 'access' => user_access('administer nodes'),
+ 'weight' => 2,
+ 'type' => MENU_LOCAL_TASK);
+ }
}
}
diff --git a/modules/page.module b/modules/page.module
index 6dc7c2441..a73da4679 100644
--- a/modules/page.module
+++ b/modules/page.module
@@ -87,10 +87,14 @@ function page_load($node) {
/**
* Implementation of hook_menu().
*/
-function page_menu() {
+function page_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/page', 'title' => t('page'),
- 'access' => page_access('create', NULL));
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/page', 'title' => t('page'),
+ 'access' => page_access('create', NULL));
+ }
+
return $items;
}
diff --git a/modules/page/page.module b/modules/page/page.module
index 6dc7c2441..a73da4679 100644
--- a/modules/page/page.module
+++ b/modules/page/page.module
@@ -87,10 +87,14 @@ function page_load($node) {
/**
* Implementation of hook_menu().
*/
-function page_menu() {
+function page_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/page', 'title' => t('page'),
- 'access' => page_access('create', NULL));
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/page', 'title' => t('page'),
+ 'access' => page_access('create', NULL));
+ }
+
return $items;
}
diff --git a/modules/path.module b/modules/path.module
index daa53bf58..20348d592 100644
--- a/modules/path.module
+++ b/modules/path.module
@@ -65,25 +65,29 @@ function conf_url_rewrite(\$path, \$mode = 'incoming') {
/**
* Implementation of hook_menu().
*/
-function path_menu() {
+function path_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/path', 'title' => t('url aliases'),
- 'callback' => 'path_admin',
- 'access' => user_access('administer url aliases'));
- $items[] = array('path' => 'admin/path/edit', 'title' => t('edit alias'),
- 'callback' => 'path_admin_edit',
- 'access' => user_access('administer url aliases'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/path/delete', 'title' => t('delete alias'),
- 'callback' => 'path_admin_delete',
- 'access' => user_access('administer url aliases'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/path/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/path/add', 'title' => t('add'),
- 'callback' => 'path_admin_edit',
- 'access' => user_access('administer url aliases'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/path', 'title' => t('url aliases'),
+ 'callback' => 'path_admin',
+ 'access' => user_access('administer url aliases'));
+ $items[] = array('path' => 'admin/path/edit', 'title' => t('edit alias'),
+ 'callback' => 'path_admin_edit',
+ 'access' => user_access('administer url aliases'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/path/delete', 'title' => t('delete alias'),
+ 'callback' => 'path_admin_delete',
+ 'access' => user_access('administer url aliases'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/path/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/path/add', 'title' => t('add'),
+ 'callback' => 'path_admin_edit',
+ 'access' => user_access('administer url aliases'),
+ 'type' => MENU_LOCAL_TASK);
+ }
+
return $items;
}
diff --git a/modules/path/path.module b/modules/path/path.module
index daa53bf58..20348d592 100644
--- a/modules/path/path.module
+++ b/modules/path/path.module
@@ -65,25 +65,29 @@ function conf_url_rewrite(\$path, \$mode = 'incoming') {
/**
* Implementation of hook_menu().
*/
-function path_menu() {
+function path_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/path', 'title' => t('url aliases'),
- 'callback' => 'path_admin',
- 'access' => user_access('administer url aliases'));
- $items[] = array('path' => 'admin/path/edit', 'title' => t('edit alias'),
- 'callback' => 'path_admin_edit',
- 'access' => user_access('administer url aliases'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/path/delete', 'title' => t('delete alias'),
- 'callback' => 'path_admin_delete',
- 'access' => user_access('administer url aliases'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/path/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/path/add', 'title' => t('add'),
- 'callback' => 'path_admin_edit',
- 'access' => user_access('administer url aliases'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/path', 'title' => t('url aliases'),
+ 'callback' => 'path_admin',
+ 'access' => user_access('administer url aliases'));
+ $items[] = array('path' => 'admin/path/edit', 'title' => t('edit alias'),
+ 'callback' => 'path_admin_edit',
+ 'access' => user_access('administer url aliases'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/path/delete', 'title' => t('delete alias'),
+ 'callback' => 'path_admin_delete',
+ 'access' => user_access('administer url aliases'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/path/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/path/add', 'title' => t('add'),
+ 'callback' => 'path_admin_edit',
+ 'access' => user_access('administer url aliases'),
+ 'type' => MENU_LOCAL_TASK);
+ }
+
return $items;
}
diff --git a/modules/poll.module b/modules/poll.module
index e39735011..2fe6207b8 100644
--- a/modules/poll.module
+++ b/modules/poll.module
@@ -195,33 +195,38 @@ function poll_link($type, $node = 0, $main) {
/**
* Implementation of hook_menu().
*/
-function poll_menu() {
+function poll_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/poll', 'title' => t('poll'),
- 'access' => user_access('create polls'));
- $items[] = array('path' => 'poll', 'title' => t('polls'),
- 'callback' => 'poll_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
-
- $items[] = array('path' => 'poll/vote',
- 'title' => t('vote'),
- 'callback' => 'poll_vote',
- 'access' => user_access('vote on polls'),
- 'type' => MENU_CALLBACK);
-
- if (arg(0) == 'node' && is_numeric(arg(1))) {
- $node = node_load(array('nid' => arg(1)));
-
- if ($node->type == 'poll' && $node->allowvotes) {
- $items[] = array('path' => 'node/'. arg(1) .'/results',
- 'title' => t('results'),
- 'callback' => 'poll_results',
- 'access' => user_access('access content'),
- 'weight' => 3,
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/poll', 'title' => t('poll'),
+ 'access' => user_access('create polls'));
+ $items[] = array('path' => 'poll', 'title' => t('polls'),
+ 'callback' => 'poll_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+
+ $items[] = array('path' => 'poll/vote',
+ 'title' => t('vote'),
+ 'callback' => 'poll_vote',
+ 'access' => user_access('vote on polls'),
+ 'type' => MENU_CALLBACK);
+ }
+ else {
+ if (arg(0) == 'node' && is_numeric(arg(1))) {
+ $node = node_load(array('nid' => arg(1)));
+
+ if ($node->type == 'poll' && $node->allowvotes) {
+ $items[] = array('path' => 'node/'. arg(1) .'/results',
+ 'title' => t('results'),
+ 'callback' => 'poll_results',
+ 'access' => user_access('access content'),
+ 'weight' => 3,
+ 'type' => MENU_LOCAL_TASK);
+ }
}
}
+
return $items;
}
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index e39735011..2fe6207b8 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -195,33 +195,38 @@ function poll_link($type, $node = 0, $main) {
/**
* Implementation of hook_menu().
*/
-function poll_menu() {
+function poll_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/poll', 'title' => t('poll'),
- 'access' => user_access('create polls'));
- $items[] = array('path' => 'poll', 'title' => t('polls'),
- 'callback' => 'poll_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
-
- $items[] = array('path' => 'poll/vote',
- 'title' => t('vote'),
- 'callback' => 'poll_vote',
- 'access' => user_access('vote on polls'),
- 'type' => MENU_CALLBACK);
-
- if (arg(0) == 'node' && is_numeric(arg(1))) {
- $node = node_load(array('nid' => arg(1)));
-
- if ($node->type == 'poll' && $node->allowvotes) {
- $items[] = array('path' => 'node/'. arg(1) .'/results',
- 'title' => t('results'),
- 'callback' => 'poll_results',
- 'access' => user_access('access content'),
- 'weight' => 3,
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/poll', 'title' => t('poll'),
+ 'access' => user_access('create polls'));
+ $items[] = array('path' => 'poll', 'title' => t('polls'),
+ 'callback' => 'poll_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+
+ $items[] = array('path' => 'poll/vote',
+ 'title' => t('vote'),
+ 'callback' => 'poll_vote',
+ 'access' => user_access('vote on polls'),
+ 'type' => MENU_CALLBACK);
+ }
+ else {
+ if (arg(0) == 'node' && is_numeric(arg(1))) {
+ $node = node_load(array('nid' => arg(1)));
+
+ if ($node->type == 'poll' && $node->allowvotes) {
+ $items[] = array('path' => 'node/'. arg(1) .'/results',
+ 'title' => t('results'),
+ 'callback' => 'poll_results',
+ 'access' => user_access('access content'),
+ 'weight' => 3,
+ 'type' => MENU_LOCAL_TASK);
+ }
}
}
+
return $items;
}
diff --git a/modules/profile.module b/modules/profile.module
index e379d75db..2aef8aa03 100644
--- a/modules/profile.module
+++ b/modules/profile.module
@@ -26,30 +26,32 @@ function profile_help($section) {
/**
* Implementation of hook_menu().
*/
-function profile_menu() {
+function profile_menu($may_cache) {
global $user;
-
$items = array();
- $items[] = array('path' => 'profile', 'title' => t('user list'),
- 'callback' => 'profile_browse',
- 'access' => TRUE,
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'admin/user/configure/profile', 'title' => t('profiles'),
- 'callback' => 'profile_admin_overview',
- 'access' => user_access('administer users'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/profile/add', 'title' => t('add field'),
- 'callback' => 'profile_admin_add',
- 'access' => user_access('administer users'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/user/configure/profile/edit', 'title' => t('edit field'),
- 'callback' => 'profile_admin_edit',
- 'access' => user_access('administer users'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/user/configure/profile/delete', 'title' => t('delete field'),
- 'callback' => 'profile_admin_delete',
- 'access' => user_access('administer users'),
- 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'profile', 'title' => t('user list'),
+ 'callback' => 'profile_browse',
+ 'access' => TRUE,
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'admin/user/configure/profile', 'title' => t('profiles'),
+ 'callback' => 'profile_admin_overview',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/profile/add', 'title' => t('add field'),
+ 'callback' => 'profile_admin_add',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/user/configure/profile/edit', 'title' => t('edit field'),
+ 'callback' => 'profile_admin_edit',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/user/configure/profile/delete', 'title' => t('delete field'),
+ 'callback' => 'profile_admin_delete',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/profile/profile.module b/modules/profile/profile.module
index e379d75db..2aef8aa03 100644
--- a/modules/profile/profile.module
+++ b/modules/profile/profile.module
@@ -26,30 +26,32 @@ function profile_help($section) {
/**
* Implementation of hook_menu().
*/
-function profile_menu() {
+function profile_menu($may_cache) {
global $user;
-
$items = array();
- $items[] = array('path' => 'profile', 'title' => t('user list'),
- 'callback' => 'profile_browse',
- 'access' => TRUE,
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'admin/user/configure/profile', 'title' => t('profiles'),
- 'callback' => 'profile_admin_overview',
- 'access' => user_access('administer users'),
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/profile/add', 'title' => t('add field'),
- 'callback' => 'profile_admin_add',
- 'access' => user_access('administer users'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/user/configure/profile/edit', 'title' => t('edit field'),
- 'callback' => 'profile_admin_edit',
- 'access' => user_access('administer users'),
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'admin/user/configure/profile/delete', 'title' => t('delete field'),
- 'callback' => 'profile_admin_delete',
- 'access' => user_access('administer users'),
- 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'profile', 'title' => t('user list'),
+ 'callback' => 'profile_browse',
+ 'access' => TRUE,
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'admin/user/configure/profile', 'title' => t('profiles'),
+ 'callback' => 'profile_admin_overview',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/profile/add', 'title' => t('add field'),
+ 'callback' => 'profile_admin_add',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/user/configure/profile/edit', 'title' => t('edit field'),
+ 'callback' => 'profile_admin_edit',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/user/configure/profile/delete', 'title' => t('delete field'),
+ 'callback' => 'profile_admin_delete',
+ 'access' => user_access('administer users'),
+ 'type' => MENU_CALLBACK);
+ }
return $items;
}
diff --git a/modules/queue.module b/modules/queue.module
index a0f9923b6..5176ef971 100644
--- a/modules/queue.module
+++ b/modules/queue.module
@@ -40,12 +40,16 @@ function queue_perm() {
/**
* Implementation of hook_menu().
*/
-function queue_menu($type) {
+function queue_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'queue', 'title' => t('submission queue'),
- 'callback' => 'queue_page',
- 'access' => user_access('access submission queue'),
- 'weight' => 1);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'queue', 'title' => t('submission queue'),
+ 'callback' => 'queue_page',
+ 'access' => user_access('access submission queue'),
+ 'weight' => 1);
+ }
+
return $items;
}
diff --git a/modules/search.module b/modules/search.module
index f42c1e2ba..c7422ac81 100644
--- a/modules/search.module
+++ b/modules/search.module
@@ -47,22 +47,26 @@ function search_link($type) {
/**
* Implementation of hook_menu().
*/
-function search_menu() {
+function search_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'search', 'title' => t('search'),
- 'callback' => 'search_view',
- 'access' => user_access('search content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'search/help', 'title' => t('search help'),
- 'callback' => 'search_help_page',
- 'access' => user_access('search content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'search/search', 'title' => t('search'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'search/configure', 'title' => t('configure'),
- 'callback' => 'search_configure',
- 'access' => user_access('administer site configuration'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'search', 'title' => t('search'),
+ 'callback' => 'search_view',
+ 'access' => user_access('search content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'search/help', 'title' => t('search help'),
+ 'callback' => 'search_help_page',
+ 'access' => user_access('search content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'search/search', 'title' => t('search'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'search/configure', 'title' => t('configure'),
+ 'callback' => 'search_configure',
+ 'access' => user_access('administer site configuration'),
+ 'type' => MENU_LOCAL_TASK);
+ }
+
return $items;
}
diff --git a/modules/search/search.module b/modules/search/search.module
index f42c1e2ba..c7422ac81 100644
--- a/modules/search/search.module
+++ b/modules/search/search.module
@@ -47,22 +47,26 @@ function search_link($type) {
/**
* Implementation of hook_menu().
*/
-function search_menu() {
+function search_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'search', 'title' => t('search'),
- 'callback' => 'search_view',
- 'access' => user_access('search content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'search/help', 'title' => t('search help'),
- 'callback' => 'search_help_page',
- 'access' => user_access('search content'),
- 'type' => MENU_SUGGESTED_ITEM);
- $items[] = array('path' => 'search/search', 'title' => t('search'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'search/configure', 'title' => t('configure'),
- 'callback' => 'search_configure',
- 'access' => user_access('administer site configuration'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'search', 'title' => t('search'),
+ 'callback' => 'search_view',
+ 'access' => user_access('search content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'search/help', 'title' => t('search help'),
+ 'callback' => 'search_help_page',
+ 'access' => user_access('search content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+ $items[] = array('path' => 'search/search', 'title' => t('search'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'search/configure', 'title' => t('configure'),
+ 'callback' => 'search_configure',
+ 'access' => user_access('administer site configuration'),
+ 'type' => MENU_LOCAL_TASK);
+ }
+
return $items;
}
diff --git a/modules/statistics.module b/modules/statistics.module
index 10029d9d3..4df088ed2 100644
--- a/modules/statistics.module
+++ b/modules/statistics.module
@@ -153,36 +153,40 @@ function statistics_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function statistics_menu() {
+function statistics_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'statistics', 'title' => t('most popular content'),
- 'callback' => 'statistics_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
-
- $access = user_access('administer statistics module') || user_access('administer statistics');
- $items[] = array('path' => 'admin/logs/hits', 'title' => t('hits'),
- 'callback' => 'statistics_admin_displaylog', 'access' => $access,
- 'weight' => 3);
- $items[] = array('path' => 'admin/logs/hits/posts', 'title' => t('posts'),
- 'callback' => 'statistics_admin_content', 'access' => $access,
- 'weight' => 1);
- $items[] = array('path' => 'admin/logs/hits/pages', 'title' => t('pages'),
- 'callback' => 'statistics_top_titles', 'access' => $access,
- 'weight' => 1);
- $items[] = array('path' => 'admin/logs/hits/users', 'title' => t('users'),
- 'callback' => 'statistics_top_users', 'access' => $access,
- 'weight' => 2);
- $items[] = array('path' => 'admin/logs/hits/hostnames',
- 'title' => t('hostnames'), 'callback' => 'statistics_top_hostnames',
- 'access' => $access, 'weight' => 3);
- $items[] = array('path' => 'admin/logs/referrers',
- 'title' => t('referrers'), 'callback' => 'statistics_top_referrers',
- 'access' => $access, 'weight' => 4);
- $items[] = array('path' => 'admin/logs/referrers/internal',
- 'title' => t('internal'), 'access' => $access);
- $items[] = array('path' => 'admin/logs/referrers/external',
- 'title' => t('external'), 'access' => $access);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'statistics', 'title' => t('most popular content'),
+ 'callback' => 'statistics_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+
+ $access = user_access('administer statistics module') || user_access('administer statistics');
+ $items[] = array('path' => 'admin/logs/hits', 'title' => t('hits'),
+ 'callback' => 'statistics_admin_displaylog', 'access' => $access,
+ 'weight' => 3);
+ $items[] = array('path' => 'admin/logs/hits/posts', 'title' => t('posts'),
+ 'callback' => 'statistics_admin_content', 'access' => $access,
+ 'weight' => 1);
+ $items[] = array('path' => 'admin/logs/hits/pages', 'title' => t('pages'),
+ 'callback' => 'statistics_top_titles', 'access' => $access,
+ 'weight' => 1);
+ $items[] = array('path' => 'admin/logs/hits/users', 'title' => t('users'),
+ 'callback' => 'statistics_top_users', 'access' => $access,
+ 'weight' => 2);
+ $items[] = array('path' => 'admin/logs/hits/hostnames',
+ 'title' => t('hostnames'), 'callback' => 'statistics_top_hostnames',
+ 'access' => $access, 'weight' => 3);
+ $items[] = array('path' => 'admin/logs/referrers',
+ 'title' => t('referrers'), 'callback' => 'statistics_top_referrers',
+ 'access' => $access, 'weight' => 4);
+ $items[] = array('path' => 'admin/logs/referrers/internal',
+ 'title' => t('internal'), 'access' => $access);
+ $items[] = array('path' => 'admin/logs/referrers/external',
+ 'title' => t('external'), 'access' => $access);
+ }
+
return $items;
}
diff --git a/modules/statistics/statistics.module b/modules/statistics/statistics.module
index 10029d9d3..4df088ed2 100644
--- a/modules/statistics/statistics.module
+++ b/modules/statistics/statistics.module
@@ -153,36 +153,40 @@ function statistics_link($type, $node = 0, $main = 0) {
/**
* Implementation of hook_menu().
*/
-function statistics_menu() {
+function statistics_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'statistics', 'title' => t('most popular content'),
- 'callback' => 'statistics_page',
- 'access' => user_access('access content'),
- 'type' => MENU_SUGGESTED_ITEM);
-
- $access = user_access('administer statistics module') || user_access('administer statistics');
- $items[] = array('path' => 'admin/logs/hits', 'title' => t('hits'),
- 'callback' => 'statistics_admin_displaylog', 'access' => $access,
- 'weight' => 3);
- $items[] = array('path' => 'admin/logs/hits/posts', 'title' => t('posts'),
- 'callback' => 'statistics_admin_content', 'access' => $access,
- 'weight' => 1);
- $items[] = array('path' => 'admin/logs/hits/pages', 'title' => t('pages'),
- 'callback' => 'statistics_top_titles', 'access' => $access,
- 'weight' => 1);
- $items[] = array('path' => 'admin/logs/hits/users', 'title' => t('users'),
- 'callback' => 'statistics_top_users', 'access' => $access,
- 'weight' => 2);
- $items[] = array('path' => 'admin/logs/hits/hostnames',
- 'title' => t('hostnames'), 'callback' => 'statistics_top_hostnames',
- 'access' => $access, 'weight' => 3);
- $items[] = array('path' => 'admin/logs/referrers',
- 'title' => t('referrers'), 'callback' => 'statistics_top_referrers',
- 'access' => $access, 'weight' => 4);
- $items[] = array('path' => 'admin/logs/referrers/internal',
- 'title' => t('internal'), 'access' => $access);
- $items[] = array('path' => 'admin/logs/referrers/external',
- 'title' => t('external'), 'access' => $access);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'statistics', 'title' => t('most popular content'),
+ 'callback' => 'statistics_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_SUGGESTED_ITEM);
+
+ $access = user_access('administer statistics module') || user_access('administer statistics');
+ $items[] = array('path' => 'admin/logs/hits', 'title' => t('hits'),
+ 'callback' => 'statistics_admin_displaylog', 'access' => $access,
+ 'weight' => 3);
+ $items[] = array('path' => 'admin/logs/hits/posts', 'title' => t('posts'),
+ 'callback' => 'statistics_admin_content', 'access' => $access,
+ 'weight' => 1);
+ $items[] = array('path' => 'admin/logs/hits/pages', 'title' => t('pages'),
+ 'callback' => 'statistics_top_titles', 'access' => $access,
+ 'weight' => 1);
+ $items[] = array('path' => 'admin/logs/hits/users', 'title' => t('users'),
+ 'callback' => 'statistics_top_users', 'access' => $access,
+ 'weight' => 2);
+ $items[] = array('path' => 'admin/logs/hits/hostnames',
+ 'title' => t('hostnames'), 'callback' => 'statistics_top_hostnames',
+ 'access' => $access, 'weight' => 3);
+ $items[] = array('path' => 'admin/logs/referrers',
+ 'title' => t('referrers'), 'callback' => 'statistics_top_referrers',
+ 'access' => $access, 'weight' => 4);
+ $items[] = array('path' => 'admin/logs/referrers/internal',
+ 'title' => t('internal'), 'access' => $access);
+ $items[] = array('path' => 'admin/logs/referrers/external',
+ 'title' => t('external'), 'access' => $access);
+ }
+
return $items;
}
diff --git a/modules/story.module b/modules/story.module
index f7b06782a..90214812a 100644
--- a/modules/story.module
+++ b/modules/story.module
@@ -90,10 +90,14 @@ function story_link($type, $node = 0, $main) {
/**
* Implementation of hook_menu().
*/
-function story_menu() {
+function story_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/story', 'title' => t('story'),
- 'access' => story_access('create', NULL));
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/story', 'title' => t('story'),
+ 'access' => story_access('create', NULL));
+ }
+
return $items;
}
diff --git a/modules/story/story.module b/modules/story/story.module
index f7b06782a..90214812a 100644
--- a/modules/story/story.module
+++ b/modules/story/story.module
@@ -90,10 +90,14 @@ function story_link($type, $node = 0, $main) {
/**
* Implementation of hook_menu().
*/
-function story_menu() {
+function story_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'node/add/story', 'title' => t('story'),
- 'access' => story_access('create', NULL));
+
+ if ($may_cache) {
+ $items[] = array('path' => 'node/add/story', 'title' => t('story'),
+ 'access' => story_access('create', NULL));
+ }
+
return $items;
}
diff --git a/modules/system.module b/modules/system.module
index 4a1af86e1..00ace7e1c 100644
--- a/modules/system.module
+++ b/modules/system.module
@@ -59,49 +59,52 @@ function system_perm() {
/**
* Implementation of hook_menu().
*/
-function system_menu() {
+function system_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'system/files', 'title' => t('file download'),
- 'callback' => 'file_download',
- 'access' => TRUE,
- 'type' => MENU_CALLBACK);
-
- $access = user_access('administer site configuration');
-
- // Themes:
- $items[] = array('path' => 'admin/themes', 'title' => t('themes'),
- 'callback' => 'system_themes', 'access' => $access);
-
- $items[] = array('path' => 'admin/themes/select', 'title' => t('select'),
- 'callback' => 'system_themes', 'access' => $access,
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
-
- $items[] = array('path' => 'admin/themes/settings', 'title' => t('configure'),
- 'callback' => 'system_theme_settings', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
-
- // Theme configuration subtabs
- $items[] = array('path' => 'admin/themes/settings/global', 'title' => t('global settings'),
- 'callback' => 'system_theme_settings', 'access' => $access,
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
-
- foreach (list_themes() as $theme) {
- $path = str_replace('/', '.', $theme->name);
- $items[] = array('path' => 'admin/themes/settings/'. $path, 'title' => basename($theme->name),
- 'callback' => 'system_theme_settings', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- }
- // Modules:
- $items[] = array('path' => 'admin/settings', 'title' => t('settings'),
- 'callback' => 'system_site_settings', 'access' => $access);
- foreach (module_list() as $name) {
- if (module_hook($name, 'settings')) {
- $items[] = array('path' => 'admin/settings/'. $name, 'title' => t($name));
+ if ($may_cache) {
+ $items[] = array('path' => 'system/files', 'title' => t('file download'),
+ 'callback' => 'file_download',
+ 'access' => TRUE,
+ 'type' => MENU_CALLBACK);
+
+ $access = user_access('administer site configuration');
+
+ // Themes:
+ $items[] = array('path' => 'admin/themes', 'title' => t('themes'),
+ 'callback' => 'system_themes', 'access' => $access);
+
+ $items[] = array('path' => 'admin/themes/select', 'title' => t('select'),
+ 'callback' => 'system_themes', 'access' => $access,
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
+
+ $items[] = array('path' => 'admin/themes/settings', 'title' => t('configure'),
+ 'callback' => 'system_theme_settings', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+
+ // Theme configuration subtabs
+ $items[] = array('path' => 'admin/themes/settings/global', 'title' => t('global settings'),
+ 'callback' => 'system_theme_settings', 'access' => $access,
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
+
+ foreach (list_themes() as $theme) {
+ $theme_path = str_replace('/', '.', $theme->name);
+ $items[] = array('path' => 'admin/themes/settings/'. $theme_path, 'title' => basename($theme->name),
+ 'callback' => 'system_theme_settings', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ }
+
+ // Modules:
+ $items[] = array('path' => 'admin/settings', 'title' => t('settings'),
+ 'callback' => 'system_site_settings', 'access' => $access);
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'settings')) {
+ $items[] = array('path' => 'admin/settings/'. $name, 'title' => t($name));
+ }
}
+ $items[] = array('path' => 'admin/modules', 'title' => t('modules'),
+ 'callback' => 'system_modules', 'access' => $access);
}
- $items[] = array('path' => 'admin/modules', 'title' => t('modules'),
- 'callback' => 'system_modules', 'access' => $access);
return $items;
}
@@ -502,6 +505,7 @@ function system_listing_save($edit = array()) {
}
cache_clear_all();
+ menu_rebuild();
drupal_set_message(t('The configuration options have been saved.'));
drupal_goto($_GET['q']);
@@ -536,6 +540,7 @@ function system_settings_save() {
}
cache_clear_all();
+ menu_rebuild();
drupal_goto($_GET['q']);
}
diff --git a/modules/system/system.module b/modules/system/system.module
index 4a1af86e1..00ace7e1c 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -59,49 +59,52 @@ function system_perm() {
/**
* Implementation of hook_menu().
*/
-function system_menu() {
+function system_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'system/files', 'title' => t('file download'),
- 'callback' => 'file_download',
- 'access' => TRUE,
- 'type' => MENU_CALLBACK);
-
- $access = user_access('administer site configuration');
-
- // Themes:
- $items[] = array('path' => 'admin/themes', 'title' => t('themes'),
- 'callback' => 'system_themes', 'access' => $access);
-
- $items[] = array('path' => 'admin/themes/select', 'title' => t('select'),
- 'callback' => 'system_themes', 'access' => $access,
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
-
- $items[] = array('path' => 'admin/themes/settings', 'title' => t('configure'),
- 'callback' => 'system_theme_settings', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
-
- // Theme configuration subtabs
- $items[] = array('path' => 'admin/themes/settings/global', 'title' => t('global settings'),
- 'callback' => 'system_theme_settings', 'access' => $access,
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
-
- foreach (list_themes() as $theme) {
- $path = str_replace('/', '.', $theme->name);
- $items[] = array('path' => 'admin/themes/settings/'. $path, 'title' => basename($theme->name),
- 'callback' => 'system_theme_settings', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- }
- // Modules:
- $items[] = array('path' => 'admin/settings', 'title' => t('settings'),
- 'callback' => 'system_site_settings', 'access' => $access);
- foreach (module_list() as $name) {
- if (module_hook($name, 'settings')) {
- $items[] = array('path' => 'admin/settings/'. $name, 'title' => t($name));
+ if ($may_cache) {
+ $items[] = array('path' => 'system/files', 'title' => t('file download'),
+ 'callback' => 'file_download',
+ 'access' => TRUE,
+ 'type' => MENU_CALLBACK);
+
+ $access = user_access('administer site configuration');
+
+ // Themes:
+ $items[] = array('path' => 'admin/themes', 'title' => t('themes'),
+ 'callback' => 'system_themes', 'access' => $access);
+
+ $items[] = array('path' => 'admin/themes/select', 'title' => t('select'),
+ 'callback' => 'system_themes', 'access' => $access,
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
+
+ $items[] = array('path' => 'admin/themes/settings', 'title' => t('configure'),
+ 'callback' => 'system_theme_settings', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+
+ // Theme configuration subtabs
+ $items[] = array('path' => 'admin/themes/settings/global', 'title' => t('global settings'),
+ 'callback' => 'system_theme_settings', 'access' => $access,
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -1);
+
+ foreach (list_themes() as $theme) {
+ $theme_path = str_replace('/', '.', $theme->name);
+ $items[] = array('path' => 'admin/themes/settings/'. $theme_path, 'title' => basename($theme->name),
+ 'callback' => 'system_theme_settings', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ }
+
+ // Modules:
+ $items[] = array('path' => 'admin/settings', 'title' => t('settings'),
+ 'callback' => 'system_site_settings', 'access' => $access);
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'settings')) {
+ $items[] = array('path' => 'admin/settings/'. $name, 'title' => t($name));
+ }
}
+ $items[] = array('path' => 'admin/modules', 'title' => t('modules'),
+ 'callback' => 'system_modules', 'access' => $access);
}
- $items[] = array('path' => 'admin/modules', 'title' => t('modules'),
- 'callback' => 'system_modules', 'access' => $access);
return $items;
}
@@ -502,6 +505,7 @@ function system_listing_save($edit = array()) {
}
cache_clear_all();
+ menu_rebuild();
drupal_set_message(t('The configuration options have been saved.'));
drupal_goto($_GET['q']);
@@ -536,6 +540,7 @@ function system_settings_save() {
}
cache_clear_all();
+ menu_rebuild();
drupal_goto($_GET['q']);
}
diff --git a/modules/taxonomy.module b/modules/taxonomy.module
index 8754d5da3..819194da4 100644
--- a/modules/taxonomy.module
+++ b/modules/taxonomy.module
@@ -47,22 +47,26 @@ function taxonomy_link($type, $node = NULL) {
/**
* Implementation of hook_menu().
*/
-function taxonomy_menu() {
+function taxonomy_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/taxonomy', 'title' => t('categories'),
- 'callback' => 'taxonomy_admin',
- 'access' => user_access('administer taxonomy'));
- $items[] = array('path' => 'admin/taxonomy/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/taxonomy/add/vocabulary', 'title' => t('add vocabulary'),
- 'callback' => 'taxonomy_admin',
- 'access' => user_access('administer taxonomy'),
- 'type' => MENU_LOCAL_TASK);
-
- $items[] = array('path' => 'taxonomy/term', 'title' => t('taxonomy term'),
- 'callback' => 'taxonomy_term_page',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/taxonomy', 'title' => t('categories'),
+ 'callback' => 'taxonomy_admin',
+ 'access' => user_access('administer taxonomy'));
+ $items[] = array('path' => 'admin/taxonomy/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/taxonomy/add/vocabulary', 'title' => t('add vocabulary'),
+ 'callback' => 'taxonomy_admin',
+ 'access' => user_access('administer taxonomy'),
+ 'type' => MENU_LOCAL_TASK);
+
+ $items[] = array('path' => 'taxonomy/term', 'title' => t('taxonomy term'),
+ 'callback' => 'taxonomy_term_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ }
+
return $items;
}
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 8754d5da3..819194da4 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -47,22 +47,26 @@ function taxonomy_link($type, $node = NULL) {
/**
* Implementation of hook_menu().
*/
-function taxonomy_menu() {
+function taxonomy_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/taxonomy', 'title' => t('categories'),
- 'callback' => 'taxonomy_admin',
- 'access' => user_access('administer taxonomy'));
- $items[] = array('path' => 'admin/taxonomy/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/taxonomy/add/vocabulary', 'title' => t('add vocabulary'),
- 'callback' => 'taxonomy_admin',
- 'access' => user_access('administer taxonomy'),
- 'type' => MENU_LOCAL_TASK);
-
- $items[] = array('path' => 'taxonomy/term', 'title' => t('taxonomy term'),
- 'callback' => 'taxonomy_term_page',
- 'access' => user_access('access content'),
- 'type' => MENU_CALLBACK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/taxonomy', 'title' => t('categories'),
+ 'callback' => 'taxonomy_admin',
+ 'access' => user_access('administer taxonomy'));
+ $items[] = array('path' => 'admin/taxonomy/list', 'title' => t('list'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/taxonomy/add/vocabulary', 'title' => t('add vocabulary'),
+ 'callback' => 'taxonomy_admin',
+ 'access' => user_access('administer taxonomy'),
+ 'type' => MENU_LOCAL_TASK);
+
+ $items[] = array('path' => 'taxonomy/term', 'title' => t('taxonomy term'),
+ 'callback' => 'taxonomy_term_page',
+ 'access' => user_access('access content'),
+ 'type' => MENU_CALLBACK);
+ }
+
return $items;
}
diff --git a/modules/tracker.module b/modules/tracker.module
index ef406194f..24951d50e 100644
--- a/modules/tracker.module
+++ b/modules/tracker.module
@@ -21,20 +21,21 @@ function tracker_help($section) {
/**
* Implementation of hook_menu().
*/
-function tracker_menu() {
+function tracker_menu($may_cache) {
global $user;
-
$items = array();
- $items[] = array('path' => 'tracker', 'title' => t('recent posts'),
- 'callback' => 'tracker_page', 'access' => user_access('access content'),
- 'weight' => 1);
-
- // Tabs:
- if ($user->uid) {
- $items[] = array('path' => 'tracker/all', 'title' => t('all recent posts'),
- 'type' => MENU_DEFAULT_LOCAL_TASK);
- $items[] = array('path' => "tracker/$user->uid", 'title' => t('my recent posts'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'tracker', 'title' => t('recent posts'),
+ 'callback' => 'tracker_page', 'access' => user_access('access content'),
+ 'weight' => 1);
+
+ if ($user->uid) {
+ $items[] = array('path' => 'tracker/all', 'title' => t('all recent posts'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK);
+ $items[] = array('path' => 'tracker/'. $user->uid, 'title' => t('my recent posts'),
+ 'type' => MENU_LOCAL_TASK);
+ }
}
return $items;
diff --git a/modules/tracker/tracker.module b/modules/tracker/tracker.module
index ef406194f..24951d50e 100644
--- a/modules/tracker/tracker.module
+++ b/modules/tracker/tracker.module
@@ -21,20 +21,21 @@ function tracker_help($section) {
/**
* Implementation of hook_menu().
*/
-function tracker_menu() {
+function tracker_menu($may_cache) {
global $user;
-
$items = array();
- $items[] = array('path' => 'tracker', 'title' => t('recent posts'),
- 'callback' => 'tracker_page', 'access' => user_access('access content'),
- 'weight' => 1);
-
- // Tabs:
- if ($user->uid) {
- $items[] = array('path' => 'tracker/all', 'title' => t('all recent posts'),
- 'type' => MENU_DEFAULT_LOCAL_TASK);
- $items[] = array('path' => "tracker/$user->uid", 'title' => t('my recent posts'),
- 'type' => MENU_LOCAL_TASK);
+
+ if ($may_cache) {
+ $items[] = array('path' => 'tracker', 'title' => t('recent posts'),
+ 'callback' => 'tracker_page', 'access' => user_access('access content'),
+ 'weight' => 1);
+
+ if ($user->uid) {
+ $items[] = array('path' => 'tracker/all', 'title' => t('all recent posts'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK);
+ $items[] = array('path' => 'tracker/'. $user->uid, 'title' => t('my recent posts'),
+ 'type' => MENU_LOCAL_TASK);
+ }
}
return $items;
diff --git a/modules/upload.module b/modules/upload.module
index e9cd1e8c9..0d1092ba6 100644
--- a/modules/upload.module
+++ b/modules/upload.module
@@ -21,27 +21,31 @@ function upload_perm() {
return array('upload files');
}
-function upload_menu() {
- // Add handlers for previewing new uploads.
- if ($_SESSION['file_uploads']) {
- $items = array();
- foreach ($_SESSION['file_uploads'] as $key => $file) {
- $filename = file_create_filename($file->filename, file_create_path());
- $items[] = array(
- 'path' => $filename, 'title' => t('file download'),
- 'callback' => 'upload_download',
- 'access' => true,
- 'type' => MENU_DYNAMIC_ITEM & MENU_HIDDEN
- );
- $_SESSION['file_uploads'][$key]->_filename = $filename;
+function upload_menu($may_cache) {
+ $items = array();
+
+ if ($may_cache) {
+ // Add handlers for previewing new uploads.
+ if ($_SESSION['file_uploads']) {
+ foreach ($_SESSION['file_uploads'] as $key => $file) {
+ $filename = file_create_filename($file->filename, file_create_path());
+ $items[] = array(
+ 'path' => $filename, 'title' => t('file download'),
+ 'callback' => 'upload_download',
+ 'access' => true,
+ 'type' => MENU_DYNAMIC_ITEM & MENU_HIDDEN
+ );
+ $_SESSION['file_uploads'][$key]->_filename = $filename;
+ }
}
+ $items[] = array(
+ 'path' => 'admin/upload', 'title' => t('uploads'),
+ 'callback' => 'upload_admin',
+ 'access' => user_access('access administration pages'),
+ 'type' => MENU_NORMAL_ITEM
+ );
}
- $items[] = array(
- 'path' => 'admin/upload', 'title' => t('uploads'),
- 'callback' => 'upload_admin',
- 'access' => user_access('access administration pages'),
- 'type' => MENU_NORMAL_ITEM
- );
+
return $items;
}
diff --git a/modules/upload/upload.module b/modules/upload/upload.module
index e9cd1e8c9..0d1092ba6 100644
--- a/modules/upload/upload.module
+++ b/modules/upload/upload.module
@@ -21,27 +21,31 @@ function upload_perm() {
return array('upload files');
}
-function upload_menu() {
- // Add handlers for previewing new uploads.
- if ($_SESSION['file_uploads']) {
- $items = array();
- foreach ($_SESSION['file_uploads'] as $key => $file) {
- $filename = file_create_filename($file->filename, file_create_path());
- $items[] = array(
- 'path' => $filename, 'title' => t('file download'),
- 'callback' => 'upload_download',
- 'access' => true,
- 'type' => MENU_DYNAMIC_ITEM & MENU_HIDDEN
- );
- $_SESSION['file_uploads'][$key]->_filename = $filename;
+function upload_menu($may_cache) {
+ $items = array();
+
+ if ($may_cache) {
+ // Add handlers for previewing new uploads.
+ if ($_SESSION['file_uploads']) {
+ foreach ($_SESSION['file_uploads'] as $key => $file) {
+ $filename = file_create_filename($file->filename, file_create_path());
+ $items[] = array(
+ 'path' => $filename, 'title' => t('file download'),
+ 'callback' => 'upload_download',
+ 'access' => true,
+ 'type' => MENU_DYNAMIC_ITEM & MENU_HIDDEN
+ );
+ $_SESSION['file_uploads'][$key]->_filename = $filename;
+ }
}
+ $items[] = array(
+ 'path' => 'admin/upload', 'title' => t('uploads'),
+ 'callback' => 'upload_admin',
+ 'access' => user_access('access administration pages'),
+ 'type' => MENU_NORMAL_ITEM
+ );
}
- $items[] = array(
- 'path' => 'admin/upload', 'title' => t('uploads'),
- 'callback' => 'upload_admin',
- 'access' => user_access('access administration pages'),
- 'type' => MENU_NORMAL_ITEM
- );
+
return $items;
}
diff --git a/modules/user.module b/modules/user.module
index a2fd76ca8..f919cb0b8 100644
--- a/modules/user.module
+++ b/modules/user.module
@@ -585,88 +585,91 @@ function theme_user_list($items, $title = NULL) {
/**
* Implementation of hook_menu().
*/
-function user_menu() {
+function user_menu($may_cache) {
global $user;
$items = array();
$access = user_access('administer users');
- if (arg(0) == 'user' && is_numeric(arg(1))) {
- $items[] = array('path' => 'user/'. arg(1), 'title' => t('user'),
- 'type' => MENU_CALLBACK, 'callback' => 'user_page', 'access' => TRUE);
- $items[] = array('path' => 'user/'. arg(1) .'/view', 'title' => t('view'),
+ if ($may_cache) {
+ $items[] = array('path' => 'user', 'title' => t('user'),
+ 'callback' => 'user_page', 'access' => TRUE,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'user/login', 'title' => t('log in'),
+ 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'user/register', 'title' => t('register'),
+ 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'user/password', 'title' => t('request new password'),
+ 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'admin/user', 'title' => t('users'),
+ 'callback' => 'user_admin', 'access' => $access);
+ $items[] = array('path' => 'admin/user/list', 'title' => t('list'),
'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'user/'. arg(1) .'/edit', 'title' => t('edit'),
- 'callback' => 'user_edit', 'access' => $access || $user->uid == arg(1),
+ $items[] = array('path' => 'admin/user/create', 'title' => t('add'),
+ 'callback' => 'user_admin', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure', 'title' => t('configure'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/settings', 'title' => t('settings'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/user/configure/access', 'title' => t('access rules'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/access/mail', 'title' => t('e-mail rules'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/access/user', 'title' => t('name rules'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/role', 'title' => t('roles'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/permission', 'title' => t('permissions'),
+ 'callback' => 'user_configure', 'access' => $access,
'type' => MENU_LOCAL_TASK);
- if (arg(2) == 'edit') {
- if (($categories = _user_categories()) && (count($categories) > 1)) {
- foreach ($categories as $key => $category) {
- $items[] = array('path' => 'user/'. arg(1) .'/edit/'. $category['name'], 'title' => $category['title'],
- 'type' => $category['name'] == 'account' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
- 'weight' => $category['weight']);
- }
- }
+ if (module_exist('search')) {
+ $items[] = array('path' => 'admin/user/search', 'title' => t('search'),
+ 'callback' => 'user_admin', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
}
- }
- if ($user->uid) {
- $items[] = array('path' => "user/$user->uid", 'title' => t('my account'),
- 'callback' => 'user_page', 'access' => TRUE);
- $items[] = array('path' => 'logout', 'title' => t('log out'),
- 'access' => TRUE,
- 'callback' => 'user_logout',
- 'weight' => 10);
+ if ($user->uid) {
+ $items[] = array('path' => 'user/'. $user->uid, 'title' => t('my account'),
+ 'callback' => 'user_page', 'access' => TRUE);
+ $items[] = array('path' => 'logout', 'title' => t('log out'),
+ 'access' => TRUE,
+ 'callback' => 'user_logout',
+ 'weight' => 10);
+ }
+ else {
+ $items[] = array('path' => 'logout', 'title' => t('log out'),
+ 'callback' => 'user_logout', 'access' => FALSE);
+ }
}
else {
- $items[] = array('path' => 'logout', 'title' => t('log out'),
- 'callback' => 'user_logout', 'access' => FALSE);
- }
-
- $items[] = array('path' => 'user', 'title' => t('user'),
- 'callback' => 'user_page', 'access' => TRUE,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'user/login', 'title' => t('log in'),
- 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'user/register', 'title' => t('register'),
- 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'user/password', 'title' => t('request new password'),
- 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'admin/user', 'title' => t('users'),
- 'callback' => 'user_admin', 'access' => $access);
- $items[] = array('path' => 'admin/user/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/user/create', 'title' => t('add'),
- 'callback' => 'user_admin', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure', 'title' => t('configure'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/settings', 'title' => t('settings'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/user/configure/access', 'title' => t('access rules'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/access/mail', 'title' => t('e-mail rules'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/access/user', 'title' => t('name rules'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/role', 'title' => t('roles'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/permission', 'title' => t('permissions'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
-
- if (module_exist('search')) {
- $items[] = array('path' => 'admin/user/search', 'title' => t('search'),
- 'callback' => 'user_admin', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
+ if (arg(0) == 'user' && is_numeric(arg(1))) {
+ $items[] = array('path' => 'user/'. arg(1), 'title' => t('user'),
+ 'type' => MENU_CALLBACK, 'callback' => 'user_page', 'access' => TRUE);
+ $items[] = array('path' => 'user/'. arg(1) .'/view', 'title' => t('view'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'user/'. arg(1) .'/edit', 'title' => t('edit'),
+ 'callback' => 'user_edit', 'access' => $access || $user->uid == arg(1),
+ 'type' => MENU_LOCAL_TASK);
+
+ if (arg(2) == 'edit') {
+ if (($categories = _user_categories()) && (count($categories) > 1)) {
+ foreach ($categories as $key => $category) {
+ $items[] = array('path' => 'user/'. arg(1) .'/edit/'. $category['name'], 'title' => $category['title'],
+ 'type' => $category['name'] == 'account' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
+ 'weight' => $category['weight']);
+ }
+ }
+ }
+ }
}
return $items;
@@ -1385,6 +1388,7 @@ function user_admin_perm($edit = array()) {
// Clear the cache, as we might have changed the anonymous user's
// permissions.
cache_clear_all();
+ menu_rebuild();
}
// Compile permission array:
diff --git a/modules/user/user.module b/modules/user/user.module
index a2fd76ca8..f919cb0b8 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -585,88 +585,91 @@ function theme_user_list($items, $title = NULL) {
/**
* Implementation of hook_menu().
*/
-function user_menu() {
+function user_menu($may_cache) {
global $user;
$items = array();
$access = user_access('administer users');
- if (arg(0) == 'user' && is_numeric(arg(1))) {
- $items[] = array('path' => 'user/'. arg(1), 'title' => t('user'),
- 'type' => MENU_CALLBACK, 'callback' => 'user_page', 'access' => TRUE);
- $items[] = array('path' => 'user/'. arg(1) .'/view', 'title' => t('view'),
+ if ($may_cache) {
+ $items[] = array('path' => 'user', 'title' => t('user'),
+ 'callback' => 'user_page', 'access' => TRUE,
+ 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'user/login', 'title' => t('log in'),
+ 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'user/register', 'title' => t('register'),
+ 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'user/password', 'title' => t('request new password'),
+ 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
+
+ $items[] = array('path' => 'admin/user', 'title' => t('users'),
+ 'callback' => 'user_admin', 'access' => $access);
+ $items[] = array('path' => 'admin/user/list', 'title' => t('list'),
'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'user/'. arg(1) .'/edit', 'title' => t('edit'),
- 'callback' => 'user_edit', 'access' => $access || $user->uid == arg(1),
+ $items[] = array('path' => 'admin/user/create', 'title' => t('add'),
+ 'callback' => 'user_admin', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure', 'title' => t('configure'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/settings', 'title' => t('settings'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'admin/user/configure/access', 'title' => t('access rules'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/access/mail', 'title' => t('e-mail rules'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/access/user', 'title' => t('name rules'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/role', 'title' => t('roles'),
+ 'callback' => 'user_configure', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
+ $items[] = array('path' => 'admin/user/configure/permission', 'title' => t('permissions'),
+ 'callback' => 'user_configure', 'access' => $access,
'type' => MENU_LOCAL_TASK);
- if (arg(2) == 'edit') {
- if (($categories = _user_categories()) && (count($categories) > 1)) {
- foreach ($categories as $key => $category) {
- $items[] = array('path' => 'user/'. arg(1) .'/edit/'. $category['name'], 'title' => $category['title'],
- 'type' => $category['name'] == 'account' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
- 'weight' => $category['weight']);
- }
- }
+ if (module_exist('search')) {
+ $items[] = array('path' => 'admin/user/search', 'title' => t('search'),
+ 'callback' => 'user_admin', 'access' => $access,
+ 'type' => MENU_LOCAL_TASK);
}
- }
- if ($user->uid) {
- $items[] = array('path' => "user/$user->uid", 'title' => t('my account'),
- 'callback' => 'user_page', 'access' => TRUE);
- $items[] = array('path' => 'logout', 'title' => t('log out'),
- 'access' => TRUE,
- 'callback' => 'user_logout',
- 'weight' => 10);
+ if ($user->uid) {
+ $items[] = array('path' => 'user/'. $user->uid, 'title' => t('my account'),
+ 'callback' => 'user_page', 'access' => TRUE);
+ $items[] = array('path' => 'logout', 'title' => t('log out'),
+ 'access' => TRUE,
+ 'callback' => 'user_logout',
+ 'weight' => 10);
+ }
+ else {
+ $items[] = array('path' => 'logout', 'title' => t('log out'),
+ 'callback' => 'user_logout', 'access' => FALSE);
+ }
}
else {
- $items[] = array('path' => 'logout', 'title' => t('log out'),
- 'callback' => 'user_logout', 'access' => FALSE);
- }
-
- $items[] = array('path' => 'user', 'title' => t('user'),
- 'callback' => 'user_page', 'access' => TRUE,
- 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'user/login', 'title' => t('log in'),
- 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'user/register', 'title' => t('register'),
- 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
- $items[] = array('path' => 'user/password', 'title' => t('request new password'),
- 'callback' => 'user_page', 'access' => TRUE, 'type' => MENU_CALLBACK);
-
- $items[] = array('path' => 'admin/user', 'title' => t('users'),
- 'callback' => 'user_admin', 'access' => $access);
- $items[] = array('path' => 'admin/user/list', 'title' => t('list'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/user/create', 'title' => t('add'),
- 'callback' => 'user_admin', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure', 'title' => t('configure'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/settings', 'title' => t('settings'),
- 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
- $items[] = array('path' => 'admin/user/configure/access', 'title' => t('access rules'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/access/mail', 'title' => t('e-mail rules'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/access/user', 'title' => t('name rules'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/role', 'title' => t('roles'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
- $items[] = array('path' => 'admin/user/configure/permission', 'title' => t('permissions'),
- 'callback' => 'user_configure', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
-
- if (module_exist('search')) {
- $items[] = array('path' => 'admin/user/search', 'title' => t('search'),
- 'callback' => 'user_admin', 'access' => $access,
- 'type' => MENU_LOCAL_TASK);
+ if (arg(0) == 'user' && is_numeric(arg(1))) {
+ $items[] = array('path' => 'user/'. arg(1), 'title' => t('user'),
+ 'type' => MENU_CALLBACK, 'callback' => 'user_page', 'access' => TRUE);
+ $items[] = array('path' => 'user/'. arg(1) .'/view', 'title' => t('view'),
+ 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10);
+ $items[] = array('path' => 'user/'. arg(1) .'/edit', 'title' => t('edit'),
+ 'callback' => 'user_edit', 'access' => $access || $user->uid == arg(1),
+ 'type' => MENU_LOCAL_TASK);
+
+ if (arg(2) == 'edit') {
+ if (($categories = _user_categories()) && (count($categories) > 1)) {
+ foreach ($categories as $key => $category) {
+ $items[] = array('path' => 'user/'. arg(1) .'/edit/'. $category['name'], 'title' => $category['title'],
+ 'type' => $category['name'] == 'account' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
+ 'weight' => $category['weight']);
+ }
+ }
+ }
+ }
}
return $items;
@@ -1385,6 +1388,7 @@ function user_admin_perm($edit = array()) {
// Clear the cache, as we might have changed the anonymous user's
// permissions.
cache_clear_all();
+ menu_rebuild();
}
// Compile permission array:
diff --git a/modules/watchdog.module b/modules/watchdog.module
index 9be7a45f7..31e305242 100644
--- a/modules/watchdog.module
+++ b/modules/watchdog.module
@@ -43,17 +43,17 @@ function watchdog_help($section = 'admin/help#watchdog') {
/**
* Implementation of hook_menu().
*/
-function watchdog_menu() {
+function watchdog_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/logs', 'title' => t('logs'),
- 'callback' => 'watchdog_overview', 'access' => user_access('administer watchdog'));
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/logs', 'title' => t('logs'),
+ 'callback' => 'watchdog_overview', 'access' => user_access('administer watchdog'));
- $items[] = array('path' => 'admin/logs/view', 'title' => t('view details'),
- 'callback' => 'watchdog_view', 'access' => user_access('administer watchdog'),
- 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/logs/view', 'title' => t('view details'),
+ 'callback' => 'watchdog_view', 'access' => user_access('administer watchdog'),
+ 'type' => MENU_CALLBACK);
- if (arg(1) == 'logs') {
foreach (_watchdog_get_message_types() as $type) {
$items[] = array('path' => 'admin/logs/'. $type, 'title' => t($type), 'type' => MENU_DYNAMIC_ITEM);
}
@@ -105,7 +105,7 @@ function watchdog_overview($type = '') {
l(t('details'), "admin/logs/view/$watchdog->wid")
),
// Attributes for tr
- 'class' => "watchdog-$watchdog->type"
+ 'class' => "watchdog-$watchdog->type"
);
}
diff --git a/modules/watchdog/watchdog.module b/modules/watchdog/watchdog.module
index 9be7a45f7..31e305242 100644
--- a/modules/watchdog/watchdog.module
+++ b/modules/watchdog/watchdog.module
@@ -43,17 +43,17 @@ function watchdog_help($section = 'admin/help#watchdog') {
/**
* Implementation of hook_menu().
*/
-function watchdog_menu() {
+function watchdog_menu($may_cache) {
$items = array();
- $items[] = array('path' => 'admin/logs', 'title' => t('logs'),
- 'callback' => 'watchdog_overview', 'access' => user_access('administer watchdog'));
+ if ($may_cache) {
+ $items[] = array('path' => 'admin/logs', 'title' => t('logs'),
+ 'callback' => 'watchdog_overview', 'access' => user_access('administer watchdog'));
- $items[] = array('path' => 'admin/logs/view', 'title' => t('view details'),
- 'callback' => 'watchdog_view', 'access' => user_access('administer watchdog'),
- 'type' => MENU_CALLBACK);
+ $items[] = array('path' => 'admin/logs/view', 'title' => t('view details'),
+ 'callback' => 'watchdog_view', 'access' => user_access('administer watchdog'),
+ 'type' => MENU_CALLBACK);
- if (arg(1) == 'logs') {
foreach (_watchdog_get_message_types() as $type) {
$items[] = array('path' => 'admin/logs/'. $type, 'title' => t($type), 'type' => MENU_DYNAMIC_ITEM);
}
@@ -105,7 +105,7 @@ function watchdog_overview($type = '') {
l(t('details'), "admin/logs/view/$watchdog->wid")
),
// Attributes for tr
- 'class' => "watchdog-$watchdog->type"
+ 'class' => "watchdog-$watchdog->type"
);
}