Merge branch 'develop' of github.com:martini/zammad into develop
This commit is contained in:
commit
4b45d8b24c
7 changed files with 64 additions and 64 deletions
|
@ -81,7 +81,7 @@ class App.TaskbarWidget extends App.Controller
|
|||
throw 'No such key attributes found for task item'
|
||||
|
||||
# check if input has changed
|
||||
worker = App.TaskManager.worker( key )
|
||||
worker = App.TaskManager.worker(key)
|
||||
if !force && worker && worker.changed
|
||||
if worker.changed()
|
||||
new Remove(
|
||||
|
@ -91,7 +91,7 @@ class App.TaskbarWidget extends App.Controller
|
|||
return
|
||||
|
||||
# check if active task is closed
|
||||
currentTask = App.TaskManager.get( key )
|
||||
currentTask = App.TaskManager.get(key)
|
||||
tasks = App.TaskManager.all()
|
||||
active_is_closed = false
|
||||
for task in tasks
|
||||
|
@ -99,7 +99,9 @@ class App.TaskbarWidget extends App.Controller
|
|||
active_is_closed = true
|
||||
|
||||
# remove task
|
||||
App.TaskManager.remove( key )
|
||||
App.TaskManager.remove(key, false)
|
||||
|
||||
$(e.target).closest('.task').remove()
|
||||
|
||||
# if we do not need to move to an other task
|
||||
return if !active_is_closed
|
||||
|
|
|
@ -458,16 +458,23 @@ class BulkForm extends App.Controller
|
|||
super
|
||||
|
||||
@configure_attributes_ticket = [
|
||||
{ name: 'state_id', display: 'State', tag: 'select', multiple: false, null: true, relation: 'TicketState', filter: @bulk, translate: true, nulloption: true, default: '', class: '', item_class: '' },
|
||||
{ name: 'priority_id', display: 'Priority', tag: 'select', multiple: false, null: true, relation: 'TicketPriority', filter: @bulk, translate: true, nulloption: true, default: '', class: '', item_class: '' },
|
||||
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: true, relation: 'Group', filter: @bulk, nulloption: true, class: '', item_class: '' },
|
||||
{ name: 'owner_id', display: 'Owner', tag: 'select', multiple: false, null: true, relation: 'User', filter: @bulk, nulloption: true, class: '', item_class: '' }
|
||||
{ name: 'state_id', display: 'State', tag: 'select', multiple: false, null: true, relation: 'TicketState', translate: true, nulloption: true, default: '' },
|
||||
{ name: 'priority_id', display: 'Priority', tag: 'select', multiple: false, null: true, relation: 'TicketPriority', translate: true, nulloption: true, default: '' },
|
||||
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: true, relation: 'Group', nulloption: true },
|
||||
{ name: 'owner_id', display: 'Owner', tag: 'select', multiple: false, null: true, relation: 'User', nulloption: true }
|
||||
]
|
||||
|
||||
@holder = @options.holder
|
||||
@visible = false
|
||||
|
||||
load = (data) =>
|
||||
App.Collection.loadAssets(data.assets)
|
||||
@formMeta = data.form_meta
|
||||
@render()
|
||||
@bindId = App.TicketCreateCollection.bind(load)
|
||||
|
||||
release: =>
|
||||
App.TicketCreateCollection.unbind(@bindId)
|
||||
|
||||
render: ->
|
||||
@el.css 'right', App.Utils.getScrollBarWidth()
|
||||
|
@ -480,7 +487,11 @@ class BulkForm extends App.Controller
|
|||
configure_attributes: @configure_attributes_ticket
|
||||
className: 'create'
|
||||
labelClass: 'input-group-addon'
|
||||
form_data: @bulk
|
||||
handlers: [
|
||||
@ticketFormChanges
|
||||
]
|
||||
params: {}
|
||||
filter: @formMeta.filter
|
||||
noFieldset: true
|
||||
)
|
||||
|
||||
|
@ -490,7 +501,6 @@ class BulkForm extends App.Controller
|
|||
configure_attributes: [{ name: 'body', display: 'Comment', tag: 'textarea', rows: 4, null: true, upload: false, item_class: 'flex' }]
|
||||
className: 'create'
|
||||
labelClass: 'input-group-addon'
|
||||
form_data: @bulk
|
||||
noFieldset: true
|
||||
)
|
||||
|
||||
|
@ -505,7 +515,6 @@ class BulkForm extends App.Controller
|
|||
configure_attributes: @confirm_attributes
|
||||
className: 'create'
|
||||
labelClass: 'input-group-addon'
|
||||
form_data: @bulk
|
||||
noFieldset: true
|
||||
)
|
||||
|
||||
|
|
|
@ -24,10 +24,10 @@ class App.TaskManager
|
|||
_instance ?= new _taskManagerSingleton
|
||||
_instance.update( key, params )
|
||||
|
||||
@remove: ( key ) ->
|
||||
@remove: (key, rerender = true) ->
|
||||
if _instance == undefined
|
||||
_instance ?= new _taskManagerSingleton
|
||||
_instance.remove( key )
|
||||
_instance.remove(key, rerender)
|
||||
|
||||
@notify: ( key ) ->
|
||||
if _instance == undefined
|
||||
|
@ -77,23 +77,19 @@ class _taskManagerSingleton extends Spine.Module
|
|||
@tasksInitial()
|
||||
|
||||
# render on login
|
||||
App.Event.bind(
|
||||
'auth:login'
|
||||
=>
|
||||
App.Event.bind('auth:login', =>
|
||||
@tasksInitial()
|
||||
'task'
|
||||
)
|
||||
|
||||
# render on logout
|
||||
App.Event.bind(
|
||||
'auth:logout'
|
||||
=>
|
||||
App.Event.bind('auth:logout', =>
|
||||
@reset()
|
||||
'task'
|
||||
)
|
||||
|
||||
# send updates to server
|
||||
App.Interval.set( @taskUpdateLoop, 2500, 'check_update_to_server_pending', 'task' )
|
||||
App.Interval.set(@taskUpdateLoop, 2500, 'check_update_to_server_pending', 'task')
|
||||
|
||||
init: ->
|
||||
@workers = {}
|
||||
|
@ -123,11 +119,11 @@ class _taskManagerSingleton extends Spine.Module
|
|||
domID: (key) ->
|
||||
"content_permanent_#{key}"
|
||||
|
||||
worker: ( key ) ->
|
||||
worker: (key) ->
|
||||
return @workers[ key ] if @workers[ key ]
|
||||
return
|
||||
|
||||
execute: ( params ) ->
|
||||
execute: (params) ->
|
||||
|
||||
# input validation
|
||||
params.key = App.Utils.htmlAttributeCleanup(params.key)
|
||||
|
@ -159,7 +155,7 @@ class _taskManagerSingleton extends Spine.Module
|
|||
@activeTaskHistory.push _.clone(params)
|
||||
|
||||
# check if task already exists in storage / e. g. from last session
|
||||
task = @get( params.key )
|
||||
task = @get(params.key)
|
||||
|
||||
#console.log 'debug', 'execute', params, 'task', task
|
||||
|
||||
|
@ -220,6 +216,7 @@ class _taskManagerSingleton extends Spine.Module
|
|||
# start worker for task if not exists
|
||||
@startController(params)
|
||||
|
||||
if !params.init
|
||||
App.Event.trigger 'task:render'
|
||||
|
||||
startController: (params) =>
|
||||
|
@ -238,7 +235,7 @@ class _taskManagerSingleton extends Spine.Module
|
|||
@workersStarted[params.key] = true
|
||||
|
||||
# create new controller instanz
|
||||
@workers[params.key] = new App[params.controller]( params_app )
|
||||
@workers[params.key] = new App[params.controller](params_app)
|
||||
|
||||
# if controller is started hidden, call hide of controller
|
||||
if !params.show
|
||||
|
@ -246,9 +243,9 @@ class _taskManagerSingleton extends Spine.Module
|
|||
|
||||
# hide all other controller / show current controller
|
||||
else
|
||||
@showControllerHideOthers( params.key, params_app )
|
||||
@showControllerHideOthers(params.key, params_app)
|
||||
|
||||
showControllerHideOthers: ( thisKey, params_app ) =>
|
||||
showControllerHideOthers: (thisKey, params_app) =>
|
||||
for key of @workersStarted
|
||||
if key is thisKey
|
||||
@show(key, params_app)
|
||||
|
@ -269,7 +266,6 @@ class _taskManagerSingleton extends Spine.Module
|
|||
# execute controllers show
|
||||
if controller.show
|
||||
controller.show(params_app)
|
||||
App.Event.trigger('ui:rerender:task')
|
||||
|
||||
true
|
||||
|
||||
|
@ -291,27 +287,27 @@ class _taskManagerSingleton extends Spine.Module
|
|||
true
|
||||
|
||||
# get task
|
||||
get: ( key ) =>
|
||||
get: (key) =>
|
||||
for task in @allTasks
|
||||
if task.key is key
|
||||
return task
|
||||
|
||||
# update task
|
||||
update: ( key, params ) =>
|
||||
task = @get( key )
|
||||
update: (key, params) =>
|
||||
task = @get(key)
|
||||
if !task
|
||||
throw "No such task with '#{key}' to update"
|
||||
for item, value of params
|
||||
task[item] = value
|
||||
@taskUpdate( task )
|
||||
@taskUpdate(task)
|
||||
|
||||
# remove task certain task from tasks
|
||||
remove: ( key ) =>
|
||||
remove: (key, rerender) =>
|
||||
|
||||
# remember started task
|
||||
delete @tasksStarted[key]
|
||||
|
||||
task = @get( key )
|
||||
task = @get(key)
|
||||
return if !task
|
||||
|
||||
# update @allTasks
|
||||
|
@ -327,44 +323,45 @@ class _taskManagerSingleton extends Spine.Module
|
|||
@release(key)
|
||||
|
||||
# rerender taskbar
|
||||
if rerender
|
||||
App.Event.trigger 'task:render'
|
||||
|
||||
# destroy in backend storage
|
||||
@taskDestroy(task)
|
||||
|
||||
# set notify of task
|
||||
notify: ( key ) =>
|
||||
task = @get( key )
|
||||
notify: (key) =>
|
||||
task = @get(key)
|
||||
if !task
|
||||
throw "No such task with '#{key}' to notify"
|
||||
task.notify = true
|
||||
@taskUpdate( task )
|
||||
@taskUpdate(task)
|
||||
|
||||
# unset notify of task
|
||||
mute: ( key ) =>
|
||||
task = @get( key )
|
||||
mute: (key) =>
|
||||
task = @get(key)
|
||||
if !task
|
||||
throw "No such task with '#{key}' to mute"
|
||||
task.notify = false
|
||||
@taskUpdate( task )
|
||||
@taskUpdate(task)
|
||||
|
||||
# set new order of tasks (needed for dnd)
|
||||
reorder: ( order ) =>
|
||||
reorder: (order) =>
|
||||
prio = 0
|
||||
for key in order
|
||||
task = @get( key )
|
||||
task = @get(key)
|
||||
if !task
|
||||
throw "No such task with '#{key}' of order"
|
||||
prio++
|
||||
if task.prio isnt prio
|
||||
task.prio = prio
|
||||
@taskUpdate( task )
|
||||
@taskUpdate(task)
|
||||
|
||||
# release one task
|
||||
release: (key) =>
|
||||
try
|
||||
@el.find( "##{@domID(key)}" ).html('')
|
||||
@el.find( "##{@domID(key)}" ).remove()
|
||||
@el.find("##{@domID(key)}").html('')
|
||||
@el.find("##{@domID(key)}").remove()
|
||||
catch
|
||||
@log 'notice', "invalid key '#{key}'"
|
||||
|
||||
|
|
|
@ -222,17 +222,17 @@ class TicketsController < ApplicationController
|
|||
|
||||
# permission check
|
||||
ticket = Ticket.find( params[:id] )
|
||||
return if !ticket_permission( ticket )
|
||||
return if !ticket_permission(ticket)
|
||||
|
||||
# get attributes to update
|
||||
attributes_to_change = Ticket::ScreenOptions.attributes_to_change( user: current_user, ticket: ticket )
|
||||
attributes_to_change = Ticket::ScreenOptions.attributes_to_change(user: current_user, ticket: ticket)
|
||||
|
||||
# get related users
|
||||
assets = attributes_to_change[:assets]
|
||||
assets = ticket.assets(assets)
|
||||
|
||||
# get related articles
|
||||
articles = Ticket::Article.where( ticket_id: params[:id] )
|
||||
articles = Ticket::Article.where(ticket_id: params[:id])
|
||||
|
||||
# get related users
|
||||
article_ids = []
|
||||
|
@ -275,10 +275,7 @@ class TicketsController < ApplicationController
|
|||
assets: assets,
|
||||
links: link_list,
|
||||
tags: tags,
|
||||
form_meta: {
|
||||
filter: attributes_to_change[:filter],
|
||||
dependencies: attributes_to_change[:dependencies],
|
||||
}
|
||||
form_meta: attributes_to_change[:form_meta],
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -47,9 +47,7 @@ returns
|
|||
end
|
||||
state_types.each {|type|
|
||||
state_type = Ticket::StateType.find_by(name: type)
|
||||
|
||||
next if !state_type
|
||||
|
||||
state_type.states.each {|state|
|
||||
assets = state.assets(assets)
|
||||
state_ids.push state.id
|
||||
|
@ -87,7 +85,7 @@ returns
|
|||
}
|
||||
|
||||
dependencies = { group_id: { '' => { owner_id: [] } } }
|
||||
Group.where( active: true ).each { |group|
|
||||
Group.where(active: true).each { |group|
|
||||
assets = group.assets(assets)
|
||||
dependencies[:group_id][group.id] = { owner_id: [] }
|
||||
group.users.each {|user|
|
||||
|
|
|
@ -964,8 +964,8 @@ wait untill text in selector disabppears
|
|||
=begin
|
||||
|
||||
tasks_close_all(
|
||||
:browser => browser1,
|
||||
:discard_changes => true,
|
||||
browser: browser1,
|
||||
discard_changes: true,
|
||||
)
|
||||
|
||||
=end
|
||||
|
@ -980,11 +980,8 @@ wait untill text in selector disabppears
|
|||
begin
|
||||
if instance.find_elements( { css: '.navigation .tasks .task:first-child' } )[0]
|
||||
instance.mouse.move_to( instance.find_elements( { css: '.navigation .tasks .task:first-child' } )[0] )
|
||||
sleep 0.2
|
||||
|
||||
click_element = instance.find_elements( { css: '.navigation .tasks .task:first-child .js-close' } )[0]
|
||||
if click_element
|
||||
sleep 0.1
|
||||
click_element.click
|
||||
|
||||
# accept task close warning
|
||||
|
|
Loading…
Reference in a new issue