diff --git a/app/assets/javascripts/app/controllers/_application_controller.js.coffee b/app/assets/javascripts/app/controllers/_application_controller.js.coffee index cde03a690..65546c3a6 100644 --- a/app/assets/javascripts/app/controllers/_application_controller.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller.js.coffee @@ -149,8 +149,11 @@ class App.Controller extends Spine.Controller else list = App[attribute.relation].all() + # build options list list.forEach( (item) => - if item.active + + # if active or if active doesn't exist + if item.active || !( 'active' of item ) name = '???' if item.name name = item.name @@ -162,7 +165,7 @@ class App.Controller extends Spine.Controller name = name + item.lastname attribute.options.push { - name: name, + name: name, value: item.id, note: item.note, } @@ -267,10 +270,13 @@ class App.Controller extends Spine.Controller else item = App.view('generic/input')( attribute: attribute ) - return App.view('generic/attribute')( - attribute: attribute, - item: item, - ) + if !attribute.display + return item + else + return App.view('generic/attribute')( + attribute: attribute, + item: item, + ) # get all params of the form formParam: (form, errors) -> @@ -600,26 +606,40 @@ class App.Controller extends Spine.Controller # users if params.type == 'User' - for user of params.data - + for user_id, user of params.data + + # set socal media links + if user['accounts'] + for account of user['accounts'] + if account == 'twitter' + user['accounts'][account]['link'] = 'http://twitter.com/' + user['accounts'][account]['username'] + if account == 'facebook' + user['accounts'][account]['link'] = 'https://www.facebook.com/profile.php?id=' + user['accounts'][account]['uid'] + # set image url - if params.data[user] && !params.data[user]['image'] - params.data[user]['image'] = 'http://placehold.it/48x48' + if user && !user['image'] + user['image'] = 'http://placehold.it/48x48' # set realname - params.data[user]['realname'] = '' - if params.data[user]['firstname'] - params.data[user]['realname'] = params.data[user]['firstname'] - if params.data[user]['lastname'] - if params.data[user]['realname'] isnt '' - params.data[user]['realname'] = params.data[user]['realname'] + ' ' - params.data[user]['realname'] = params.data[user]['realname'] + params.data[user]['lastname'] - - App.User.refresh( params.data[user], options: { clear: true } ) + user['realname'] = '' + if user['firstname'] + user['realname'] = user['firstname'] + if user['lastname'] + if user['realname'] isnt '' + user['realname'] = user['realname'] + ' ' + user['realname'] = user['realname'] + user['lastname'] + + # load in collection if needed + if !params.collection + App.User.refresh( user, options: { clear: true } ) # tickets else if params.type == 'Ticket' for ticket in params.data + + # set human time + ticket.humanTime = @humanTime(ticket.created_at) + # priority ticket.ticket_priority = App.TicketPriority.find(ticket.ticket_priority_id) @@ -639,8 +659,9 @@ class App.Controller extends Spine.Controller user = App.User.find(ticket.owner_id) ticket.owner = user - # load collection - App.Ticket.refresh( ticket, options: { clear: true } ) + # load in collection if needed + if !params.collection + App.Ticket.refresh( ticket, options: { clear: true } ) # articles else if params.type == 'TicketArticle' @@ -656,7 +677,9 @@ class App.Controller extends Spine.Controller article.article_type = App.TicketArticleType.find( article.ticket_article_type_id ) article.article_sender = App.TicketArticleSender.find( article.ticket_article_sender_id ) - App.TicketArticle.refresh( article, options: { clear: true } ) + # load in collection if needed + if !params.collection + App.TicketArticle.refresh( article, options: { clear: true } ) # history else if params.type == 'History' @@ -676,12 +699,20 @@ class App.Controller extends Spine.Controller if histroy.history_object_id histroy.object = App.HistoryObject.find( histroy.history_object_id ) - App.History.refresh( histroy, options: { clear: true } ) + # load in collection if needed + if !params.collection + App.History.refresh( histroy, options: { clear: true } ) # all the rest else for object in params.data - App[params.type].refresh( object, options: { clear: true } ) + + # load in collection if needed + if !params.collection + App[params.type].refresh( object, options: { clear: true } ) + + ws_send: (data) -> + Spine.trigger( 'ws:send', JSON.stringify(data) ) class App.ControllerModal extends App.Controller className: 'modal hide fade', diff --git a/app/assets/javascripts/app/controllers/user_info.js.coffee b/app/assets/javascripts/app/controllers/user_info.js.coffee index 042103a12..d4af1c8a8 100644 --- a/app/assets/javascripts/app/controllers/user_info.js.coffee +++ b/app/assets/javascripts/app/controllers/user_info.js.coffee @@ -10,59 +10,49 @@ class App.UserInfo extends App.Controller # fetch item on demand fetch_needed = 1 if App.User.exists(@user_id) - @user = App.User.find(@user_id) - @log 'exists', @user + @log 'exists.user...', @user_id fetch_needed = 0 - @render() + @render(@user_id) if fetch_needed @reload(@user_id) reload: (user_id) => App.User.bind 'refresh', => - @log 'loading....', user_id - @user = App.User.find(user_id) - @render() + @log 'loading.user...', user_id App.User.unbind 'refresh' + @render(user_id) App.User.fetch( id: user_id ) - render: -> + render: (user_id) -> - # define links to linked accounts - if @user['accounts'] - for account of @user['accounts'] - if account == 'twitter' - @user['accounts'][account]['link'] = 'http://twitter.com/' + @user['accounts'][account]['username'] - if account == 'facebook' - @user['accounts'][account]['link'] = 'https://www.facebook.com/profile.php?id=' + @user['accounts'][account]['uid'] - - # set default image url - if !@user.image - @user.image = 'http://placehold.it/48x48' + # load user collection + user = App.User.find(user_id) + @loadCollection( type: 'User', data: { new: user }, collection: true ) # get display data data = [] for item in App.User.configure_attributes - if item.name isnt 'firstname' - if item.name isnt 'lastname' - if item.info #&& ( @user[item.name] || item.name isnt 'note' ) - data.push item + if item.name isnt 'firstname' && item.name isnt 'lastname' + if item.info + data.push item # insert data @html App.view('user_info')( - user: @user, + user: App.User.find(user_id), data: data, ) @userTicketPopups( selector: '.user-tickets', - user_id: @user.id, + user_id: user_id, ) update: (e) => # update changes note = $(e.target).parent().find('[data-type=edit]').val() - if @user.note isnt note - @user.updateAttributes( note: note ) - @log 'update', e, note, @user + user = App.User.find(@user_id) + if user.note isnt note + user.updateAttributes( note: note ) + @log 'update', e, note, user diff --git a/app/assets/javascripts/app/views/user_info.jst.eco b/app/assets/javascripts/app/views/user_info.jst.eco index 04e3e6c1b..409841026 100644 --- a/app/assets/javascripts/app/views/user_info.jst.eco +++ b/app/assets/javascripts/app/views/user_info.jst.eco @@ -4,10 +4,10 @@ <% end %>