From b5f2dbc2c4fa974f486bc92c75054940424ed323 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 6 Nov 2009 14:08:46 -0800 Subject: Create a user_menu for the top of the page. Change the login, edit profile and logout portions of the banner to be rendered by the Theme_View::user_menu callback. This fires the user_menu event. Fixes Ticket #871. --- modules/gallery/helpers/gallery_event.php | 28 +++++++++++++++++++++++ modules/gallery/helpers/gallery_theme.php | 8 ------- modules/gallery/libraries/Theme_View.php | 8 +++++++ modules/gallery/views/login.html.php | 26 --------------------- modules/gallery/views/login_current_user.html.php | 11 +++++++++ 5 files changed, 47 insertions(+), 34 deletions(-) delete mode 100644 modules/gallery/views/login.html.php create mode 100644 modules/gallery/views/login_current_user.html.php (limited to 'modules') diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php index e3cb6a9b..43920815 100644 --- a/modules/gallery/helpers/gallery_event.php +++ b/modules/gallery/helpers/gallery_event.php @@ -97,6 +97,34 @@ class gallery_event_Core { $data[] = $item->title; } + static function user_menu($menu, $theme) { + if ($theme->page_type != "login") { + Kohana::log("alert", "in gallery::user_menu"); + $user = identity::active_user(); + if ($user->guest) { + $menu->append(Menu::factory("dialog") + ->id("user_menu_login") + ->css_id("g-login-link") + ->url(url::site("login/ajax")) + ->label(t("Login"))); + } else { + $csrf = access::csrf_token(); + $menu->append(Menu::factory("dialog") + ->id("user_menu_edit_profile") + ->css_id("g-user-profile-link") + ->view("login_current_user.html") + ->url(url::site("form/edit/users/{$user->id}")) + ->label($user->display_name())); + $menu->append(Menu::factory("link") + ->id("user_menu_logout") + ->css_id("g-logout-link") + ->url(url::site("logout?csrf=$csrf&continue=" . + urlencode(url::current(true)))) + ->label(t("Logout"))); + } + } + } + static function site_menu($menu, $theme) { if ($theme->page_type != "login") { $menu->append(Menu::factory("link") diff --git a/modules/gallery/helpers/gallery_theme.php b/modules/gallery/helpers/gallery_theme.php index 0682d4ae..ab3e7eb5 100644 --- a/modules/gallery/helpers/gallery_theme.php +++ b/modules/gallery/helpers/gallery_theme.php @@ -52,14 +52,6 @@ class gallery_theme_Core { return $buf; } - static function header_top($theme) { - if ($theme->page_type != "login") { - $view = new View("login.html"); - $view->user = identity::active_user(); - return $view->render(); - } - } - static function admin_head($theme) { $theme->css("gallery.css"); $theme->script("gallery.panel.js"); diff --git a/modules/gallery/libraries/Theme_View.php b/modules/gallery/libraries/Theme_View.php index 9670313d..f8fae0f7 100644 --- a/modules/gallery/libraries/Theme_View.php +++ b/modules/gallery/libraries/Theme_View.php @@ -78,6 +78,14 @@ class Theme_View_Core extends Gallery_View { return $this->page_type; } + public function user_menu() { + $menu = Menu::factory("root") + ->css_id("g-login-menu") + ->css_class("g-inline ui-helper-clear-fix"); + module::event("user_menu", $menu, $this); + return $menu->render(); + } + public function site_menu() { $menu = Menu::factory("root"); module::event("site_menu", $menu, $this); diff --git a/modules/gallery/views/login.html.php b/modules/gallery/views/login.html.php deleted file mode 100644 index 4c13ef4b..00000000 --- a/modules/gallery/views/login.html.php +++ /dev/null @@ -1,26 +0,0 @@ - - diff --git a/modules/gallery/views/login_current_user.html.php b/modules/gallery/views/login_current_user.html.php new file mode 100644 index 00000000..e3b3688f --- /dev/null +++ b/modules/gallery/views/login_current_user.html.php @@ -0,0 +1,11 @@ + +
  • + label->for_html() ?> + + html::mark_clean( + "{$name}"))) ?> + + $name)) ?> + +
  • -- cgit v1.2.3