|
|
|
class UserLogs < Netzke::Basepack::Grid
|
|
|
|
def configure(c)
|
|
|
|
super
|
|
|
|
|
|
|
|
#all users
|
|
|
|
user_log_strong_default_attrs = {
|
|
|
|
:loggable_type => 'User',
|
|
|
|
:log_action_type => 'ActsAsLoggable::UserAction',
|
|
|
|
:logger_type => 'User',
|
|
|
|
:logger_id => controller.current_user.id,
|
|
|
|
:copy_type => 'Bike',
|
|
|
|
:copy_action_type => 'ActsAsLoggable::BikeAction',
|
|
|
|
:copy_action_id => 4
|
|
|
|
}
|
|
|
|
|
|
|
|
#this seems inefficient
|
|
|
|
if can? :manage, ::ActsAsLoggable::Log.where(:loggable_type => "User").all
|
|
|
|
#admins and staff
|
|
|
|
|
|
|
|
#if selected user nil, then the admin is viewing their own profile
|
|
|
|
selected_user = User.find_by_id(session[:selected_user_id])
|
|
|
|
selected_user = controller.current_user if selected_user.nil?
|
|
|
|
|
|
|
|
user_log_scope = lambda { |rel| rel.where(:loggable_type => 'User',:loggable_id => selected_user.id );}
|
|
|
|
user_log_strong_default_attrs.merge!( { :loggable_id => selected_user.id } )
|
|
|
|
user_log_data_store = {auto_load: true }
|
|
|
|
else
|
|
|
|
#just users
|
|
|
|
user_log_scope = lambda { |rel| rel.where(:loggable_type => 'User',:loggable_id => controller.current_user.id)}
|
|
|
|
user_log_strong_default_attrs.merge!( { :loggable_id => controller.current_user.id } )
|
|
|
|
user_log_data_store = {auto_load: true }
|
|
|
|
end
|
|
|
|
|
|
|
|
c.model = "ActsAsLoggable::Log"
|
|
|
|
c.title = "User Timesheet"
|
|
|
|
c.data_store = user_log_data_store
|
|
|
|
c.scope = user_log_scope
|
|
|
|
c.strong_default_attrs = user_log_strong_default_attrs
|
|
|
|
|
|
|
|
c.columns = [
|
|
|
|
{ :name => :start_date, :format => "g:ia - D, M j - Y", :width => 165, :default_value => Time.now.to_formatted_s(:db) },
|
|
|
|
{ :name => :end_date, :format => "g:ia - D, M j - Y", :default_value => Time.now.to_formatted_s(:db) },
|
|
|
|
{ :name => :hours, :getter => lambda { |rec| (rec.end_date - rec.start_date)/3600 }, :sorting_scope => :sort_by_duration},
|
|
|
|
:description,
|
|
|
|
{ :id => :user_action__action, :name => :user_action__action, :text => 'Action', :default_value => ::ActsAsLoggable::UserAction.all.first.id },
|
|
|
|
{ :name => :logged_by, :getter => lambda{ |rec|
|
|
|
|
user = User.find_by_id(rec.logger_id)
|
|
|
|
user.nil? ? "" : "#{user.first_name} #{user.last_name}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
# Overriding the defautl add in form
|
|
|
|
def preconfigure_record_window(c)
|
|
|
|
super
|
|
|
|
c.form_config.klass = UserLogsAddItem
|
|
|
|
end
|
|
|
|
|
|
|
|
#override with nil to remove actions
|
|
|
|
def default_bbar
|
|
|
|
[ :apply, :add_in_form, :search ]
|
|
|
|
end
|
|
|
|
|
|
|
|
js_configure do |c|
|
|
|
|
c.mixin :init_component
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|