Apply new signature in ticket zoom on group change.

This commit is contained in:
Martin Edenhofer 2015-11-16 17:14:33 +01:00
parent 0cb2cb0c4f
commit ecadd6e777
5 changed files with 52 additions and 27 deletions

View file

@ -31,7 +31,7 @@ class App.TicketCreate extends App.Controller
@fetch(params) @fetch(params)
# lisen if view need to be rerendert # lisen if view need to be rerendered
@bind 'ticket_create_rerender', (defaults) => @bind 'ticket_create_rerender', (defaults) =>
@log 'notice', 'error', defaults @log 'notice', 'error', defaults
@render(defaults) @render(defaults)
@ -41,6 +41,10 @@ class App.TicketCreate extends App.Controller
return if !@authenticate(true) return if !@authenticate(true)
@render() @render()
# bind on new ticket_create_attributes updates
@bind 'ticket_create_attributes', (data) =>
App.SessionStorage.set('ticket_create_attributes', data)
changeFormType: (e) => changeFormType: (e) =>
type = $(e.target).data('type') type = $(e.target).data('type')
if !type if !type
@ -134,7 +138,7 @@ class App.TicketCreate extends App.Controller
fetch: (params) -> fetch: (params) ->
# use cache # use cache
cache = App.SessionStorage.get( 'ticket_create_attributes' ) cache = App.SessionStorage.get('ticket_create_attributes')
if cache && !params.ticket_id && !params.article_id if cache && !params.ticket_id && !params.article_id
@ -142,7 +146,7 @@ class App.TicketCreate extends App.Controller
@form_meta = cache.form_meta @form_meta = cache.form_meta
# load assets # load assets
App.Collection.loadAssets( cache.assets ) App.Collection.loadAssets(cache.assets)
@render() @render()
else else
@ -157,13 +161,13 @@ class App.TicketCreate extends App.Controller
success: (data, status, xhr) => success: (data, status, xhr) =>
# cache request # cache request
App.SessionStorage.set( 'ticket_create_attributes', data ) App.SessionStorage.set('ticket_create_attributes', data)
# get edit form attributes # get edit form attributes
@form_meta = data.form_meta @form_meta = data.form_meta
# load assets # load assets
App.Collection.loadAssets( data.assets ) App.Collection.loadAssets(data.assets)
# split ticket # split ticket
if data.split && data.split.ticket_id && data.split.article_id if data.split && data.split.ticket_id && data.split.article_id

View file

@ -329,10 +329,12 @@ class App.TicketZoom extends App.Controller
new App.TicketZoomArticleNew( new App.TicketZoomArticleNew(
ticket: @ticket ticket: @ticket
ticket_id: @ticket.id
el: @$('.article-new') el: @$('.article-new')
form_meta: @form_meta form_meta: @form_meta
form_id: @form_id form_id: @form_id
defaults: @taskGet('article') defaults: @taskGet('article')
task_key: @task_key
ui: @ ui: @
) )

View file

