diff --git a/includes/module.inc b/includes/module.inc index 2e8476572e187725dd2e0afce9eeef6821ddaa61..8f53e85914ae87f2ecb071c15fec461777a9292c 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -19,6 +19,20 @@ function module_invoke($name, $hook, $a1 = NULL, $a2 = NULL, $a3 = NULL, $a4 = N } } +// invoke $hook for all appropriate modules: +function module_invoke_all($hook, $a1 = NULL, $a2 = NULL, $a3 = NULL, $a4 = NULL) { + $return = array(); + foreach (module_list() as $name) { + if (module_hook($name, $hook)) { + if ($result = module_invoke($name, $hook, $a1, $a2, $a3, $a4)) { + $return = array_merge($return, $result); + } + } + } + + return $return; +} + // return array of module names (includes lazy module loading): function module_list() { static $list; diff --git a/modules/blog.module b/modules/blog.module index 04dcea472e4ef11fab5980f5f2fa74eab74cc19f..1674394a1f03f744692143c83089afa26b81f729 100644 --- a/modules/blog.module +++ b/modules/blog.module @@ -314,9 +314,12 @@ function blog_link($type, $node = 0) { $links[] = "<a href=\"module.php?mod=blog\" title=\"". t("Read the latest blog entries.") ."\">". t("user blogs") ."</a>"; } - if ($type == "menu") { - $links[] = "<a href=\"module.php?mod=node&op=add&type=blog\" title=\"". t("Post a new entry to your personal blog.") ."\">". t("add blog entry") ."</a>"; - $links[] = "<a href=\"module.php?mod=blog&op=view&id=$user->uid\" title=\"". t("Read your latest blog entries.") ."\">". t("view your blog") ."</a>"; + if ($type == "menu.create" && user_access("post content")) { + $links[] = "<a href=\"module.php?mod=node&op=add&type=blog\" title=\"". t("Post a new entry to your personal blog.") ."\">". t("create blog entry") ."</a>"; + } + + if ($type == "menu.view" && user_access("access content")) { + $links[] = "<a href=\"module.php?mod=blog&op=view&id=$user->uid\" title=\"". t("Read your latest blog entries.") ."\">". t("view personal blog") ."</a>"; } if ($type == "node" && $node->type == "blog") { diff --git a/modules/blog/blog.module b/modules/blog/blog.module index 04dcea472e4ef11fab5980f5f2fa74eab74cc19f..1674394a1f03f744692143c83089afa26b81f729 100644 --- a/modules/blog/blog.module +++ b/modules/blog/blog.module @@ -314,9 +314,12 @@ function blog_link($type, $node = 0) { $links[] = "<a href=\"module.php?mod=blog\" title=\"". t("Read the latest blog entries.") ."\">". t("user blogs") ."</a>"; } - if ($type == "menu") { - $links[] = "<a href=\"module.php?mod=node&op=add&type=blog\" title=\"". t("Post a new entry to your personal blog.") ."\">". t("add blog entry") ."</a>"; - $links[] = "<a href=\"module.php?mod=blog&op=view&id=$user->uid\" title=\"". t("Read your latest blog entries.") ."\">". t("view your blog") ."</a>"; + if ($type == "menu.create" && user_access("post content")) { + $links[] = "<a href=\"module.php?mod=node&op=add&type=blog\" title=\"". t("Post a new entry to your personal blog.") ."\">". t("create blog entry") ."</a>"; + } + + if ($type == "menu.view" && user_access("access content")) { + $links[] = "<a href=\"module.php?mod=blog&op=view&id=$user->uid\" title=\"". t("Read your latest blog entries.") ."\">". t("view personal blog") ."</a>"; } if ($type == "node" && $node->type == "blog") { diff --git a/modules/queue.module b/modules/queue.module index 8d2fdbfa59cdb89b31e5cfb29afd8fcd14c72b04..d03ea647bcd01127c9b5cd2a621ead3c6c413267 100644 --- a/modules/queue.module +++ b/modules/queue.module @@ -19,7 +19,7 @@ function queue_perm() { } function queue_link($type) { - if ($type == "menu" && user_access("access submission queue")) { + if ($type == "menu.view" && user_access("access submission queue")) { $links[] = "<a href=\"module.php?mod=queue\" title=\"". t("Moderate the content in the submission queue.") ."\">". t("submission queue") ."</a> (<span style=\"color: red;\">". queue_count() ."</span>)"; } diff --git a/modules/tracker.module b/modules/tracker.module index 1daf0094465ce66c9d031f30c2b44a3446517deb..c61f17fac7e94329985cd3b2b73ea54e0f7aefe1 100644 --- a/modules/tracker.module +++ b/modules/tracker.module @@ -3,7 +3,7 @@ function tracker_link($type) { - if ($type == "menu") { + if ($type == "menu.view") { $links[] = "<a href=\"module.php?mod=tracker\" title=\"". t("Display an overview of the recent comments.") ."\">". t("recent comments") ."</a>"; } diff --git a/modules/tracker/tracker.module b/modules/tracker/tracker.module index 1daf0094465ce66c9d031f30c2b44a3446517deb..c61f17fac7e94329985cd3b2b73ea54e0f7aefe1 100644 --- a/modules/tracker/tracker.module +++ b/modules/tracker/tracker.module @@ -3,7 +3,7 @@ function tracker_link($type) { - if ($type == "menu") { + if ($type == "menu.view") { $links[] = "<a href=\"module.php?mod=tracker\" title=\"". t("Display an overview of the recent comments.") ."\">". t("recent comments") ."</a>"; } diff --git a/modules/user.module b/modules/user.module index c538b5d09984131cda1dcd1ebffd54138a016267..54e9c1f723b5ab32c99080bd0f4719d5db867a83 100644 --- a/modules/user.module +++ b/modules/user.module @@ -458,19 +458,8 @@ function user_block() { $output .= "<div style=\"width: 125;\">\n"; - foreach (module_list() as $name) { - if (module_hook($name, "link")) { - $links = module_invoke($name, "link", "menu"); - foreach ($links as $link) { - $output .= "$link<br />\n"; - } - } - } - - if (user_access("access administration pages")) { - $output .= "<br />\n"; - $output .= "<a href=\"admin.php\">". strtr(t("administer %a"), array("%a" => variable_get("site_name", "drupal"))) ."</a><BR>\n"; - } + $links = array_merge(module_invoke_all("link", "menu.create"), array(""), module_invoke_all("link", "menu.view"), array(""), module_invoke_all("link", "menu.settings"), array(""), module_invoke_all("link", "menu.misc")); + $output .= @implode("<br />\n", $links); $output .= "</div>"; } @@ -499,9 +488,16 @@ function user_link($type) { $links[] = "<a href=\"module.php?mod=user\" title=\"". t("Create a user account, request a new password or edit your account settings.") ."\">". t("user account") ."</a>"; } - if ($type == "menu") { + if ($type == "menu.settings") { $links[] = "<a href=\"module.php?mod=user&op=edit\" title=\"". t("View and edit your account information.") ."\">". t("account settings") ."</a>"; - $links[] = "<br /><a href=\"module.php?mod=user&op=logout\" title=\"". t("Logout.") ."\">". t("logout") ."</a>"; + } + + if ($type == "menu.misc") { + if (user_access("access administration pages")) { + $links[] = "<a href=\"admin.php\">". strtr(t("administer %a"), array("%a" => variable_get("site_name", "drupal"))) ."</a>"; + } + + $links[] = "<a href=\"module.php?mod=user&op=logout\" title=\"". t("Logout.") ."\">". t("logout") ."</a>"; } if ($type == "admin" && user_access("administer users")) { diff --git a/modules/user/user.module b/modules/user/user.module index c538b5d09984131cda1dcd1ebffd54138a016267..54e9c1f723b5ab32c99080bd0f4719d5db867a83 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -458,19 +458,8 @@ function user_block() { $output .= "<div style=\"width: 125;\">\n"; - foreach (module_list() as $name) { - if (module_hook($name, "link")) { - $links = module_invoke($name, "link", "menu"); - foreach ($links as $link) { - $output .= "$link<br />\n"; - } - } - } - - if (user_access("access administration pages")) { - $output .= "<br />\n"; - $output .= "<a href=\"admin.php\">". strtr(t("administer %a"), array("%a" => variable_get("site_name", "drupal"))) ."</a><BR>\n"; - } + $links = array_merge(module_invoke_all("link", "menu.create"), array(""), module_invoke_all("link", "menu.view"), array(""), module_invoke_all("link", "menu.settings"), array(""), module_invoke_all("link", "menu.misc")); + $output .= @implode("<br />\n", $links); $output .= "</div>"; } @@ -499,9 +488,16 @@ function user_link($type) { $links[] = "<a href=\"module.php?mod=user\" title=\"". t("Create a user account, request a new password or edit your account settings.") ."\">". t("user account") ."</a>"; } - if ($type == "menu") { + if ($type == "menu.settings") { $links[] = "<a href=\"module.php?mod=user&op=edit\" title=\"". t("View and edit your account information.") ."\">". t("account settings") ."</a>"; - $links[] = "<br /><a href=\"module.php?mod=user&op=logout\" title=\"". t("Logout.") ."\">". t("logout") ."</a>"; + } + + if ($type == "menu.misc") { + if (user_access("access administration pages")) { + $links[] = "<a href=\"admin.php\">". strtr(t("administer %a"), array("%a" => variable_get("site_name", "drupal"))) ."</a>"; + } + + $links[] = "<a href=\"module.php?mod=user&op=logout\" title=\"". t("Logout.") ."\">". t("logout") ."</a>"; } if ($type == "admin" && user_access("administer users")) {