fix #68 - confusing behavior on adding new member

stable
Juanfran 2014-10-06 09:40:55 +02:00
parent f35a6eaf0a
commit 08a03f73bf
2 changed files with 28 additions and 9 deletions

View File

@ -34,10 +34,10 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
template = _.template("""
<div class="add-member-wrapper">
<fieldset>
<input type="email" placeholder="Type an Email" data-required="true" data-type="email"/>
<input type="email" placeholder="Type an Email" <% if(required) { %> data-required="true" <% } %> data-type="email" />
</fieldset>
<fieldset>
<select data-required="true">
<select <% if(required) { %> data-required="true" <% } %> data-required="true">
<% _.each(roleList, function(role) { %>
<option value="<%- role.id %>"><%- role.name %></option>
<% }); %>
@ -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}

View File

@ -227,6 +227,12 @@
}
.checksley-error-list {
right: .5rem;
li {
display: none;
&:first-child {
display: block;
}
}
}
}