@ -95,7 +95,7 @@ class App.TicketZoomArticleNew extends App.Controller
@bind( @bind(
'ui::ticket::setArticleType' 'ui::ticket::setArticleType'
(data) => (data) =>
return if data.ticket.id isnt @ticket.id return if data.ticket.id isnt @ticket_id
#@setArticleType(data.type.name) #@setArticleType(data.type.name)
@openTextarea(null, true) @openTextarea(null, true)
@ -113,7 +113,7 @@ class App.TicketZoomArticleNew extends App.Controller
@bind( @bind(
'ui::ticket::taskReset' 'ui::ticket::taskReset'
(data) => (data) =>
return if data.ticket_id isnt @ticket.id return if data.ticket_id isnt @ticket_id
@type = 'note' @type = 'note'
@defaults = {} @defaults = {}
@render() @render()
@ -131,7 +131,7 @@ class App.TicketZoomArticleNew extends App.Controller
render: -> render: ->
ticket = App.Ticket.fullLocal( @ticket.id ) ticket = App.Ticket.fullLocal( @ticket_id )
@html App.view('ticket_zoom/article_new')( @html App.view('ticket_zoom/article_new')(
ticket: ticket ticket: ticket
@ -343,16 +343,31 @@ class App.TicketZoomArticleNew extends App.Controller
for name in articleType.attributes for name in articleType.attributes
@$("[name=#{name}]").closest('.form-group').removeClass('hide') @$("[name=#{name}]").closest('.form-group').removeClass('hide')
# check if signature need to be added # detect current signature (use current group_id, if not set, use ticket.group_id)
body = @$('[data-name=body]').html() || '' ticketCurrent = App.Ticket.find(@ticket_id)
group_id = ticketCurrent.group_id
task = App.TaskManager.get(@task_key)
if task && task.state && task.state.ticket && task.state.ticket.group_id
group_id = task.state.ticket.group_id
group = App.Group.find(group_id)
signature = undefined signature = undefined
if @ticket.group.signature_id if group && group.signature_id
signature = App.Signature.find( @ticket.group.signature_id ) signature = App.Signature.find(group.signature_id)
# add/replace signature
if signature && signature.body && @type is 'email' if signature && signature.body && @type is 'email'
# if signature has changed, remove it
signature_id = @$('[data-signature=true]').data('signature-id')
if signature_id && signature_id.toString() isnt signature.id.toString()
@$('[data-name=body] [data-signature="true"]').remove()
# apply new signature
signatureFinished = App.Utils.text2html( signatureFinished = App.Utils.text2html(
App.Utils.replaceTags( signature.body, { user: App.Session.get(), ticket: @ticket } ) App.Utils.replaceTags( signature.body, { user: App.Session.get(), ticket: ticketCurrent } )
) )
if App.Utils.signatureCheck( body, signatureFinished ) body = @$('[data-name=body]').html() || ''
if App.Utils.signatureCheck(body, signatureFinished)
if !App.Utils.lastLineEmpty(body) if !App.Utils.lastLineEmpty(body)
body = body + '<br>' body = body + '<br>'
body = body + "<div data-signature=\"true\" data-signature-id=\"#{signature.id}\">#{signatureFinished}</div>" body = body + "<div data-signature=\"true\" data-signature-id=\"#{signature.id}\">#{signatureFinished}</div>"
@ -360,7 +375,7 @@ class App.TicketZoomArticleNew extends App.Controller
# remove old signature # remove old signature
else else
@$('[data-name=body]').find('[data-signature=true]').remove() @$('[data-name=body] [data-signature=true]').remove()
detectEmptyTextarea: => detectEmptyTextarea: =>
if !@textarea.text().trim() if !@textarea.text().trim()

View file

@ -53,14 +53,14 @@ class Sessions::Backend::TicketCreate
if !@client if !@client
return { return {
collection: 'ticket_create_attributes', event: 'ticket_create_attributes',
data: data, data: data,
} }
end end
@client.log "push ticket_create for user #{@user.id}" @client.log "push ticket_create for user #{@user.id}"
@client.send( @client.send(
collection: 'ticket_create_attributes', event: 'ticket_create_attributes',
data: data, data: data,
) )
end end

View file

@ -258,25 +258,29 @@ class AgentTicketActionLevel5Test < TestCase
no_quote: true, no_quote: true,
) )
=begin
# update group2 # update group2
select( select(
:css => '.active [name="group_id"]', css: '.active [name="group_id"]',
:value => group_name2, value: group_name2,
)
# execute reply
sleep 5 # time to recognice form changes
click(
css: '.active [data-type="reply"]',
) )
# check if signature exists # check if signature exists
match_not( match_not(
:css => '.active [data-name="body"]', css: '.active [data-name="body"]',
:value => signature_body1, value: signature_body1,
:no_quote => true, no_quote: true,
) )
match( match(
:css => '.active [data-name="body"]', css: '.active [data-name="body"]',
:value => signature_body2, value: signature_body2,
:no_quote => true, no_quote: true,
) )
=end
# discard changes # discard changes
sleep 2 sleep 2