Fixes #3088 - Notes on existing ticks are discarded by editing profile settings.
This commit is contained in:
parent
3b18f7feaf
commit
61406365f0
3 changed files with 110 additions and 19 deletions
|
@ -263,6 +263,10 @@ class App.TicketZoom extends App.Controller
|
||||||
@positionPageHeaderStart()
|
@positionPageHeaderStart()
|
||||||
@autosaveStart()
|
@autosaveStart()
|
||||||
@shortcutNavigationStart()
|
@shortcutNavigationStart()
|
||||||
|
|
||||||
|
if @articleNew
|
||||||
|
@articleNew.show()
|
||||||
|
|
||||||
return if !@attributeBar
|
return if !@attributeBar
|
||||||
@attributeBar.start()
|
@attributeBar.start()
|
||||||
|
|
||||||
|
@ -1056,12 +1060,22 @@ class App.TicketZoom extends App.Controller
|
||||||
|
|
||||||
taskUpdate: (area, data) =>
|
taskUpdate: (area, data) =>
|
||||||
@localTaskData[area] = data
|
@localTaskData[area] = data
|
||||||
App.TaskManager.update(@taskKey, { 'state': @localTaskData })
|
|
||||||
|
taskData = { 'state': @localTaskData }
|
||||||
|
if _.isArray(data.attachments)
|
||||||
|
taskData.attachments = data.attachments
|
||||||
|
|
||||||
|
App.TaskManager.update(@taskKey, taskData)
|
||||||
|
|
||||||
taskUpdateAll: (data) =>
|
taskUpdateAll: (data) =>
|
||||||
@localTaskData = data
|
@localTaskData = data
|
||||||
@localTaskData.article['form_id'] = @form_id
|
@localTaskData.article['form_id'] = @form_id
|
||||||
App.TaskManager.update(@taskKey, { 'state': @localTaskData })
|
|
||||||
|
taskData = { 'state': @localTaskData }
|
||||||
|
if _.isArray(data.attachments)
|
||||||
|
taskData.attachments = data.attachments
|
||||||
|
|
||||||
|
App.TaskManager.update(@taskKey, taskData)
|
||||||
|
|
||||||
# reset task state
|
# reset task state
|
||||||
taskReset: =>
|
taskReset: =>
|
||||||
|
|
|
@ -43,14 +43,10 @@ class App.TicketZoomArticleNew extends App.Controller
|
||||||
closed: 20
|
closed: 20
|
||||||
|
|
||||||
@dragEventCounter = 0
|
@dragEventCounter = 0
|
||||||
@attachments = []
|
@attachments = @defaults.attachments || []
|
||||||
|
|
||||||
@render()
|
@render()
|
||||||
|
|
||||||
if _.isArray(@defaults.attachments)
|
|
||||||
for attachment in @defaults.attachments
|
|
||||||
@renderAttachment(attachment)
|
|
||||||
|
|
||||||
# set article type and expand text area
|
# set article type and expand text area
|
||||||
@controllerBind('ui::ticket::setArticleType', (data) =>
|
@controllerBind('ui::ticket::setArticleType', (data) =>
|
||||||
return if data.ticket.id.toString() isnt @ticket_id.toString()
|
return if data.ticket.id.toString() isnt @ticket_id.toString()
|
||||||
|
@ -75,7 +71,7 @@ class App.TicketZoomArticleNew extends App.Controller
|
||||||
if data.position is 'end'
|
if data.position is 'end'
|
||||||
@placeCaretAtEnd(@textarea.get(0))
|
@placeCaretAtEnd(@textarea.get(0))
|
||||||
return
|
return
|
||||||
|
|
||||||
# fixes email validation issue right after new ticket creation
|
# fixes email validation issue right after new ticket creation
|
||||||
@tokanice(data.type.name)
|
@tokanice(data.type.name)
|
||||||
)
|
)
|
||||||
|
@ -92,22 +88,17 @@ class App.TicketZoomArticleNew extends App.Controller
|
||||||
@controllerBind('ui::ticket::taskReset', (data) =>
|
@controllerBind('ui::ticket::taskReset', (data) =>
|
||||||
@releaseGlobalClickEvents()
|
@releaseGlobalClickEvents()
|
||||||
return if data.ticket_id.toString() isnt @ticket_id.toString()
|
return if data.ticket_id.toString() isnt @ticket_id.toString()
|
||||||
@type = 'note'
|
@type = 'note'
|
||||||
@defaults = {}
|
@defaults = {}
|
||||||
|
@attachments = []
|
||||||
@render()
|
@render()
|
||||||
)
|
)
|
||||||
|
|
||||||
# set expand of text area only once
|
|
||||||
@controllerBind('ui::ticket::shown', (data) =>
|
|
||||||
return if data.ticket_id.toString() isnt @ticket.id.toString()
|
|
||||||
@tokanice(@type)
|
|
||||||
|
|
||||||
if @defaults.body or @isIE10()
|
|
||||||
@openTextarea(null, true)
|
|
||||||
)
|
|
||||||
|
|
||||||
# rerender, e. g. on language change
|
# rerender, e. g. on language change
|
||||||
@controllerBind('ui:rerender', =>
|
@controllerBind('ui:rerender', =>
|
||||||
|
@adjustedTextarea = false
|
||||||
|
@defaults = @ui.taskGet('article')
|
||||||
|
@attachments = @defaults.attachments
|
||||||
@render()
|
@render()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -117,6 +108,18 @@ class App.TicketZoomArticleNew extends App.Controller
|
||||||
@updateSecurityOptions()
|
@updateSecurityOptions()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
show: ->
|
||||||
|
@adjustTextarea()
|
||||||
|
|
||||||
|
adjustTextarea: ->
|
||||||
|
return if @adjustedTextarea
|
||||||
|
@adjustedTextarea = true
|
||||||
|
|
||||||
|
@tokanice(@type)
|
||||||
|
|
||||||
|
if @defaults.body or @isIE10()
|
||||||
|
@openTextarea(null, true)
|
||||||
|
|
||||||
tokanice: (type = 'email') ->
|
tokanice: (type = 'email') ->
|
||||||
App.Utils.tokanice('.content.active .js-to, .js-cc, js-bcc', type)
|
App.Utils.tokanice('.content.active .js-to, .js-cc, js-bcc', type)
|
||||||
|
|
||||||
|
@ -285,6 +288,10 @@ class App.TicketZoomArticleNew extends App.Controller
|
||||||
if !@subscribeIdTextModule
|
if !@subscribeIdTextModule
|
||||||
@subscribeIdTextModule = ticket.subscribe(callback)
|
@subscribeIdTextModule = ticket.subscribe(callback)
|
||||||
|
|
||||||
|
if _.isArray(@attachments)
|
||||||
|
for attachment in @attachments
|
||||||
|
@renderAttachment(attachment)
|
||||||
|
|
||||||
params: =>
|
params: =>
|
||||||
params = @formParam( @$('.article-add') )
|
params = @formParam( @$('.article-add') )
|
||||||
|
|
||||||
|
@ -332,6 +339,7 @@ class App.TicketZoomArticleNew extends App.Controller
|
||||||
params.preferences ||= {}
|
params.preferences ||= {}
|
||||||
params.preferences.security = @paramsSecurity()
|
params.preferences.security = @paramsSecurity()
|
||||||
|
|
||||||
|
params.attachments = @attachments
|
||||||
params
|
params
|
||||||
|
|
||||||
validate: =>
|
validate: =>
|
||||||
|
|
|
@ -1957,4 +1957,73 @@ RSpec.describe 'Ticket zoom', type: :system do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'Notes on existing ticks are discarded by editing profile settings #3088' do
|
||||||
|
let(:ticket) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
visit "#ticket/zoom/#{ticket.id}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def upload_and_set_text
|
||||||
|
page.find('.js-textarea').send_keys("Hello\nThis\nis\nimportant!\nyo\nhoho\ntest test test test")
|
||||||
|
page.find('input#fileUpload_1', visible: :all).set(Rails.root.join('test/data/mail/mail001.box'))
|
||||||
|
expect(page).to have_text('mail001.box')
|
||||||
|
wait_for_upload_present
|
||||||
|
end
|
||||||
|
|
||||||
|
def wait_for_upload_present
|
||||||
|
wait(5).until { Taskbar.find_by(key: "Ticket-#{ticket.id}").attributes_with_association_ids['attachments'].present? }
|
||||||
|
end
|
||||||
|
|
||||||
|
def wait_for_upload_blank
|
||||||
|
wait(5).until { Taskbar.find_by(key: "Ticket-#{ticket.id}").attributes_with_association_ids['attachments'].blank? }
|
||||||
|
end
|
||||||
|
|
||||||
|
def switch_language_german
|
||||||
|
visit '#profile/language'
|
||||||
|
page.find('.js-input').click
|
||||||
|
page.find('.js-input').set('Deutsch')
|
||||||
|
page.find('.js-input').send_keys(:enter)
|
||||||
|
click_on 'Submit'
|
||||||
|
|
||||||
|
visit "#ticket/zoom/#{ticket.id}"
|
||||||
|
expect(page).to have_text('Dateien wählen')
|
||||||
|
end
|
||||||
|
|
||||||
|
def expect_upload_and_text
|
||||||
|
expect(page).to have_text('mail001.box')
|
||||||
|
expect(page).to have_text("Hello\nThis\nis\nimportant!\nyo\nhoho\ntest test test test")
|
||||||
|
end
|
||||||
|
|
||||||
|
def expect_no_upload_and_text
|
||||||
|
expect(page).to have_no_text('mail001.box')
|
||||||
|
expect(page).to have_no_text("Hello\nThis\nis\nimportant!\nyo\nhoho\ntest test test test")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does show up the attachments after a reload of the page' do
|
||||||
|
upload_and_set_text
|
||||||
|
expect_upload_and_text
|
||||||
|
refresh
|
||||||
|
expect_upload_and_text
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does show up the attachments after updating language (ui:rerender event)' do
|
||||||
|
upload_and_set_text
|
||||||
|
expect_upload_and_text
|
||||||
|
switch_language_german
|
||||||
|
expect_upload_and_text
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does remove attachments and text on reset' do
|
||||||
|
upload_and_set_text
|
||||||
|
expect_upload_and_text
|
||||||
|
|
||||||
|
page.find('.js-reset').click
|
||||||
|
wait_for_upload_blank
|
||||||
|
expect_no_upload_and_text
|
||||||
|
refresh
|
||||||
|
expect_no_upload_and_text
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue