Merge pull request #128 from taigaio/us/1396/extra-text-for-inviting-users
Us/1396/extra text for inviting usersstable
commit
a366706695
|
@ -7,6 +7,7 @@
|
||||||
- Add visual difference to closed USs in backlog panel.
|
- Add visual difference to closed USs in backlog panel.
|
||||||
- Show crerated date of attachments in the hover of the filename.
|
- Show crerated date of attachments in the hover of the filename.
|
||||||
- Add beta ribbon.
|
- Add beta ribbon.
|
||||||
|
- Support for custom text when inviting users.
|
||||||
|
|
||||||
### Misc
|
### Misc
|
||||||
- Lots of small and not so small bugfixes
|
- Lots of small and not so small bugfixes
|
||||||
|
|
|
@ -24,13 +24,19 @@ debounce = @.taiga.debounce
|
||||||
|
|
||||||
module = angular.module("taigaKanban")
|
module = angular.module("taigaKanban")
|
||||||
|
|
||||||
MAX_MEMBERSHIP_FIELDSETS = 6
|
MAX_MEMBERSHIP_FIELDSETS = 4
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
## Create Members Lightbox Directive
|
## Create Members Lightbox Directive
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
|
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("""
|
template = _.template("""
|
||||||
<div class="add-member-wrapper">
|
<div class="add-member-wrapper">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -53,11 +59,14 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
|
||||||
return template(ctx)
|
return template(ctx)
|
||||||
|
|
||||||
resetForm = ->
|
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()
|
fieldSet = createFieldSet()
|
||||||
title.after(fieldSet)
|
invitations.prepend(fieldSet)
|
||||||
|
|
||||||
$scope.$on "membersform:new", ->
|
$scope.$on "membersform:new", ->
|
||||||
resetForm()
|
resetForm()
|
||||||
|
@ -91,7 +100,7 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
|
||||||
fieldSet.after(newFieldSet)
|
fieldSet.after(newFieldSet)
|
||||||
|
|
||||||
if $el.find(".add-member-wrapper").length == MAX_MEMBERSHIP_FIELDSETS
|
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")
|
.addClass("icon-delete delete-fieldset")
|
||||||
|
|
||||||
$el.on "click", ".button-green", debounce 2000, (event) ->
|
$el.on "click", ".button-green", debounce 2000, (event) ->
|
||||||
|
@ -112,12 +121,10 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
|
||||||
#checksley find new fields
|
#checksley find new fields
|
||||||
form.destroy()
|
form.destroy()
|
||||||
form.initialize()
|
form.initialize()
|
||||||
|
|
||||||
if not form.validate()
|
if not form.validate()
|
||||||
return
|
return
|
||||||
|
|
||||||
memberWrappers = $el.find("form > .add-member-wrapper")
|
memberWrappers = $el.find("form .add-member-wrapper")
|
||||||
|
|
||||||
memberWrappers = _.filter memberWrappers, (mw) ->
|
memberWrappers = _.filter memberWrappers, (mw) ->
|
||||||
angular.element(mw).find("input").hasClass('checksley-ok')
|
angular.element(mw).find("input").hasClass('checksley-ok')
|
||||||
|
|
||||||
|
@ -132,7 +139,9 @@ CreateMembersDirective = ($rs, $rootScope, $confirm, lightboxService) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
if invitations.length
|
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}
|
return {link: link}
|
||||||
|
|
||||||
|
|
|
@ -42,9 +42,9 @@ resourceProvider = ($repo, $http, $urls) ->
|
||||||
url = $urls.resolve("memberships")
|
url = $urls.resolve("memberships")
|
||||||
return $http.post("#{url}/#{id}/resend_invitation", {})
|
return $http.post("#{url}/#{id}/resend_invitation", {})
|
||||||
|
|
||||||
service.bulkCreateMemberships = (projectId, data) ->
|
service.bulkCreateMemberships = (projectId, data, invitation_extra_text) ->
|
||||||
url = $urls.resolve("bulk-create-memberships")
|
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 $http.post(url, params)
|
||||||
|
|
||||||
return (instance) ->
|
return (instance) ->
|
||||||
|
|
|
@ -4,6 +4,7 @@ form
|
||||||
h2.title New Member
|
h2.title New Member
|
||||||
|
|
||||||
//- Form is set in a directive
|
//- Form is set in a directive
|
||||||
|
.add-member-forms
|
||||||
|
|
||||||
a.button.button-green(href="", title="Save")
|
a.button.button-green(href="", title="Save")
|
||||||
span Create
|
span Create
|
||||||
|
|
|
@ -150,16 +150,23 @@
|
||||||
.lightbox-add-member {
|
.lightbox-add-member {
|
||||||
.add-member-wrapper {
|
.add-member-wrapper {
|
||||||
@include table-flex();
|
@include table-flex();
|
||||||
}
|
margin-bottom: .5rem;
|
||||||
fieldset {
|
|
||||||
position: relative;
|
|
||||||
&:first-child {
|
|
||||||
@include table-flex-child(3, 400px);
|
|
||||||
}
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
@include table-flex-child(1, 200px);
|
margin-bottom: 0;
|
||||||
margin-left: .5rem;
|
|
||||||
}
|
}
|
||||||
|
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],
|
input[type=email],
|
||||||
select {
|
select {
|
||||||
|
|
Loading…
Reference in New Issue