From 92f501d519a581491a066f371191ff777604cef1 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 21 Jul 2014 11:52:38 +0200 Subject: [PATCH] Adding project features to admin --- app/coffee/app.coffee | 3 ++ .../modules/admin/project-profile.coffee | 47 ++++++++++++++++--- app/coffee/modules/base.coffee | 1 + app/coffee/modules/tasks/detail.coffee | 2 +- ...ities.jade => admin-project-features.jade} | 45 +++++++++--------- .../admin-submenu-project-profile.jade | 2 +- 6 files changed, 70 insertions(+), 30 deletions(-) rename app/partials/{functionalities.jade => admin-project-features.jade} (55%) diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index 9efd40a4..473fb5ba 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -54,6 +54,9 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $routeProvider.when("/project/:pslug/admin/project-profile/details", {templateUrl: "/partials/admin-project-profile.html"}) + $routeProvider.when("/project/:pslug/admin/project-profile/features", + {templateUrl: "/partials/admin-project-features.html"}) + # Auth $routeProvider.when("/login", {templateUrl: "/partials/login.html"}) $routeProvider.when("/register", {templateUrl: "/partials/register.html"}) diff --git a/app/coffee/modules/admin/project-profile.coffee b/app/coffee/modules/admin/project-profile.coffee index d4f48756..d290965a 100644 --- a/app/coffee/modules/admin/project-profile.coffee +++ b/app/coffee/modules/admin/project-profile.coffee @@ -78,11 +78,7 @@ module.controller("ProjectProfileController", ProjectProfileController) ProjectProfileDirective = ($log, $repo, $confirm) -> link = ($scope, $el, $attrs) -> - $log.info "ProjectProfileDirective:link" - form = $el.find("form").checksley() - console.log form, $el.find("form") - submit = => return if not form.validate() @@ -96,14 +92,53 @@ ProjectProfileDirective = ($log, $repo, $confirm) -> $el.on "submit", "form", (event) -> event.preventDefault() - $log.error "ProjectProfileDirective:submit" submit() $el.on "click", "form a.button-green", (event) -> event.preventDefault() - $log.error "ProjectProfileDirective:submit a button" submit() return {link:link} +############################################################################# +## Project Features Directive +############################################################################# + +ProjectFeaturesDirective = ($log, $repo, $confirm) -> + link = ($scope, $el, $attrs) -> + form = $el.find("form").checksley() + submit = => + return if not form.validate() + + promise = $repo.save($scope.project) + promise.then -> + $confirm.notify("success") + + promise.then null, (data) -> + console.log "FAIL" + # TODO + + $el.on "submit", "form", (event) -> + event.preventDefault() + submit() + + $el.on "click", "form a.button-green", (event) -> + event.preventDefault() + submit() + + $scope.$watch "isVideoconferenceActivated", (isVideoconferenceActivated) -> + if isVideoconferenceActivated + $el.find(".videoconference-attributes").show() + else + $el.find(".videoconference-attributes").hide() + $scope.project.videoconferences = null + $scope.project.videoconferences_salt = "" + + $scope.$watch "project", (project) -> + if project.videoconferences? + $scope.isVideoconferenceActivated = true + + return {link:link} + module.directive("tgProjectProfile", ["$log", "$tgRepo", "$tgConfirm", ProjectProfileDirective]) +module.directive("tgProjectFeatures", ["$log", "$tgRepo", "$tgConfirm", ProjectFeaturesDirective]) diff --git a/app/coffee/modules/base.coffee b/app/coffee/modules/base.coffee index 09cc968f..0d8ff239 100644 --- a/app/coffee/modules/base.coffee +++ b/app/coffee/modules/base.coffee @@ -68,6 +68,7 @@ urls = { # 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-features": "/project/:project/admin/project-profile/features" } init = ($log, $navurls) -> diff --git a/app/coffee/modules/tasks/detail.coffee b/app/coffee/modules/tasks/detail.coffee index 39386b74..19ca585f 100644 --- a/app/coffee/modules/tasks/detail.coffee +++ b/app/coffee/modules/tasks/detail.coffee @@ -74,7 +74,7 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin) if historyResult.values_diff.is_iocaine historyResult.values_diff.is_iocaine = _.map(historyResult.values_diff.is_iocaine, (v) -> {true: 'Yes', false: 'No'}[v]) - + delete historyResult.values_diff.description_html delete historyResult.values_diff.description_diff diff --git a/app/partials/functionalities.jade b/app/partials/admin-project-features.jade similarity index 55% rename from app/partials/functionalities.jade rename to app/partials/admin-project-features.jade index 11f99240..4fd620a3 100644 --- a/app/partials/functionalities.jade +++ b/app/partials/admin-project-features.jade @@ -1,63 +1,64 @@ -extends layout +extends dummy-layout block head title Taiga Project management web application with scrum in mind! block content - div.wrapper - sidebar.menu-secondary.sidebar + div.wrapper(tg-project-features, ng-controller="ProjectProfileController as ctrl", + ng-init="section='admin'") + sidebar.menu-secondary.sidebar(tg-admin-navigation="project-profile") include views/modules/admin-menu - sidebar.menu-tertiary.sidebar - include views/modules/admin-submenu + + sidebar.menu-tertiary.sidebar(tg-admin-navigation="features") + include views/modules/admin-submenu-project-profile section.main.admin-functionalities header include views/components/mainTitle - section - div.functionality + form + div.functionality(ng-class="{true:'active', false:''}[project.is_backlog_activated]") + input(type="checkbox", style="width:40px; height: 40px;", ng-model="project.is_backlog_activated") div.icon.icon-backlog div.desc p span Backlog | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sagittis quam augue, quis bibendum lectus porta eget. Nunc dictum imperdiet venenatis. Curabitur vitae augue ut est rhoncus pellentesque. Nunc sed ultricies est, tincidunt euismod nunc. Nunc nec posuere metus. - div.functionality.active + div.functionality(ng-class="{true:'active', false:''}[project.is_kanban_activated]") + input(type="checkbox", style="width:40px; height: 40px;", ng-model="project.is_kanban_activated") div.icon.icon-kanban div.desc p span Kanban | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sagittis quam augue, quis bibendum lectus porta eget. Nunc dictum imperdiet venenatis. Curabitur vitae augue ut est rhoncus pellentesque. Nunc sed ultricies est, tincidunt euismod nunc. Nunc nec posuere metus. - div.functionality + div.functionality(ng-class="{true:'active', false:''}[project.is_issues_activated]") + input(type="checkbox", style="width:40px; height: 40px;", ng-model="project.is_issues_activated") div.icon.icon-issues div.desc p span Issues | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sagittis quam augue, quis bibendum lectus porta eget. Nunc dictum imperdiet venenatis. Curabitur vitae augue ut est rhoncus pellentesque. Nunc sed ultricies est, tincidunt euismod nunc. Nunc nec posuere metus. - div.functionality.active + div.functionality(ng-class="{true:'active', false:''}[project.is_wiki_activated]") + input(type="checkbox", style="width:40px; height: 40px;", ng-model="project.is_wiki_activated") div.icon.icon-wiki div.desc p span Wiki | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sagittis quam augue, quis bibendum lectus porta eget. Nunc dictum imperdiet venenatis. Curabitur vitae augue ut est rhoncus pellentesque. Nunc sed ultricies est, tincidunt euismod nunc. Nunc nec posuere metus. - div.functionality.active + div.functionality(ng-class="{true:'active', false:''}[isVideoconferenceActivated]") + input(type="checkbox", style="width:40px; height: 40px;", ng-model="isVideoconferenceActivated") div.icon.icon-video div.desc p span Video | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sagittis quam augue, quis bibendum lectus porta eget. Nunc dictum imperdiet venenatis. Curabitur vitae augue ut est rhoncus pellentesque. Nunc sed ultricies est, tincidunt euismod nunc. Nunc nec posuere metus. - select - option Option 1 - option Option 2 - option Option 3 - option Option 4 - - select - option Option 1 - option Option 2 - option Option 3 - option Option 4 + div.videoconference-attributes.hidden + select(ng-model="project.videoconferences", ng-options="e.id as e.name for e in [{'id':'appear-in', 'name':'AppearIn'},{'id':'talky', 'name': 'Talky'}]") + input(ng-model="project.videoconferences_salt", placeholder="write a name for the chat room (ej. the name of the project)") + input(type="submit", class="hidden") + a.button.button-green(href="") Save diff --git a/app/partials/views/modules/admin-submenu-project-profile.jade b/app/partials/views/modules/admin-submenu-project-profile.jade index 14f8c635..91173ff1 100644 --- a/app/partials/views/modules/admin-submenu-project-profile.jade +++ b/app/partials/views/modules/admin-submenu-project-profile.jade @@ -13,6 +13,6 @@ section.admin-submenu span.title Default Values span.icon.icon-arrow-right li#adminmenu-features - a(href="") + a(href="", tg-nav="project-admin-project-profile-features:project=project.slug") span.title Features span.icon.icon-arrow-right