Merge branch 'develop' of github.com:martini/zammad into develop

This commit is contained in:
Felix Niklas 2015-11-23 11:25:21 +01:00
commit 9bd7bd4380
11 changed files with 42 additions and 23 deletions

View file

@ -555,6 +555,13 @@ class App.Controller extends Spine.Controller
renderScreenUnauthorized: (data) -> renderScreenUnauthorized: (data) ->
@html App.view('generic/error/unauthorized')(data) @html App.view('generic/error/unauthorized')(data)
metaTaskUpdate: =>
App.Delay.set(
-> App.Event.trigger 'task:render'
250
'meta-task-update'
)
class App.ControllerPermanent extends App.Controller class App.ControllerPermanent extends App.Controller
constructor: -> constructor: ->
super super
@ -723,13 +730,13 @@ class App.UpdateHeader extends App.Controller
super super
# subscribe and reload data / fetch new data if triggered # subscribe and reload data / fetch new data if triggered
@subscribeId = @genericObject.subscribe( @render ) @subscribeId = @genericObject.subscribe(@render)
release: => release: =>
App[ @genericObject.constructor.className ].unsubscribe(@subscribeId) App[ @genericObject.constructor.className ].unsubscribe(@subscribeId)
render: (genericObject) => render: (genericObject) =>
@el.find( '.page-header h1' ).html( genericObject.displayName() ) @el.find('.page-header h1').html(genericObject.displayName())
class App.UpdateTastbar extends App.Controller class App.UpdateTastbar extends App.Controller
@ -737,15 +744,15 @@ class App.UpdateTastbar extends App.Controller
super super
# subscribe and reload data / fetch new data if triggered # subscribe and reload data / fetch new data if triggered
@subscribeId = @genericObject.subscribe( @update ) @subscribeId = @genericObject.subscribe(@update)
release: => release: =>
App[ @genericObject.constructor.className ].unsubscribe(@subscribeId) App[ @genericObject.constructor.className ].unsubscribe(@subscribeId)
update: (genericObject) -> update: (genericObject) =>
# update taskbar with new meta data # update taskbar with new meta data
App.Event.trigger 'task:render' @metaTaskUpdate()
class App.ControllerWidgetPermanent extends App.Controller class App.ControllerWidgetPermanent extends App.Controller
constructor: (params) -> constructor: (params) ->

View file

@ -302,6 +302,9 @@ class App.TicketCreate extends App.Controller
# start auto save # start auto save
@autosave() @autosave()
# update taskbar with new meta data
@metaTaskUpdate()
localUserInfo: (e) => localUserInfo: (e) =>
params = App.ControllerForm.params( $(e.target).closest('form') ) params = App.ControllerForm.params( $(e.target).closest('form') )

View file

@ -78,6 +78,9 @@ class Object extends App.Controller
render: (organization) => render: (organization) =>
# update taskbar with new meta data
@metaTaskUpdate()
# get display data # get display data
organizationData = [] organizationData = []
for attributeName, attributeConfig of App.Organization.attributesGet('view') for attributeName, attributeConfig of App.Organization.attributesGet('view')

View file

@ -22,7 +22,7 @@ class App.TaskbarWidget extends App.Controller
return if !@Session.get() return if !@Session.get()
tasks = App.TaskManager.all() tasks = App.TaskManager.all()
item_list = [] taskItems = []
for task in tasks for task in tasks
# collect meta data of task for task bar item # collect meta data of task for task bar item
@ -32,7 +32,7 @@ class App.TaskbarWidget extends App.Controller
iconClass: 'loading' iconClass: 'loading'
title: App.i18n.translateInline('Loading...') title: App.i18n.translateInline('Loading...')
head: App.i18n.translateInline('Loading...') head: App.i18n.translateInline('Loading...')
worker = App.TaskManager.worker( task.key ) worker = App.TaskManager.worker(task.key)
if worker if worker
meta = worker.meta() meta = worker.meta()
@ -45,14 +45,14 @@ class App.TaskbarWidget extends App.Controller
item = {} item = {}
item.task = task item.task = task
item.data = data item.data = data
item_list.push item taskItems.push item
# set title # set title
if task.active if task.active
@title data.title @title data.title
@html App.view('task_widget_tasks')( @html App.view('task_widget_tasks')(
item_list: item_list taskItems: taskItems
) )
dndOptions = dndOptions =
@ -69,9 +69,9 @@ class App.TaskbarWidget extends App.Controller
if !key if !key
throw 'No such key attributes found for task item' throw 'No such key attributes found for task item'
order.push key order.push key
App.TaskManager.reorder( order ) App.TaskManager.reorder(order)
@el.sortable( dndOptions ) @el.sortable(dndOptions)
remove: (e, key = false, force = false) => remove: (e, key = false, force = false) =>
e.preventDefault() e.preventDefault()

View file

@ -208,8 +208,8 @@ class App.TicketZoom extends App.Controller
objectName: 'Ticket' objectName: 'Ticket'
) )
# update current task title # update taskbar with new meta data
App.Event.trigger 'task:render' @metaTaskUpdate()
) )
@ -278,7 +278,8 @@ class App.TicketZoom extends App.Controller
render: => render: =>
# update taskbar with new meta data # update taskbar with new meta data
App.Event.trigger 'task:render' @metaTaskUpdate()
@formEnable( @$('.submit') ) @formEnable( @$('.submit') )
if !@renderDone if !@renderDone

