From 92995414b4c4bbecc9ef13dba29009e02cf951a7 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Sat, 8 Nov 2003 09:56:22 +0000
Subject: [PATCH] - Committed stage 1 of the menu callbacks improvements. 
 Patch by Jonathan.

---
 includes/menu.inc              |  8 ++++++++
 index.php                      | 32 ++++++++++++++++++++++++--------
 modules/admin.module           | 31 ++-----------------------------
 modules/blog.module            |  4 ++--
 modules/blog/blog.module       |  4 ++--
 modules/book.module            |  2 +-
 modules/book/book.module       |  2 +-
 modules/forum.module           |  2 +-
 modules/forum/forum.module     |  2 +-
 modules/page.module            |  2 +-
 modules/page/page.module       |  2 +-
 modules/poll.module            |  2 +-
 modules/poll/poll.module       |  2 +-
 modules/queue.module           |  2 +-
 modules/story.module           |  2 +-
 modules/story/story.module     |  2 +-
 modules/tracker.module         |  2 +-
 modules/tracker/tracker.module |  2 +-
 modules/user.module            |  6 +++---
 modules/user/user.module       |  6 +++---
 20 files changed, 57 insertions(+), 60 deletions(-)

diff --git a/includes/menu.inc b/includes/menu.inc
index 7cb17459a4e9..e8276b38ad6a 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -110,6 +110,14 @@ function menu_execute_active_handler() {
   }
 }
 
+function menu_active_handler_exists() {
+  global $_list;
+
+  $path = menu_get_active_item();
+
+  return function_exists($_list[$path]["callback"]);
+}
+
 /**
  * Returns true when the path is in the active trail.
  */
diff --git a/index.php b/index.php
index 35f865a002a3..b4834e96a25d 100644
--- a/index.php
+++ b/index.php
@@ -9,18 +9,34 @@
 
 menu_build("system");
 
