From 08a03f73bfe460766bcde639e543588b04410fae Mon Sep 17 00:00:00 2001 From: Juanfran Date: Mon, 6 Oct 2014 09:40:55 +0200 Subject: [PATCH] fix #68 - confusing behavior on adding new member --- app/coffee/modules/admin/lightboxes.coffee | 31 +++++++++++++++------- app/styles/modules/common/lightbox.scss | 6 +++++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/app/coffee/modules/admin/lightboxes.coffee b/app/coffee/modules/admin/lightboxes.coffee index db8a57a2..2cf83e74 100644 --- a/app/coffee/modules/admin/lightboxes.coffee +++ b/app/coffee/modules/admin/lightboxes.coffee @@ -34,10 +34,10 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) -> template = _.template("""
- + data-required="true" <% } %> data-type="email" />
- data-required="true" <% } %> data-required="true"> <% _.each(roleList, function(role) { %> <% }); %> @@ -48,8 +48,8 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) -> """) # i18n link = ($scope, $el, $attrs) -> - createFieldSet = -> - ctx = {roleList: $scope.roles} + createFieldSet = (required = true)-> + ctx = {roleList: $scope.roles, required: required} return template(ctx) resetForm = -> @@ -86,10 +86,11 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) -> target.removeClass("icon-plus add-fieldset") .addClass("icon-delete delete-fieldset") - newFieldSet = createFieldSet() + newFieldSet = createFieldSet(false) + fieldSet.after(newFieldSet) - if $el.find("fieldset").length == MAX_MEMBERSHIP_FIELDSETS + if $el.find(".add-member-wrapper").length == MAX_MEMBERSHIP_FIELDSETS $el.find("fieldset:last > a").removeClass("icon-plus add-fieldset") .addClass("icon-delete delete-fieldset") @@ -107,19 +108,31 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) -> $rootScope.$broadcast("membersform:new:error") form = $el.find("form").checksley() + + #checksley find new fields + form.destroy() + form.initialize() + if not form.validate() return memberWrappers = $el.find("form > .add-member-wrapper") + memberWrappers = _.filter memberWrappers, (mw) -> + angular.element(mw).find("input").hasClass('checksley-ok') + invitations = _.map memberWrappers, (mw) -> memberWrapper = angular.element(mw) + email = memberWrapper.find("input") + role = memberWrapper.find("select") + return { - email: memberWrapper.find("input").val() - role_id: memberWrapper.find("select").val() + email: email.val() + role_id: role.val() } - $rs.memberships.bulkCreateMemberships($scope.project.id, invitations).then(onSuccess, onError) + if invitations.length + $rs.memberships.bulkCreateMemberships($scope.project.id, invitations).then(onSuccess, onError) return {link: link} diff --git a/app/styles/modules/common/lightbox.scss b/app/styles/modules/common/lightbox.scss index f24a7b3d..7bb1210a 100644 --- a/app/styles/modules/common/lightbox.scss +++ b/app/styles/modules/common/lightbox.scss @@ -227,6 +227,12 @@ } .checksley-error-list { right: .5rem; + li { + display: none; + &:first-child { + display: block; + } + } } }