Merge pull request #128 from taigaio/us/1396/extra-text-for-inviting-users

Us/1396/extra text for inviting users
stable
David Barragán Merino 2014-10-29 17:34:26 +01:00
commit a366706695
5 changed files with 37 additions and 19 deletions

View File

@ -7,6 +7,7 @@
- Add visual difference to closed USs in backlog panel.
- Show crerated date of attachments in the hover of the filename.
- Add beta ribbon.
- Support for custom text when inviting users.
### Misc
- Lots of small and not so small bugfixes

View File

@ -24,13 +24,19 @@ debounce = @.taiga.debounce
module = angular.module("taigaKanban")
MAX_MEMBERSHIP_FIELDSETS = 6
MAX_MEMBERSHIP_FIELDSETS = 4
#############################################################################
## Create Members Lightbox Directive
#############################################################################
CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
extraTextTemplate = """
<fieldset class="extra-text">
<textarea placeholder="(Optional) Add a personalized text to the invitation. Tell something lovely to your new members ;-)"></textarea>
</fieldset>
"""
template = _.template("""
<div class="add-member-wrapper">
<fieldset>
@ -53,11 +59,14 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
return template(ctx)
resetForm = ->
$el.find("form > .add-member-wrapper").remove()
$el.find("form textarea").remove("")
$el.find("form .add-member-wrapper").remove()
invitations = $el.find(".add-member-forms")
invitations.html(extraTextTemplate)
title = $el.find("h2")
fieldSet = createFieldSet()
title.after(fieldSet)
invitations.prepend(fieldSet)
$scope.$on "membersform:new", ->
resetForm()
@ -91,7 +100,7 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
fieldSet.after(newFieldSet)
if $el.find(".add-member-wrapper").length == MAX_MEMBERSHIP_FIELDSETS
$el.find("fieldset:last > a").removeClass("icon-plus add-fieldset")
$el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset")
.addClass("icon-delete delete-fieldset")
$el.on "click", ".button-green", debounce 2000, (event) ->
@ -112,12 +121,10 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
#checksley find new fields
form.destroy()
form.initialize()
if not form.validate()
return
memberWrappers = $el.find("form > .add-member-wrapper")
memberWrappers = $el.find("form .add-member-wrapper")
memberWrappers = _.filter memberWrappers, (mw) ->
angular.element(mw).find("input").hasClass('checksley-ok')
@ -132,7 +139,9 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
}
if invitations.length
$rs.memberships.bulkCreateMemberships($scope.project.id, invitations).then(onSuccess, onError)
invitation_extra_text = $el.find("form textarea").val()
$rs.memberships.bulkCreateMemberships($scope.project.id, invitations, invitation_extra_text).then(onSuccess, onError)
return {link: link}

View File

@ -42,9 +42,9 @@ resourceProvider = ($repo, $http, $urls) ->
url = $urls.resolve("memberships")
return $http.post("#{url}/#{id}/resend_invitation", {})
service.bulkCreateMemberships = (projectId, data) ->
service.bulkCreateMemberships = (projectId, data, invitation_extra_text) ->
url = $urls.resolve("bulk-create-memberships")
params = {project_id: projectId, bulk_memberships: data}
params = {project_id: projectId, bulk_memberships: data, invitation_extra_text: invitation_extra_text}
return $http.post(url, params)
return (instance) ->

View File

@ -4,6 +4,7 @@ form
h2.title New Member
//- Form is set in a directive
.add-member-forms
a.button.button-green(href="", title="Save")
span Create

View File

@ -150,16 +150,23 @@
.lightbox-add-member {
.add-member-wrapper {
@include table-flex();
}
fieldset {
position: relative;
&:first-child {
@include table-flex-child(3, 400px);
}
margin-bottom: .5rem;
&:last-child {
@include table-flex-child(1, 200px);
margin-left: .5rem;
margin-bottom: 0;
}
fieldset {
position: relative;
&:first-child {
@include table-flex-child(3, 400px);
}
&:last-child {
@include table-flex-child(1, 200px);
margin-left: .5rem;
}
}
}
.extra-text {
margin-top: 1rem;
}
input[type=email],
select {