diff --git a/includes/menu.inc b/includes/menu.inc index 7cb17459a4e9f51d90db1606121ea662ac5c447d..e8276b38ad6a53c6f8e7a3428a9544101054d882 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 35f865a002a3a28640384a96fa111598f53a0a6f..b4834e96a25d963ea900132af21a2533138bad3d 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 f8667f1f635261939a1a60dd5f9ce8425777733c..4df79bc19e7297b5f5a89a7e5fbf8a397d7bbaa0 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 a8a54c4b36fcb6d8d4eae8f6efbc864e05ccd46f..c8aa80a438bebcf430b80031adbffb7d4de0adb2 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 a8a54c4b36fcb6d8d4eae8f6efbc864e05ccd46f..c8aa80a438bebcf430b80031adbffb7d4de0adb2 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 72059c6e32ee57ada9c6ecceb389b604bc4fb1a9..ec855509555fdcfc89200be1bda3e91e5877dece 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 72059c6e32ee57ada9c6ecceb389b604bc4fb1a9..ec855509555fdcfc89200be1bda3e91e5877dece 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 66fee1d55572f6257502a571aa6d2dc943393c91..63755b56ee9cd97b26b7d009b5e2098a63a0d684 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 66fee1d55572f6257502a571aa6d2dc943393c91..63755b56ee9cd97b26b7d009b5e2098a63a0d684 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 7e7fe72b88865bad74d2874ca73c363910b49ba2..ff6e8c2e110242634f8c37e469773811da942c8b 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 7e7fe72b88865bad74d2874ca73c363910b49ba2..ff6e8c2e110242634f8c37e469773811da942c8b 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 7c06eb22aad1ee4faea26990f5b1e7136e6da4ec..b4bd980ced881cf7f5ba42ca090240161012a819 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 7c06eb22aad1ee4faea26990f5b1e7136e6da4ec..b4bd980ced881cf7f5ba42ca090240161012a819 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 cc526ddd059b1f7f94ba0afe5a85d98cbd1057b6..92f2decb1683169593427fb7e92ec2b6fc3ea535 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 17ea3b6c2ac871d9a66346430dedd9994455b0ef..b1559c0eda75b3e509a3448161f949b4c62d6dfb 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 17ea3b6c2ac871d9a66346430dedd9994455b0ef..b1559c0eda75b3e509a3448161f949b4c62d6dfb 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 cb75d04e2e1a7c661e93d842333293167328e983..78d27c793ab83006efe00411592a0fca6b07e9bd 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 cb75d04e2e1a7c661e93d842333293167328e983..78d27c793ab83006efe00411592a0fca6b07e9bd 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 d67f9535985630a4ddb471a8b67babacd195db4c..853638672afbc1d7629b7613375b160a2e6d3319 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 d67f9535985630a4ddb471a8b67babacd195db4c..853638672afbc1d7629b7613375b160a2e6d3319 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")) {