Moved from confirm() to modal dialog to support safari.

This commit is contained in:
Martin Edenhofer 2013-06-10 13:59:16 +02:00
parent 4d321a996c
commit da25d45db4
3 changed files with 44 additions and 18 deletions

View file

@ -99,17 +99,22 @@ class App.TaskWidget extends App.Controller
@el.find( '.taskbar' ).sortable( dndOptions )
remove: (e) =>
remove: (e, key = false, force = false) =>
e.preventDefault()
if !key
key = $(e.target).parent().data('key')
if !key
throw "No such key attributes found for task item"
# check if input has changed
worker = App.TaskManager.worker( key )
if worker && worker.changed
if !force && worker && worker.changed
if worker.changed()
return if !window.confirm( App.i18n.translateInline('Tab has changed, you really want to close it?') )
new Remove(
key: key
ui: @
)
return
# check if active task is closed
currentTask = App.TaskManager.get( key )
@ -162,4 +167,26 @@ class App.TaskWidget extends App.Controller
level1.push item
level1
class Remove extends App.ControllerModal
constructor: ->
super
@render()
render: ->
# return if !window.confirm( App.i18n.translateInline('Tab has changed, you really want to close it?') )
@html App.view('modal')(
title: 'Confirm'
message: 'Tab has changed, you really want to close it?'
close: true
button: 'Close'
)
@modalShow(
backdrop: true,
keyboard: true,
)
submit: (e) =>
@modalHide()
@ui.remove(e, @key, true)
App.Config.set( 'task', App.TaskWidget, 'Widgets' )

View file

@ -76,11 +76,15 @@ class AgentUserManageTest < TestCase
:execute => 'click',
:css => '.taskbar span[data-type="close"]',
},
{
:execute => 'wait',
:value => 1,
},
# accept task close warning
{
:execute => 'accept',
:element => :alert,
:execute => 'click',
:css => '.modal .submit',
},
{
:execute => 'wait',

View file

@ -160,8 +160,8 @@ class TestCase < Test::Unit::TestCase
end
def browser_element_action(test, action, instance)
#puts "NOTICE: " + action.inspect
if action[:css]
# puts "NOTICE: css #{ action[:css] }"
begin
if action[:range] == 'all'
element = instance.find_elements( { :css => action[:css] } )
@ -183,7 +183,6 @@ class TestCase < Test::Unit::TestCase
assert( false, "(#{test[:name]}) url #{instance.current_url} is not matching #{action[:result]}" )
end
elsif action[:element] == :alert
puts "laalal"
element = instance.switch_to.alert
elsif action[:execute] == 'close_all_tasks'
while true
@ -215,9 +214,6 @@ puts "laalal"
dropdown = Selenium::WebDriver::Support::Select.new(element)
dropdown.select_by(:text, action[:value])
elsif action[:execute] == 'click'
# ignore alert clicks on safari / not supported
if action[:element] != :alert || ( action[:element] == :alert && ENV['BROWSER'] !~ /safari/i )
if element.class == Array
element.each {|item|
item.click
@ -225,7 +221,6 @@ puts "laalal"
else
element.click
end
end
elsif action[:execute] == 'accept'
element.accept
elsif action[:execute] == 'dismiss'