From c1f07bf8c3eaf8adf3858128076e69d83ed69791 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Fri, 1 Aug 2014 13:22:03 +0200 Subject: [PATCH] create project lightbox --- app/coffee/app.coffee | 1 - app/coffee/modules/projects.coffee | 1 + app/coffee/modules/projects/lightboxes.coffee | 42 +++++++++++++++++++ .../{project.coffee => projects/main.coffee} | 11 ++--- app/partials/create-project.jade | 23 ---------- app/partials/project.jade | 3 +- app/partials/projects.jade | 5 ++- .../modules/lightbox_create-project.jade | 17 ++++++++ app/styles/modules/common/lightbox.scss | 6 +++ gulpfile.coffee | 1 + 10 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 app/coffee/modules/projects.coffee create mode 100644 app/coffee/modules/projects/lightboxes.coffee rename app/coffee/modules/{project.coffee => projects/main.coffee} (95%) delete mode 100644 app/partials/create-project.jade create mode 100644 app/partials/views/modules/lightbox_create-project.jade diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index 7826859e..3d9c82df 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -24,7 +24,6 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide) -> $routeProvider.when("/", {templateUrl: "/partials/projects.html"}) - $routeProvider.when("/create-project", {templateUrl: "/partials/create-project.html"}) $routeProvider.when("/project/:pslug/", {templateUrl: "/partials/project.html"}) $routeProvider.when("/project/:pslug/backlog", {templateUrl: "/partials/backlog.html"}) $routeProvider.when("/project/:pslug/taskboard/:id", {templateUrl: "/partials/taskboard.html"}) diff --git a/app/coffee/modules/projects.coffee b/app/coffee/modules/projects.coffee new file mode 100644 index 00000000..75c024a3 --- /dev/null +++ b/app/coffee/modules/projects.coffee @@ -0,0 +1 @@ +module = angular.module("taigaProject", []) diff --git a/app/coffee/modules/projects/lightboxes.coffee b/app/coffee/modules/projects/lightboxes.coffee new file mode 100644 index 00000000..b7da83fa --- /dev/null +++ b/app/coffee/modules/projects/lightboxes.coffee @@ -0,0 +1,42 @@ +taiga = @.taiga +bindOnce = @.taiga.bindOnce + +module = angular.module("taigaProject") + +CreateProject = ($repo, $confirm, $location, $navurls) -> + link = ($scope, $el, attrs) -> + $scope.data = {} + form = $el.find("form").checksley() + + onSuccessSubmit = (response) -> + $confirm.notify("success", "Success") #TODO: i18n + + url = $navurls.resolve('project') + fullUrl = $navurls.formatUrl(url, {'project': response.slug}) + + $location.url(fullUrl) + + onErrorSubmit = (response) -> + $confirm.notify("light-error", "According to our Oompa Loompas, project name is + already in use.") #TODO: i18n + + submit = -> + if not form.validate() + return + promise = $repo.create("projects", $scope.data) + promise.then(onSuccessSubmit, onErrorSubmit) + + $scope.$on "projects:create", -> + $el.removeClass("hidden") + + $el.on "click", ".close", (event) -> + event.preventDefault() + $el.addClass("hidden") + + $el.on "click", "a.button-green", (event) -> + event.preventDefault() + submit() + + return {link:link} + +module.directive("tgLbCreateProject", ["$tgRepo", "$tgConfirm", "$location", "$tgNavUrls", CreateProject]) diff --git a/app/coffee/modules/project.coffee b/app/coffee/modules/projects/main.coffee similarity index 95% rename from app/coffee/modules/project.coffee rename to app/coffee/modules/projects/main.coffee index 4ef7e1f9..03898e75 100644 --- a/app/coffee/modules/project.coffee +++ b/app/coffee/modules/projects/main.coffee @@ -1,11 +1,10 @@ taiga = @.taiga -module = angular.module("taigaProject", []) - +module = angular.module("taigaProject") class ProjectsController extends taiga.Controller - @.$inject = ["$scope", "$tgResources"] + @.$inject = ["$scope", "$tgResources", "$rootScope"] - constructor: (@scope, @rs) -> + constructor: (@scope, @rs, @rootscope) -> @scope.hideMenu = true @.projects = [] @.loadInitialData() @@ -14,8 +13,10 @@ class ProjectsController extends taiga.Controller return @rs.projects.list().then (projects) => @.projects = {'recents': projects.slice(0, 8), 'all': projects.slice(8)} -module.controller("ProjectsController", ProjectsController) + newProject: -> + @rootscope.$broadcast("projects:create") +module.controller("ProjectsController", ProjectsController) class ProjectController extends taiga.Controller @.$inject = ["$scope", "$tgResources", "$tgRepo", "$routeParams", "$q", "$rootScope"] diff --git a/app/partials/create-project.jade b/app/partials/create-project.jade deleted file mode 100644 index fb253e1b..00000000 --- a/app/partials/create-project.jade +++ /dev/null @@ -1,23 +0,0 @@ -extends dummy-layout - -block head - title Taiga Project management web application with scrum in mind! - -block content - div.wrapper - div.create-project - div.create-project-container(tg-create-project) - h1 Create Project - form - fieldset - input(type="text", name="name", ng-model="data.name", data-required="true", - placeholder="Name") - fieldset - input(type="text", name="description", ng-model="data.description", data-required="true", - placeholder="Description") - fieldset - input(type="text", name="total_story_point", ng-model="data.total_story_point", data-required="true", - placeholder="Total story point") - fieldset - a.button.button-create.button-gray(href="", title="Create") Create - input(type="submit", class="hidden") diff --git a/app/partials/project.jade b/app/partials/project.jade index 71593178..d8f48298 100644 --- a/app/partials/project.jade +++ b/app/partials/project.jade @@ -7,7 +7,7 @@ block content div.wrapper(ng-controller="ProjectController as ctrl") section.main.single-project h1 - span.green(tg-bo-html="ctrl.project.name") + span.green(tg-bo-html="project.name") div.summary ul.home-project-info-list li @@ -28,4 +28,3 @@ block content li(ng-repeat="member in project.active_memberships") figure.avatar img(src="{{member.photo}}", alt="{{member.full_name}}") - diff --git a/app/partials/projects.jade b/app/partials/projects.jade index b0afaa78..ded7194e 100644 --- a/app/partials/projects.jade +++ b/app/partials/projects.jade @@ -22,4 +22,7 @@ block content a.button(href="", tg-bo-html="project.name", tg-nav="project:project=project.slug") .create-project-button-wrapper - a.button.button-green(href="", tg-nav="create-project") Create project \ No newline at end of file + a.button.button-green(href="", ng-click="ctrl.newProject()") Create project + + div.lightbox.lightbox_create-project.hidden(tg-lb-create-project) + include views/modules/lightbox_create-project \ No newline at end of file diff --git a/app/partials/views/modules/lightbox_create-project.jade b/app/partials/views/modules/lightbox_create-project.jade new file mode 100644 index 00000000..a7fc750a --- /dev/null +++ b/app/partials/views/modules/lightbox_create-project.jade @@ -0,0 +1,17 @@ +a.close(href="", title="close") + span.icon.icon-delete +form + h2.title Create Project + form + fieldset + input(type="text", name="name", ng-model="data.name", data-required="true", + placeholder="Name") + fieldset + input(type="text", name="description", ng-model="data.description", data-required="true", + placeholder="Description") + fieldset + input(type="text", name="total_story_point", ng-model="data.total_story_point", data-required="true", + placeholder="Total story point") + fieldset + a.button.button-green(href="", title="Create") Create + input(type="submit", class="hidden") diff --git a/app/styles/modules/common/lightbox.scss b/app/styles/modules/common/lightbox.scss index f5636a5a..67486089 100644 --- a/app/styles/modules/common/lightbox.scss +++ b/app/styles/modules/common/lightbox.scss @@ -368,3 +368,9 @@ text-align: center; } } + +.lightbox_create-project { + form { + width: 600px; + } +} \ No newline at end of file diff --git a/gulpfile.coffee b/gulpfile.coffee index d7c92fa9..03c39ddc 100644 --- a/gulpfile.coffee +++ b/gulpfile.coffee @@ -48,6 +48,7 @@ paths = { "app/coffee/modules/tasks/*.coffee", "app/coffee/modules/wiki/*.coffee", "app/coffee/modules/admin/*.coffee", + "app/coffee/modules/projects/*.coffee", "app/coffee/modules/locales/*.coffee", "app/coffee/modules/base/*.coffee", "app/coffee/modules/resources/*.coffee",