From c9995aa52bde2e6b490b6289a829de7f77b62865 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 28 Jul 2014 13:26:50 +0200 Subject: [PATCH] Lateral menu for user profile --- app/coffee/app.coffee | 49 ++++--- app/coffee/modules/base.coffee | 68 +++++----- app/coffee/modules/nav.coffee | 121 ++++++++++-------- app/partials/user-profile.jade | 12 +- app/partials/views/modules/nav.jade | 2 - .../views/modules/user-settings-menu.jade | 18 +++ 6 files changed, 154 insertions(+), 116 deletions(-) create mode 100644 app/partials/views/modules/user-settings-menu.jade diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index da6f4ce1..9ea580c1 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -33,17 +33,17 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide) -> # User stories $routeProvider.when("/project/:pslug/us/:usref", - {templateUrl: "/partials/us-detail.html"}) + {templateUrl: "/partials/us-detail.html"}) $routeProvider.when("/project/:pslug/us/:usref/edit", - {templateUrl: "/partials/us-detail-edit.html"}) + {templateUrl: "/partials/us-detail-edit.html"}) # Tasks $routeProvider.when("/project/:pslug/tasks/:taskref", - {templateUrl: "/partials/task-detail.html"}) + {templateUrl: "/partials/task-detail.html"}) $routeProvider.when("/project/:pslug/tasks/:taskref/edit", - {templateUrl: "/partials/task-detail-edit.html"}) + {templateUrl: "/partials/task-detail-edit.html"}) # Wiki $routeProvider.when("/project/:pslug/wiki", @@ -58,53 +58,62 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide) -> # Issues $routeProvider.when("/project/:pslug/issues", {templateUrl: "/partials/issues.html"}) $routeProvider.when("/project/:pslug/issues/:issueref", - {templateUrl: "/partials/issues-detail.html"}) + {templateUrl: "/partials/issues-detail.html"}) $routeProvider.when("/project/:pslug/issues/:issueref/edit", - {templateUrl: "/partials/issues-detail-edit.html"}) + {templateUrl: "/partials/issues-detail-edit.html"}) # Admin $routeProvider.when("/project/:pslug/admin/project-profile/details", - {templateUrl: "/partials/admin-project-profile.html"}) + {templateUrl: "/partials/admin-project-profile.html"}) $routeProvider.when("/project/:pslug/admin/project-profile/default-values", - {templateUrl: "/partials/admin-project-default-values.html"}) + {templateUrl: "/partials/admin-project-default-values.html"}) $routeProvider.when("/project/:pslug/admin/project-profile/features", - {templateUrl: "/partials/admin-project-features.html"}) + {templateUrl: "/partials/admin-project-features.html"}) $routeProvider.when("/project/:pslug/admin/project-values/us-status", - {templateUrl: "/partials/admin-project-values-us-status.html"}) + {templateUrl: "/partials/admin-project-values-us-status.html"}) $routeProvider.when("/project/:pslug/admin/project-values/us-points", - {templateUrl: "/partials/admin-project-values-us-points.html"}) + {templateUrl: "/partials/admin-project-values-us-points.html"}) $routeProvider.when("/project/:pslug/admin/project-values/task-status", - {templateUrl: "/partials/admin-project-values-task-status.html"}) + {templateUrl: "/partials/admin-project-values-task-status.html"}) $routeProvider.when("/project/:pslug/admin/project-values/issue-status", - {templateUrl: "/partials/admin-project-values-issue-status.html"}) + {templateUrl: "/partials/admin-project-values-issue-status.html"}) $routeProvider.when("/project/:pslug/admin/project-values/issue-types", - {templateUrl: "/partials/admin-project-values-issue-types.html"}) + {templateUrl: "/partials/admin-project-values-issue-types.html"}) $routeProvider.when("/project/:pslug/admin/project-values/issue-priorities", - {templateUrl: "/partials/admin-project-values-issue-priorities.html"}) + {templateUrl: "/partials/admin-project-values-issue-priorities.html"}) $routeProvider.when("/project/:pslug/admin/project-values/issue-severities", - {templateUrl: "/partials/admin-project-values-issue-severities.html"}) - + {templateUrl: "/partials/admin-project-values-issue-severities.html"}) $routeProvider.when("/project/:pslug/admin/memberships", - {templateUrl: "/partials/admin-memberships.html"}) + {templateUrl: "/partials/admin-memberships.html"}) + + # User settings + $routeProvider.when("/project/:pslug/user-settings/user-profile", + {templateUrl: "/partials/user-profile.html"}) + + $routeProvider.when("/project/:pslug/user-settings/mail-notifications", + {templateUrl: "/partials/mail-notifications.html"}) + # Auth $routeProvider.when("/login", {templateUrl: "/partials/login.html"}) $routeProvider.when("/register", {templateUrl: "/partials/register.html"}) $routeProvider.when("/forgot-password", {templateUrl: "/partials/forgot-password.html"}) $routeProvider.when("/change-password", - {templateUrl: "/partials/change-password-from-recovery.html"}) + {templateUrl: "/partials/change-password-from-recovery.html"}) + $routeProvider.when("/change-password/:token", - {templateUrl: "/partials/change-password-from-recovery.html"}) + {templateUrl: "/partials/change-password-from-recovery.html"}) + $routeProvider.when("/invitation/:token", {templateUrl: "/partials/invitation.html"}) $routeProvider.otherwise({redirectTo: '/login'}) diff --git a/app/coffee/modules/base.coffee b/app/coffee/modules/base.coffee index d5970271..f3bde630 100644 --- a/app/coffee/modules/base.coffee +++ b/app/coffee/modules/base.coffee @@ -43,48 +43,52 @@ module.directive("tgMain", ["$rootScope", "$window", TaigaMainDirective]) ############################################################################# urls = { - "home": "/", - "login": "/login", - "forgot-password": "/forgot-password", - "change-password": "/change-password/:token", - "register": "/register", - "invitation": "/invitation/:token", - "create-project": "/create-project", + "home": "/" + "login": "/login" + "forgot-password": "/forgot-password" + "change-password": "/change-password/:token" + "register": "/register" + "invitation": "/invitation/:token" + "create-project": "/create-project" - "profile": "/:user", + "profile": "/:user" - "project": "/project/:project", - "project-backlog": "/project/:project/backlog", - "project-taskboard": "/project/:project/taskboard/:sprint", - "project-kanban": "/project/:project/kanban", - "project-issues": "/project/:project/issues", - "project-search": "/project/:project/search", + "project": "/project/:project" + "project-backlog": "/project/:project/backlog" + "project-taskboard": "/project/:project/taskboard/:sprint" + "project-kanban": "/project/:project/kanban" + "project-issues": "/project/:project/issues" + "project-search": "/project/:project/search" - "project-userstories-detail": "/project/:project/us/:ref", - "project-userstories-detail-edit": "/project/:project/us/:ref/edit", + "project-userstories-detail": "/project/:project/us/:ref" + "project-userstories-detail-edit": "/project/:project/us/:ref/edit" - "project-tasks-detail": "/project/:project/tasks/:ref", - "project-tasks-detail-edit": "/project/:project/tasks/:ref/edit", + "project-tasks-detail": "/project/:project/tasks/:ref" + "project-tasks-detail-edit": "/project/:project/tasks/:ref/edit" "project-wiki": "/project/:project/wiki", "project-wiki-page": "/project/:project/wiki/:slug", - "project-issues-detail": "/project/:project/issues/:ref", - "project-issues-detail-edit": "/project/:project/issues/:ref/edit", - # Admin - "project-admin-home": "/project/:project/admin/project-profile/details", - "project-admin-project-profile-details": "/project/:project/admin/project-profile/details", - "project-admin-project-profile-default-values": "/project/:project/admin/project-profile/default-values", - "project-admin-project-profile-features": "/project/:project/admin/project-profile/features", - "project-admin-project-values-us-status": "/project/:project/admin/project-values/us-status", - "project-admin-project-values-us-points": "/project/:project/admin/project-values/us-points", - "project-admin-project-values-task-status": "/project/:project/admin/project-values/task-status", - "project-admin-project-values-issue-status": "/project/:project/admin/project-values/issue-status", - "project-admin-project-values-issue-types": "/project/:project/admin/project-values/issue-types", - "project-admin-project-values-issue-priorities": "/project/:project/admin/project-values/issue-priorities", - "project-admin-project-values-issue-severities": "/project/:project/admin/project-values/issue-severities", + "project-admin-home": "/project/:project/admin/project-profile/details" + "project-admin-project-profile-details": "/project/:project/admin/project-profile/details" + "project-admin-project-profile-default-values": "/project/:project/admin/project-profile/default-values" + "project-admin-project-profile-features": "/project/:project/admin/project-profile/features" + "project-admin-project-values-us-status": "/project/:project/admin/project-values/us-status" + "project-admin-project-values-us-points": "/project/:project/admin/project-values/us-points" + "project-admin-project-values-task-status": "/project/:project/admin/project-values/task-status" + "project-admin-project-values-issue-status": "/project/:project/admin/project-values/issue-status" + "project-admin-project-values-issue-types": "/project/:project/admin/project-values/issue-types" + "project-admin-project-values-issue-priorities": "/project/:project/admin/project-values/issue-priorities" + "project-admin-project-values-issue-severities": "/project/:project/admin/project-values/issue-severities" "project-admin-memberships": "/project/:project/admin/memberships" + "project-admin-project-profile-features": "/project/:project/admin/project-profile/features" + "project-admin-project-values-us-status": "/project/:project/admin/project-values/us-status" + + # User settings + "user-settings-user-profile": "/project/:project/user-settings/user-profile" + "user-settings-mail-notifications": "/project/:project/user-settings/mail-notifications" + } init = ($log, $navurls) -> diff --git a/app/coffee/modules/nav.coffee b/app/coffee/modules/nav.coffee index c2ee2808..f67419ad 100644 --- a/app/coffee/modules/nav.coffee +++ b/app/coffee/modules/nav.coffee @@ -69,47 +69,60 @@ module.directive("tgProjectsNav", ProjectsNavigationDirective) ProjectMenuDirective = ($log, $compile, $rootscope) -> menuEntriesTemplate = _.template(""" - + """) mainTemplate = _.template(""" @@ -118,19 +131,7 @@ ProjectMenuDirective = ($log, $compile, $rootscope) -> Taiga - -
- -
+ """) renderMainMenu = ($el) -> @@ -141,7 +142,7 @@ ProjectMenuDirective = ($log, $compile, $rootscope) -> # This rerenders and compiles the navigation when ng-view # content loaded signal is raised using inner scope. renderMenuEntries = ($el, targetScope) -> - container = $el.find("ul.main-nav") + container = $el.find(".menu-container") sectionName = targetScope.section dom = $compile(menuEntriesTemplate({}))(targetScope) @@ -158,6 +159,16 @@ ProjectMenuDirective = ($log, $compile, $rootscope) -> event.preventDefault() $rootscope.$broadcast("nav:projects-list:open") + $el.on "click", ".user-settings .avatar", (event) -> + event.preventDefault() + $el.find(".user-settings .popover").show() + # Hide when click outside + body = angular.element("body") + body.on "click", (event) => + if angular.element(event.target).parents(".user-settings").length == 0 + $el.find(".popover").hide() + body.unbind("click") + $scope.$on "$viewContentLoaded", (ctx) -> if ctx.targetScope.$$childHead is null || ctx.targetScope.$$childHead.hideMenu $el.addClass("hidden") diff --git a/app/partials/user-profile.jade b/app/partials/user-profile.jade index 7751c77b..74b0e552 100644 --- a/app/partials/user-profile.jade +++ b/app/partials/user-profile.jade @@ -1,4 +1,4 @@ -extends layout +extends dummy-layout block head title Taiga Project management web application with scrum in mind! @@ -6,10 +6,7 @@ block head block content div.wrapper sidebar.menu-secondary.sidebar - include views/modules/admin-menu - - sidebar.menu-tertiary.sidebar - include views/modules/admin-submenu-project-profile + include views/modules/user-settings-menu section.main.user-profile header @@ -32,5 +29,6 @@ block content input(type="submit", class="hidden") a.button.button-green(href="") Save a.delete-account(href="", title="Delete Taiga account") Delete Taiga account - div.lightbox.lightbox-delete-account - include views/modules/lightbox-delete-account \ No newline at end of file + + div.lightbox.lightbox-delete-account.hidden + include views/modules/lightbox-delete-account diff --git a/app/partials/views/modules/nav.jade b/app/partials/views/modules/nav.jade index 36c556ea..027a2faa 100644 --- a/app/partials/views/modules/nav.jade +++ b/app/partials/views/modules/nav.jade @@ -35,8 +35,6 @@ nav.menu div.user div.user-settings ul.popover - li - a(href="", title="Change profile photo") Change profile photo li a(href="", title="Account settings") Account settings li diff --git a/app/partials/views/modules/user-settings-menu.jade b/app/partials/views/modules/user-settings-menu.jade new file mode 100644 index 00000000..808b5ecc --- /dev/null +++ b/app/partials/views/modules/user-settings-menu.jade @@ -0,0 +1,18 @@ +section.admin-menu + header + h1 User Settings + + nav + ul + li#usersettingsmenu-user-profile + a(href="", tg-nav="project-admin-project-profile-details:project=project.slug") + span.title User profile + span.icon.icon-arrow-right + li#usersettingsmenu-avatar + a(href="" tg-nav="project-admin-memberships:project=project.slug") + span.title User avatar + span.icon.icon-arrow-right + li#usersettingsmenu-mail-notifications + a(href="", tg-nav="project-admin-project-values-us-status:project=project.slug") + span.title Email notificiations + span.icon.icon-arrow-right