View file

@ -51,7 +51,7 @@ class App.TicketZoomTitle extends App.Controller
App.TaskManager.mute(@task_key) App.TaskManager.mute(@task_key)
# update taskbar with new meta data # update taskbar with new meta data
App.Event.trigger 'task:render' @metaTaskUpdate()
release: => release: =>
App.Ticket.unsubscribe(@subscribeId) App.Ticket.unsubscribe(@subscribeId)

View file

@ -81,6 +81,9 @@ class Object extends App.Controller
render: (user) => render: (user) =>
# update taskbar with new meta data
@metaTaskUpdate()
# get display data # get display data
userData = [] userData = []
for attributeName, attributeConfig of App.User.attributesGet('view') for attributeName, attributeConfig of App.User.attributesGet('view')

View file

@ -64,7 +64,7 @@ class App.TaskManager
_instance ?= new _taskManagerSingleton _instance ?= new _taskManagerSingleton
_instance.TaskbarId() _instance.TaskbarId()
class _taskManagerSingleton extends Spine.Module class _taskManagerSingleton extends App.Controller
@include App.LogInclude @include App.LogInclude
constructor: (params = {}) -> constructor: (params = {}) ->
@ -217,7 +217,7 @@ class _taskManagerSingleton extends Spine.Module
@startController(params) @startController(params)
if !params.init if !params.init
App.Event.trigger 'task:render' @metaTaskUpdate()
startController: (params) => startController: (params) =>
@ -324,7 +324,7 @@ class _taskManagerSingleton extends Spine.Module
# rerender taskbar # rerender taskbar
if rerender if rerender
App.Event.trigger 'task:render' @metaTaskUpdate()
# destroy in backend storage # destroy in backend storage
@taskDestroy(task) @taskDestroy(task)
@ -387,7 +387,7 @@ class _taskManagerSingleton extends Spine.Module
App.Taskbar.deleteAll() App.Taskbar.deleteAll()
# rerender task bar # rerender task bar
App.Event.trigger 'task:render' @metaTaskUpdate()
nextTaskUrl: => nextTaskUrl: =>
@ -418,7 +418,7 @@ class _taskManagerSingleton extends Spine.Module
taskUpdate: (task) -> taskUpdate: (task) ->
#@log 'notice', "UPDATE task #{task.id}", task #@log 'notice', "UPDATE task #{task.id}", task
@tasksToUpdate[ task.key ] = 'toUpdate' @tasksToUpdate[ task.key ] = 'toUpdate'
App.Event.trigger 'task:render' @metaTaskUpdate()
taskUpdateLoop: => taskUpdateLoop: =>
return if @offlineModus return if @offlineModus

View file

@ -1,4 +1,4 @@
<% for item in @item_list: %> <% for item in @taskItems: %>
<a href="<%- item.data.url %>" title="<%= item.data.title %>" class="nav-tab task <%= item.data.class %><% if item.task.active: %> is-active<% end %><% if item.task.notify: %> is-modified<% end %>" data-key="<%- item.task.key %>"> <a href="<%- item.data.url %>" title="<%= item.data.title %>" class="nav-tab task <%= item.data.class %><% if item.task.active: %> is-active<% end %><% if item.task.notify: %> is-modified<% end %>" data-key="<%- item.task.key %>">
<div class="nav-tab-icon" title="<%- @Ti(item.data.iconTitle) %>"> <div class="nav-tab-icon" title="<%- @Ti(item.data.iconTitle) %>">
<% if item.data.type is 'task': %> <% if item.data.type is 'task': %>

View file

@ -21,6 +21,7 @@ class SwitchToUserTest < TestCase
sleep 3 sleep 3
@browser.mouse.move_to( @browser.find_elements( { css: '#content .table-overview tbody tr:first-child' } )[0] ) @browser.mouse.move_to( @browser.find_elements( { css: '#content .table-overview tbody tr:first-child' } )[0] )
sleep 0.5
click( click(
css: '#content .icon-switchView', css: '#content .icon-switchView',
) )

View file

@ -255,8 +255,8 @@ class TestCase < Test::Unit::TestCase
if params[:css] if params[:css]
element = instance.find_elements( { css: params[:css] } )[0] element = instance.find_elements( { css: params[:css] } )[0]
instance.mouse.move_to(element) #instance.mouse.move_to(element)
sleep 0.2 #sleep 0.2
element.click element.click
# trigger also focus on input/select and textarea fields # trigger also focus on input/select and textarea fields
@ -980,6 +980,7 @@ wait untill text in selector disabppears
begin begin
if instance.find_elements( { css: '.navigation .tasks .task:first-child' } )[0] 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] ) instance.mouse.move_to( instance.find_elements( { css: '.navigation .tasks .task:first-child' } )[0] )
sleep 0.1
click_element = instance.find_elements( { css: '.navigation .tasks .task:first-child .js-close' } )[0] click_element = instance.find_elements( { css: '.navigation .tasks .task:first-child .js-close' } )[0]
if click_element if click_element
click_element.click click_element.click