-$mod = arg(0);
-
-if (isset($mod) && module_hook($mod, "page")) {
-  module_invoke($mod, "page");
+if (menu_active_handler_exists()) {
+  $breadcrumb = menu_get_active_breadcrumb();
+  array_pop($breadcrumb);
+  $title = menu_get_active_title();
+
+  theme("header");
+  theme("breadcrumb", $breadcrumb);
+  if ($help = menu_get_active_help()) {
+    $contents = "<small>$help</small><hr />";
+  }
+  $contents .= menu_execute_active_handler();
+  theme("box", $title, $contents);
+  theme("footer");
 }
 else {
-  if (module_hook(variable_get("site_frontpage", "node"), "page")) {
-    module_invoke(variable_get("site_frontpage", "node"), "page");
+  $mod = arg(0);
+
+  if (isset($mod) && module_hook($mod, "page")) {
+    module_invoke($mod, "page");
   }
   else {
-    theme("header");
-    theme("footer");
+    if (module_hook(variable_get("site_frontpage", "node"), "page")) {
+      module_invoke(variable_get("site_frontpage", "node"), "page");
+    }
+    else {
+      theme("header");
+      theme("footer");
+    }
   }
 }
 
diff --git a/modules/admin.module b/modules/admin.module
index f8667f1f6352..4df79bc19e72 100644
--- a/modules/admin.module
+++ b/modules/admin.module
@@ -32,36 +32,9 @@ function admin_link($type) {
   }
 }
 
-function admin_page() {
+function admin_admin() {
   if (user_access("access administration pages")) {
-    $title = menu_get_active_title();
-
-    theme("header", $title);
-
-    $contents = "";
-
-    if ($help = menu_get_active_help()) {
-      $contents .= "<small>$help</small><hr />";
-    }
-
-    if (arg(1)) {
-      $contents .= menu_execute_active_handler();
-    }
-    else {
-      $contents .= watchdog_overview("actions");
-    }
-
-    $breadcrumb = menu_get_active_breadcrumb();
-    array_pop($breadcrumb);
-
-    theme("breadcrumb", $breadcrumb);
-    theme("box", $title, $contents);
-    theme("footer");
-  }
-  else {
-    theme("header", t("Access denied"));
-    theme("box", t("Access denied"), message_access());
-    theme("footer");
+    return watchdog_overview("actions");
   }
 }
 
diff --git a/modules/blog.module b/modules/blog.module
index a8a54c4b36fc..c8aa80a438be 100644
--- a/modules/blog.module
+++ b/modules/blog.module
@@ -252,10 +252,10 @@ function blog_link($type, $node = 0, $main) {
 
   if ($type == "system") {
     if (user_access("maintain personal blog")) {
-      menu("node/add/blog", t("blog entry"), "blog_page", 0);
+      menu("node/add/blog", t("blog entry"), "page", 0);
     }
     if (user_access("maintain personal blog")) {
-      menu("blog/" . $user->uid, t("my blog"), "user_page", 1);
+      menu("blog/" . $user->uid, t("my blog"), "page", 1);
     }
   }
 
diff --git a/modules/blog/blog.module b/modules/blog/blog.module
index a8a54c4b36fc..c8aa80a438be 100644
--- a/modules/blog/blog.module
+++ b/modules/blog/blog.module
@@ -252,10 +252,10 @@ function blog_link($type, $node = 0, $main) {
 
   if ($type == "system") {
     if (user_access("maintain personal blog")) {
-      menu("node/add/blog", t("blog entry"), "blog_page", 0);
+      menu("node/add/blog", t("blog entry"), "page", 0);
     }
     if (user_access("maintain personal blog")) {
-      menu("blog/" . $user->uid, t("my blog"), "user_page", 1);
+      menu("blog/" . $user->uid, t("my blog"), "page", 1);
     }
   }
 
diff --git a/modules/book.module b/modules/book.module
index 72059c6e32ee..ec855509555f 100644
--- a/modules/book.module
+++ b/modules/book.module
@@ -71,7 +71,7 @@ function book_link($type, $node = 0, $main = 0) {
 
   if ($type == "system") {
     if (user_access("maintain books")) {
-      menu("node/add/book", t("book page"), "book_page", 0);
+      menu("node/add/book", t("book page"), "page", 0);
     }
     if (user_access("administer nodes")) {
       menu("admin/node/book", t("books"), "book_admin", 4);
diff --git a/modules/book/book.module b/modules/book/book.module
index 72059c6e32ee..ec855509555f 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -71,7 +71,7 @@ function book_link($type, $node = 0, $main = 0) {
 
   if ($type == "system") {
     if (user_access("maintain books")) {
-      menu("node/add/book", t("book page"), "book_page", 0);
+      menu("node/add/book", t("book page"), "page", 0);
     }
     if (user_access("administer nodes")) {
       menu("admin/node/book", t("books"), "book_admin", 4);
diff --git a/modules/forum.module b/modules/forum.module
index 66fee1d55572..63755b56ee9c 100644
--- a/modules/forum.module
+++ b/modules/forum.module
@@ -94,7 +94,7 @@ function forum_link($type, $node = 0, $main = 0) {
   }
 
   if ($type == "system" && user_access("create forum topics")) {
-      menu("node/add/forum",t("forum topic"), "forum_page");
+      menu("node/add/forum",t("forum topic"), "page");
   }
 
   if (!$main && $type == "node" && $node->type == "forum") {
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index 66fee1d55572..63755b56ee9c 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -94,7 +94,7 @@ function forum_link($type, $node = 0, $main = 0) {
   }
 
   if ($type == "system" && user_access("create forum topics")) {
-      menu("node/add/forum",t("forum topic"), "forum_page");
+      menu("node/add/forum",t("forum topic"), "page");
   }
 
   if (!$main && $type == "node" && $node->type == "forum") {
diff --git a/modules/page.module b/modules/page.module
index 7e7fe72b8886..ff6e8c2e1102 100644
--- a/modules/page.module
+++ b/modules/page.module
@@ -89,7 +89,7 @@ function page_link($type) {
 
   if ($type == "system") {
     if (user_access("maintain static pages")) {
-      menu("node/add/page", t("static page"), "page_page", 0);
+      menu("node/add/page", t("static page"), "page", 0);
     }
   }
 
diff --git a/modules/page/page.module b/modules/page/page.module
index 7e7fe72b8886..ff6e8c2e1102 100644
--- a/modules/page/page.module
+++ b/modules/page/page.module
@@ -89,7 +89,7 @@ function page_link($type) {
 
   if ($type == "system") {
     if (user_access("maintain static pages")) {
-      menu("node/add/page", t("static page"), "page_page", 0);
+      menu("node/add/page", t("static page"), "page", 0);
     }
   }
 
diff --git a/modules/poll.module b/modules/poll.module
index 7c06eb22aad1..b4bd980ced88 100644
--- a/modules/poll.module
+++ b/modules/poll.module
@@ -182,7 +182,7 @@ function poll_link($type, $node = 0, $main) {
 
   if ($type == "system") {
     if (user_access("create polls")) {
-      menu("node/add/poll", t("poll"), "poll_page", 0);
+      menu("node/add/poll", t("poll"), "page", 0);
     }
   }
   else if ($type == "page" && user_access("access content")) {
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index 7c06eb22aad1..b4bd980ced88 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -182,7 +182,7 @@ function poll_link($type, $node = 0, $main) {
 
   if ($type == "system") {
     if (user_access("create polls")) {
-      menu("node/add/poll", t("poll"), "poll_page", 0);
+      menu("node/add/poll", t("poll"), "page", 0);
     }
   }
   else if ($type == "page" && user_access("access content")) {
diff --git a/modules/queue.module b/modules/queue.module
index cc526ddd059b..92f2decb1683 100644
--- a/modules/queue.module
+++ b/modules/queue.module
@@ -35,7 +35,7 @@ function queue_perm() {
 function queue_link($type) {
   if ($type == "system") {
     if (user_access("access submission queue")) {
-      menu("queue", t("view submissions"), "queue_page", 1);
+      menu("queue", t("view submissions"), "page", 1);
     }
   }
 
diff --git a/modules/story.module b/modules/story.module
index 17ea3b6c2ac8..b1559c0eda75 100644
--- a/modules/story.module
+++ b/modules/story.module
@@ -53,7 +53,7 @@ function story_link($type) {
 
   if ($type == "system") {
     if (user_access("create stories")) {
-      menu("node/add/story", t("story"), "story_page", 0);
+      menu("node/add/story", t("story"), "page", 0);
     }
   }
 
diff --git a/modules/story/story.module b/modules/story/story.module
index 17ea3b6c2ac8..b1559c0eda75 100644
--- a/modules/story/story.module
+++ b/modules/story/story.module
@@ -53,7 +53,7 @@ function story_link($type) {
 
   if ($type == "system") {
     if (user_access("create stories")) {
-      menu("node/add/story", t("story"), "story_page", 0);
+      menu("node/add/story", t("story"), "page", 0);
     }
   }
 
diff --git a/modules/tracker.module b/modules/tracker.module
index cb75d04e2e1a..78d27c793ab8 100644
--- a/modules/tracker.module
+++ b/modules/tracker.module
@@ -22,7 +22,7 @@ function tracker_link($type) {
 
   if ($type == "system") {
     if (user_access("access content")) {
-      menu("tracker", t("recent posts"), "tracker_page", 1);
+      menu("tracker", t("recent posts"), "page", 1);
     }
   }
 
diff --git a/modules/tracker/tracker.module b/modules/tracker/tracker.module
index cb75d04e2e1a..78d27c793ab8 100644
--- a/modules/tracker/tracker.module
+++ b/modules/tracker/tracker.module
@@ -22,7 +22,7 @@ function tracker_link($type) {
 
   if ($type == "system") {
     if (user_access("access content")) {
-      menu("tracker", t("recent posts"), "tracker_page", 1);
+      menu("tracker", t("recent posts"), "page", 1);
     }
   }
 
diff --git a/modules/user.module b/modules/user.module
index d67f95359856..853638672afb 100644
--- a/modules/user.module
+++ b/modules/user.module
@@ -496,9 +496,9 @@ function user_link($type) {
   if ($type == "system") {
     global $user;
     if ($user->uid) {
-      menu("user", t("my account"), "user_page", 8);
-      menu("user/edit", t("edit account"), "user_page", 0);
-      menu("user/logout", t("log out"), "user_page", 10);
+      menu("user", t("my account"), "page", 8);
+      menu("user/edit", t("edit account"), "page", 0);
+      menu("user/logout", t("log out"), "page", 10);
     }
 
     if (user_access("administer users")) {
diff --git a/modules/user/user.module b/modules/user/user.module
index d67f95359856..853638672afb 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -496,9 +496,9 @@ function user_link($type) {
   if ($type == "system") {
     global $user;
     if ($user->uid) {
-      menu("user", t("my account"), "user_page", 8);
-      menu("user/edit", t("edit account"), "user_page", 0);
-      menu("user/logout", t("log out"), "user_page", 10);
+      menu("user", t("my account"), "page", 8);
+      menu("user/edit", t("edit account"), "page", 0);
+      menu("user/logout", t("log out"), "page", 10);
     }
 
     if (user_access("administer users")) {
-- 
GitLab