Fixed #2117 by disabling the create/update button during file uploading
This commit is contained in:
commit
1a6e58ac8f
4 changed files with 93 additions and 0 deletions
|
@ -73,12 +73,19 @@ class App.UiElement.richtext
|
|||
@attachmentPlaceholder.addClass('hide')
|
||||
@attachmentUpload.removeClass('hide')
|
||||
@cancelContainer.removeClass('hide')
|
||||
# Disable the create ticket button during uploading
|
||||
$('.main .newTicket .page-content .js-submit')
|
||||
.text(App.i18n.translateInline('Uploading'))
|
||||
.addClass('is-disabled')
|
||||
App.Log.debug 'UiElement.richtext', 'upload start'
|
||||
|
||||
onAborted: =>
|
||||
@attachmentPlaceholder.removeClass('hide')
|
||||
@attachmentUpload.addClass('hide')
|
||||
item.find('input').val('')
|
||||
$('.main .newTicket .page-content .js-submit')
|
||||
.text(App.i18n.translateInline('Create'))
|
||||
.removeClass('is-disabled')
|
||||
|
||||
# Called after received response from the server
|
||||
onCompleted: (response) =>
|
||||
|
@ -93,6 +100,9 @@ class App.UiElement.richtext
|
|||
|
||||
renderFile(response.data)
|
||||
item.find('input').val('')
|
||||
$('.main .newTicket .page-content .js-submit')
|
||||
.text(App.i18n.translateInline('Create'))
|
||||
.removeClass('is-disabled')
|
||||
|
||||
App.Log.debug 'UiElement.richtext', 'upload complete', response.data
|
||||
|
||||
|
|
|
@ -188,11 +188,18 @@ class App.TicketZoomArticleNew extends App.Controller
|
|||
@attachmentPlaceholder.addClass('hide')
|
||||
@attachmentUpload.removeClass('hide')
|
||||
@cancelContainer.removeClass('hide')
|
||||
# Disable the update ticket button during uploading
|
||||
$('.active .attributeBar .js-submit')
|
||||
.text(App.i18n.translateInline('Uploading'))
|
||||
.addClass('is-disabled')
|
||||
|
||||
onAborted: =>
|
||||
@attachmentPlaceholder.removeClass('hide')
|
||||
@attachmentUpload.addClass('hide')
|
||||
@$('.article-attachment input').val('')
|
||||
$('.active .attributeBar .js-submit')
|
||||
.text(App.i18n.translateInline('Update'))
|
||||
.removeClass('is-disabled')
|
||||
|
||||
# Called after received response from the server
|
||||
onCompleted: (response) =>
|
||||
|
@ -209,6 +216,9 @@ class App.TicketZoomArticleNew extends App.Controller
|
|||
|
||||
@renderAttachment(response.data)
|
||||
@$('.article-attachment input').val('')
|
||||
$('.active .attributeBar .js-submit')
|
||||
.text(App.i18n.translateInline('Update'))
|
||||
.removeClass('is-disabled')
|
||||
|
||||
# Called during upload progress, first parameter
|
||||
# is decimal value from 0 to 100.
|
||||
|
|
|
@ -302,4 +302,76 @@ class AgentTicketAttachmentTest < TestCase
|
|||
|
||||
# some form reset checks
|
||||
end
|
||||
|
||||
def test_upload_blocks_ticket_updates
|
||||
# since selenium webdriver with firefox is not able to upload files, skip here
|
||||
# https://github.com/w3c/webdriver/issues/1230
|
||||
return if browser == 'firefox'
|
||||
|
||||
@browser = browser_instance
|
||||
login(
|
||||
username: 'agent1@example.com',
|
||||
password: 'test',
|
||||
url: browser_url,
|
||||
)
|
||||
tasks_close_all()
|
||||
|
||||
ticket1 = ticket_create(
|
||||
data: {
|
||||
customer: 'Nico',
|
||||
group: 'Users',
|
||||
title: 'Ticket 1',
|
||||
body: 'some body',
|
||||
},
|
||||
do_not_submit: true,
|
||||
)
|
||||
|
||||
# First test the attachment uploading for new tickets
|
||||
file_upload(
|
||||
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
||||
files: [Rails.root.join('test', 'data', 'upload', 'upload2.jpg')],
|
||||
no_sleep: true,
|
||||
)
|
||||
match(
|
||||
css: '.js-submit.is-disabled',
|
||||
value: 'Uploading',
|
||||
)
|
||||
watch_for_disappear(
|
||||
css: '.js-submit.is-disabled',
|
||||
value: 'Uploading',
|
||||
)
|
||||
match(
|
||||
css: '.js-submit',
|
||||
value: 'Create',
|
||||
)
|
||||
click(
|
||||
css: '.active .js-submit',
|
||||
)
|
||||
sleep 2
|
||||
|
||||
# Next test the attachment uploading for new articles
|
||||
ticket_update(
|
||||
data: {
|
||||
body: 'added attachment',
|
||||
},
|
||||
do_not_submit: true,
|
||||
)
|
||||
file_upload(
|
||||
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
||||
files: [Rails.root.join('test', 'data', 'upload', 'upload2.jpg')],
|
||||
no_sleep: true,
|
||||
)
|
||||
match(
|
||||
css: '.js-submit.is-disabled',
|
||||
value: 'Uploading',
|
||||
)
|
||||
watch_for_disappear(
|
||||
css: '.js-submit.is-disabled',
|
||||
value: 'Uploading',
|
||||
)
|
||||
match(
|
||||
css: '.js-submit',
|
||||
value: 'Update',
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1317,6 +1317,7 @@ set type of task (closeTab, closeNextInOverview, stayOnTab)
|
|||
params[:files].each do |file|
|
||||
instance.find_elements(css: params[:css])[0].send_keys(Rails.root.join(file))
|
||||
end
|
||||
return if params[:no_sleep]
|
||||
sleep 2 * params[:files].count
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue