Browse Source

Improved asset management.

Martin Edenhofer 10 years ago
parent
commit
da7af2fc63

+ 8 - 6
app/assets/javascripts/app/lib/app_post/auth.js.coffee

@@ -75,21 +75,23 @@ class App.Auth
     if type isnt 'check'
       App.Event.trigger( 'clearStore' )
 
-    # set avatar
-    data.session.image = App.Config.get('api_path') + '/users/image/' + data.session.image
-
     # update config
     for key, value of data.config
       App.Config.set( key, value )
 
-    # store user data
-    for key, value of data.session
-      App.Session.set( key, value )
+    # load assets
+    if data.assets
+      App.Collection.loadAssets( data.assets )
 
     # refresh default collections
     if data.collections
       App.Collection.resetCollections( data.collections )
 
+    # store user data
+    session = App.User.retrieve(data.session.id)
+    for key, value of session
+      App.Session.set( key, value )
+
     # trigger auth ok with new session data
     App.Event.trigger( 'auth', data.session )
 

+ 1 - 1
app/assets/javascripts/app/lib/app_post/collection.js.coffee

@@ -68,7 +68,7 @@ class _collectionSingleton extends Spine.Module
 
   reset: (params) ->
     if !App[ params.type ]
-      @log 'error', 'reset', 'no such collection', params
+      @log 'error', 'reset', "no such collection #{params.type}", params
       return
 
     @log 'debug', 'reset', params

+ 0 - 1
app/controllers/application_controller.rb

@@ -6,7 +6,6 @@ class ApplicationController < ActionController::Base
   helper_method :current_user,
   :authentication_check,
   :config_frontend,
-  :user_data_full,
   :is_role,
   :model_create_render,
   :model_update_render,

+ 1 - 1
app/controllers/long_polling_controller.rb

@@ -59,7 +59,7 @@ class LongPollingController < ApplicationController
       user_id = session[:user_id]
       user = {}
       if user_id
-        user = User.user_data_full( user_id )
+        user = User.find( user_id )
       end
       log 'notice', "send auth login (user_id #{user_id})", client_id
       Sessions.create( client_id, user, { :type => 'ajax' } )

+ 2 - 4
app/controllers/ticket_overviews_controller.rb

@@ -49,7 +49,7 @@ class TicketOverviewsController < ApplicationController
     end
 
     # get related users
-    assets = { User.to_app_model => {} }
+    assets = {}
     overview[:ticket_ids].each {|ticket_id|
       ticket = Ticket.lookup( :id => ticket_id )
       assets = ticket.assets(assets)
@@ -70,9 +70,7 @@ class TicketOverviewsController < ApplicationController
       Group.find(group_id).users.each {|user|
         next if !agents[ user.id ]
         groups_users[ group_id ].push user.id
-        if !assets[ User.to_app_model ][user.id]
-          assets[ User.to_app_model ][user.id] = User.user_data_full(user.id)
-        end
+        assets = user.assets( assets )
       }
     }
 

+ 9 - 14
app/models/application_model/assets.rb

@@ -12,7 +12,7 @@ get all assets / related models for this user
 returns
 
   result = {
-    :users => {
+    :User => {
       123  => user_model_123,
       1234 => user_model_1234,
     }
@@ -26,23 +26,18 @@ returns
       data[ self.class.to_app_model ] = {}
     end
     if !data[ self.class.to_app_model ][ self.id ]
-      data[ self.class.to_app_model ][ self.id ] = self.attributes
+      data[ self.class.to_app_model ][ self.id ] = self.attributes_with_associations
     end
 
     return data if !self['created_by_id'] && !self['updated_by_id']
-    if !data[ User.to_app_model ]
-      data[ User.to_app_model ] = {}
-    end
-    if self['created_by_id']
-      if !data[ User.to_app_model ][ self['created_by_id'] ]
-        data[ User.to_app_model ][ self['created_by_id'] ] = User.user_data_full( self['created_by_id'] )
-      end
-    end
-    if self['updated_by_id']
-      if !data[ User.to_app_model ][ self['updated_by_id'] ]
-        data[ User.to_app_model ][ self['updated_by_id'] ] = User.user_data_full( self['updated_by_id'] )
+    ['created_by_id', 'updated_by_id'].each {|item|
+      if self[ item ]
+        if !data[ User.to_app_model ] || !data[ User.to_app_model ][ self[ item ] ]
+          user = User.find( self[ item ] )
+          data = user.assets( data )
+        end
       end
-    end
+    }
     data
   end
 

+ 3 - 5
app/models/history/assets.rb

@@ -22,11 +22,9 @@ returns
 
   def assets (data)
 
-    if !data[ User.to_app_model ]
-      data[ User.to_app_model ] = {}
-    end
-    if !data[ User.to_app_model ][ self['created_by_id'] ]
-      data[ User.to_app_model ][ self['created_by_id'] ] = User.user_data_full( self['created_by_id'] )
+    if !data[ User.to_app_model ] || !data[ User.to_app_model ][ self['created_by_id'] ]
+      user = User.find( self['created_by_id'] )
+      data = user.assets( data )
     end
 
     data

+ 2 - 1
app/models/organization.rb

@@ -1,6 +1,7 @@
 # Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
 
 class Organization < ApplicationModel
+  require 'organization/assets'
   include Organization::Assets
   extend Organization::Search
   include Organization::SearchIndex
@@ -13,4 +14,4 @@ class Organization < ApplicationModel
   history_support
   search_index_support
 
-end
+end

+ 18 - 8
app/models/organization/assets.rb

@@ -29,15 +29,25 @@ returns
       data[ User.to_app_model ] = {}
     end
     if !data[ Organization.to_app_model ][ self.id ]
-      data[ Organization.to_app_model ][ self.id ] = self.attributes
-      data[ Organization.to_app_model ][ self.id ][:user_ids] = []
-      users = User.where( :organization_id => self.id ).limit(10)
-      users.each {|user|
-        data[ User.to_app_model ][ user.id ] = User.user_data_full( user.id )
-        data[ Organization.to_app_model ][ self.id ][:user_ids].push user.id
-      }
+      data[ Organization.to_app_model ][ self.id ] = self.attributes_with_associations
+      if data[ Organization.to_app_model ][ self.id ]['member_ids']
+        data[ Organization.to_app_model ][ self.id ]['member_ids'].each {|user_id|
+          if !data[ User.to_app_model ][ user_id ]
+            user = User.find( user_id )
+            data = user.assets( data )
+          end
+        }
+      end
     end
+    ['created_by_id', 'updated_by_id'].each {|item|
+      if self[ item ]
+        if !data[ User.to_app_model ][ self[ item ] ]
+          user = User.find( self[ item ] )
+          data = user.assets( data )
+        end
+      end
+    }
     data
   end
 
-end
+end

+ 8 - 9
app/models/ticket/article/assets.rb

@@ -41,15 +41,14 @@ returns
       data[ Ticket::Article.to_app_model ][ self.id ]['attachments'] = self.attachments
     end
 
-    if !data[ User.to_app_model ]
-      data[ User.to_app_model ] = {}
-    end
-    if !data[ User.to_app_model ][ self['created_by_id'] ]
-      data[ User.to_app_model ][ self['created_by_id'] ] = User.user_data_full( self['created_by_id'] )
-    end
-    if !data[ User.to_app_model ][ self['updated_by_id'] ]
-      data[ User.to_app_model ][ self['updated_by_id'] ] = User.user_data_full( self['updated_by_id'] )
-    end
+    ['created_by_id', 'updated_by_id'].each {|item|
+      if self[ item ]
+        if !data[ User.to_app_model ] || !data[ User.to_app_model ][ self[ item ] ]
+          user = User.find( self[ item ] )
+          data = user.assets( data )
+        end
+      end
+    }
     data
   end
 

Some files were not shown because too many files changed in this diff