From 223bdc20da42aa82e4cc3c68f0c3add7de7226b9 Mon Sep 17 00:00:00 2001 From: Jacob Helwig Date: Sun, 22 Jun 2008 23:40:18 -0700 Subject: [PATCH] Start adding user profile, and preferences pages. --- lib/Kamitsukai/Dispatcher.pm | 35 ++++++++++++++++++++++ .../fragments/user/preferences/navigation.html | 28 +++++++++++++++++ .../fragments/user/preferences/notification.html | 6 ++++ .../fragments/user/preferences/privacy.html | 6 ++++ share/web/templates/friends/index.html | 0 share/web/templates/groups/index.html | 0 share/web/templates/library/index.html | 0 share/web/templates/messages/index.html | 0 share/web/templates/user/index.html | 2 ++ share/web/templates/user/preferences.html | 8 +++++ 10 files changed, 85 insertions(+) create mode 100644 share/web/templates/fragments/user/preferences/navigation.html create mode 100644 share/web/templates/fragments/user/preferences/notification.html create mode 100644 share/web/templates/fragments/user/preferences/privacy.html create mode 100644 share/web/templates/friends/index.html create mode 100644 share/web/templates/groups/index.html create mode 100644 share/web/templates/library/index.html create mode 100644 share/web/templates/messages/index.html create mode 100644 share/web/templates/user/index.html create mode 100644 share/web/templates/user/preferences.html diff --git a/lib/Kamitsukai/Dispatcher.pm b/lib/Kamitsukai/Dispatcher.pm index 7c96ac4..f7aef12 100644 --- a/lib/Kamitsukai/Dispatcher.pm +++ b/lib/Kamitsukai/Dispatcher.pm @@ -30,6 +30,16 @@ on '**' => run { unless ( $top->child('Home') ) { $top->child( Home => url => "/", sort_order => 1, label => _('Home') ); } + + if (Jifty->web()->current_user()->id()) { + $top->child( + 'Account', + label => _('Account'), + url => "/user/", + sort_order => 10, + ); + } + return (); }; @@ -45,4 +55,29 @@ before '**' => run { } }; +before qr{^/user} => run { + unless (Jifty->web()->current_user()->id()) { + redirect('/login?return=' . Jifty->web()->request()->path()); + } + + my $top = Jifty->web()->navigation(); + + $top->child( + 'Logout', + label => _('Logout'), + url => "/logout", + sort_order => 999, + ); +}; + +on qr{^/user} => run { + my $top = Jifty->web()->navigation()->child('Account'); + $top->child( + 'Preferences', + label => _('Preferences'), + url => "/user/preferences.html", + sort_order => 11, + ); +}; + 1; diff --git a/share/web/templates/fragments/user/preferences/navigation.html b/share/web/templates/fragments/user/preferences/navigation.html new file mode 100644 index 0000000..46ce870 --- /dev/null +++ b/share/web/templates/fragments/user/preferences/navigation.html @@ -0,0 +1,28 @@ +<%args> + $current_page => '' + +<%init> +my @pages = ( + { 'name' => 'Notification', 'tooltip' => 'Notification preferences', 'component' => '/fragments/user/preferences/notification.html' }, + { 'name' => 'Privacy', 'tooltip' => 'Privacy preferences', 'component' => '/fragments/user/preferences/privacy.html' }, +); + +my @nav_links = (); +foreach my $page (@pages) { + if ($page->{'name'} eq $current_page) { + push(@nav_links, $page->{'name'}); + } + else { + push(@nav_links, + Jifty->web()->link( + 'label' => $page->{'name'}, + 'tooltip' => $page->{'tooltip'}, + 'onclick' => { + 'replace_with' => $page->{'component'} + }, + )->as_string() + ); + } +} + +<% join(' | ', @nav_links) |n %> diff --git a/share/web/templates/fragments/user/preferences/notification.html b/share/web/templates/fragments/user/preferences/notification.html new file mode 100644 index 0000000..d44d564 --- /dev/null +++ b/share/web/templates/fragments/user/preferences/notification.html @@ -0,0 +1,6 @@ +
+ <& '/fragments/user/preferences/navigation.html', current_page => 'Notification' &> +
+
+ Notification section. +
diff --git a/share/web/templates/fragments/user/preferences/privacy.html b/share/web/templates/fragments/user/preferences/privacy.html new file mode 100644 index 0000000..562f504 --- /dev/null +++ b/share/web/templates/fragments/user/preferences/privacy.html @@ -0,0 +1,6 @@ +
+ <& '/fragments/user/preferences/navigation.html', current_page => 'Privacy' &> +
+
+ Privacy section. +
diff --git a/share/web/templates/friends/index.html b/share/web/templates/friends/index.html new file mode 100644 index 0000000..e69de29 diff --git a/share/web/templates/groups/index.html b/share/web/templates/groups/index.html new file mode 100644 index 0000000..e69de29 diff --git a/share/web/templates/library/index.html b/share/web/templates/library/index.html new file mode 100644 index 0000000..e69de29 diff --git a/share/web/templates/messages/index.html b/share/web/templates/messages/index.html new file mode 100644 index 0000000..e69de29 diff --git a/share/web/templates/user/index.html b/share/web/templates/user/index.html new file mode 100644 index 0000000..fed7ee8 --- /dev/null +++ b/share/web/templates/user/index.html @@ -0,0 +1,2 @@ +<&|/_elements/wrapper, title => _('Profile') &> + diff --git a/share/web/templates/user/preferences.html b/share/web/templates/user/preferences.html new file mode 100644 index 0000000..3ad09f0 --- /dev/null +++ b/share/web/templates/user/preferences.html @@ -0,0 +1,8 @@ +<&|/_elements/wrapper, title => _('Profile') &> +
+<% Jifty->web()->region( + name => 'profile-region', + path => '/fragments/user/preferences/notification.html', +) %> +
+ -- 2.11.4.GIT