Use events to generate menus, instead of having xxx_menu helpers.

This is the first step towards having a simple, lightweight and
unified API for module interaction.
This commit is contained in:
Bharat Mediratta
2009-07-28 13:47:22 -07:00
parent f5c4d23e57
commit 1e90e40d3a
23 changed files with 261 additions and 491 deletions
+57 -13
View File
@@ -44,22 +44,66 @@ class Admin_View_Core extends Gallery_View {
$this->set_global("user", user::active());
}
public function admin_menu() {
$menu = Menu::factory("root");
gallery_menu::admin($menu, $this);
foreach (module::active() as $module) {
if ($module->name == "gallery") {
continue;
}
$class = "{$module->name}_menu";
if (method_exists($class, "admin")) {
call_user_func_array(array($class, "admin"), array(&$menu, $this));
}
public function admin_menu($menu=null) {
if (!$menu) {
$menu = Menu::factory("root");
}
$menu
->append(Menu::factory("link")
->id("dashboard")
->label(t("Dashboard"))
->url(url::site("admin")))
->append(Menu::factory("submenu")
->id("settings_menu")
->label(t("Settings"))
->append(Menu::factory("link")
->id("graphics_toolkits")
->label(t("Graphics"))
->url(url::site("admin/graphics")))
->append(Menu::factory("link")
->id("languages")
->label(t("Languages"))
->url(url::site("admin/languages")))
->append(Menu::factory("link")
->id("l10n_mode")
->label(Session::instance()->get("l10n_mode", false)
? t("Stop translating") : t("Start translating"))
->url(url::site("l10n_client/toggle_l10n_mode?csrf=" .
access::csrf_token())))
->append(Menu::factory("link")
->id("advanced")
->label(t("Advanced"))
->url(url::site("admin/advanced_settings"))))
->append(Menu::factory("link")
->id("modules")
->label(t("Modules"))
->url(url::site("admin/modules")))
->append(Menu::factory("submenu")
->id("content_menu")
->label(t("Content")))
->append(Menu::factory("submenu")
->id("appearance_menu")
->label(t("Appearance"))
->append(Menu::factory("link")
->id("themes")
->label(t("Theme Choice"))
->url(url::site("admin/themes")))
->append(Menu::factory("link")
->id("theme_options")
->label(t("Theme Options"))
->url(url::site("admin/theme_options"))))
->append(Menu::factory("submenu")
->id("statistics_menu")
->label(t("Statistics")))
->append(Menu::factory("link")
->id("maintenance")
->label(t("Maintenance"))
->url(url::site("admin/maintenance")));
module::event("admin_menu", $menu, $this);
$menu->compact();
print $menu;
return $menu;
}
/**