Browse Source

Got logs working for users and bikes

Not my best work, but it works, need to add transactions, need to add edit/show actions
denney-disable-on-select
Jason Denney 12 years ago
parent
commit
c98c53de76
  1. 49
      app/controllers/acts_as_loggable/logs_controller.rb
  2. 9
      app/controllers/bike_logs_controller.rb
  3. 9
      app/controllers/user_logs_controller.rb
  4. 34
      app/controllers/users_controller.rb
  5. 1
      app/models/acts_as_loggable/bike_action.rb
  6. 1
      app/models/bike.rb
  7. 1
      app/models/user.rb
  8. 47
      app/views/acts_as_loggable/logs/_form.html.haml
  9. 36
      app/views/acts_as_loggable/logs/index.html.haml
  10. 4
      app/views/acts_as_loggable/logs/new.html.haml
  11. 68
      app/views/users/_form.html.haml
  12. 4
      app/views/users/edit.html.haml
  13. 27
      app/views/users/index.html.haml
  14. 4
      app/views/users/new.html.haml
  15. 73
      app/views/users/show.html.haml
  16. 65
      config/routes.rb

49
app/controllers/acts_as_loggable/logs_controller.rb

@ -0,0 +1,49 @@
class ActsAsLoggable::LogsController < AuthenticatedController
before_filter :set_loggable_id
def index
if params[:loggable_id]
@logs = ActsAsLoggable::Log.where( :loggable_type => @loggable_type, :loggable_id => @loggable_id).order('id').paginate(:page => params[:page])
set_loggable_path
else
@logs = ActsAsLoggable::Log.order('id').paginate(:page => params[:page])
end
end
def show
end
def new
@log = ActsAsLoggable::Log.new(:loggable_type => @loggable_type, :loggable_id => @loggable_id)
set_loggable_path
end
def create
params[:acts_as_loggable_log][:logger_id] = current_user.id.to_s
params[:acts_as_loggable_log][:logger_type] = current_user.class.to_s
log = ActsAsLoggable::Log.new(params[:acts_as_loggable_log])
if log.save
set_loggable_path
redirect_to @loggable_path
else
puts log.errors.inspect
render :new
end
end
def update
end
def destroy
end
private
def set_loggable_id
@loggable_id = params[:loggable_id]
end
def set_loggable_path
@loggable_path = "/#{@loggable_type.pluralize.downcase}/#{@loggable_id}/logs"
end
end

9
app/controllers/bike_logs_controller.rb

@ -0,0 +1,9 @@
class BikeLogsController < ActsAsLoggable::LogsController
before_filter :set_loggable_type
private
def set_loggable_type
@loggable_type = 'Bike'
end
end

9
app/controllers/user_logs_controller.rb

@ -0,0 +1,9 @@
class UserLogsController < ActsAsLoggable::LogsController
before_filter :set_loggable_type
private
def set_loggable_type
@loggable_type = 'User'
end
end

34
app/controllers/users_controller.rb

@ -0,0 +1,34 @@
class UsersController < AuthenticatedController
expose(:user)
expose(:users) { User.order('id').paginate(:page => params[:page]) }
def index
end
def show
end
def new
end
def create
if user.save
redirect_to user
else
render :new
end
end
def update
if user.save
redirect_to user
else
render :edit
end
end
def destroy
user.destroy
redirect_to bikes_url
end
end

1
app/models/acts_as_loggable/bike_action.rb

@ -1,5 +1,4 @@
class ActsAsLoggable::BikeAction < ActiveRecord::Base
#set_fixture_class :bike_actions => ActsAsLoggable::BikeActions
attr_accessible :action
belongs_to :bike

1
app/models/bike.rb

@ -1,4 +1,5 @@
class Bike < ActiveRecord::Base
acts_as_loggable
attr_accessible :serial_number, :bike_brand_id, :bike_model_id, :color, :bike_style_id, :seat_tube_height,
:top_tube_length, :wheel_size, :value, :bike_condition_id, :bike_status_id

1
app/models/user.rb

@ -1,4 +1,5 @@
class User < ActiveRecord::Base
acts_as_loggable
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,

47
app/views/acts_as_loggable/logs/_form.html.haml

@ -0,0 +1,47 @@
= form_for @log, :html => { :class => 'form-horizontal' }, :url => @loggable_path do |f|
- if @log.loggable_type or @log.loggable_id
= f.hidden_field :loggable_id, :class => 'number_field'
= f.hidden_field :loggable_type, :class => 'text_field'
= f.hidden_field :logger_id, :class => 'number_field'
= f.hidden_field :logger_type, :class => 'text_field'
= f.hidden_field :context, :class => 'text_field'
- else
.control-group
= f.label :loggable_id, :class => 'control-label'
.controls
= f.number_field :loggable_id, :class => 'number_field'
.control-group
= f.label :loggable_type, :class => 'control-label'
.controls
= f.text_field :loggable_type, :class => 'text_field'
.control-group
= f.label :logger_id, :class => 'control-label'
.controls
= f.number_field :logger_id, :class => 'number_field'
.control-group
= f.label :logger_type, :class => 'control-label'
.controls
= f.text_field :logger_type, :class => 'text_field'
.control-group
= f.label :context, :class => 'control-label'
.controls
= f.text_field :context, :class => 'text_field'
.control-group
= f.label :start_date, :class => 'control-label'
.controls
= f.datetime_select :start_date, :class => 'datetime_select'
.control-group
= f.label :end_date, :class => 'control-label'
.controls
= f.datetime_select :end_date, :class => 'datetime_select'
.control-group
= f.label :description, :class => 'control-label'
.controls
= f.text_area :description, :class => 'text_area'
.control-group
= f.label :action_id, :class => 'control-label'
.controls
= f.number_field :action_id, :class => 'number_field'
.form-actions
= f.submit nil, :class => 'btn btn-primary'
= link_to t('.cancel', :default => t("helpers.links.cancel")), @loggable_path, :class => 'btn'

36
app/views/acts_as_loggable/logs/index.html.haml

@ -0,0 +1,36 @@
- model_class = ActsAsLoggable::Log.new.class
.page-header
%h1=t '.title', :default => model_class.model_name.human.pluralize
%table.table.table-striped
%thead
%tr
%th= model_class.human_attribute_name(:id)
%th= model_class.human_attribute_name(:loggable_id)
%th= model_class.human_attribute_name(:loggable_type)
%th= model_class.human_attribute_name(:logger_id)
%th= model_class.human_attribute_name(:logger_type)
%th= model_class.human_attribute_name(:context)
%th= model_class.human_attribute_name(:start_date)
%th= model_class.human_attribute_name(:end_date)
%th= model_class.human_attribute_name(:description)
%th= model_class.human_attribute_name(:action_id)
%th= model_class.human_attribute_name(:created_at)
%th=t '.actions', :default => t("helpers.actions")
%tbody
- @logs.each do |log|
%tr
%td= link_to log.id, acts_as_loggable_log_path(log)
%td= log.loggable_id
%td= log.loggable_type
%td= log.logger_id
%td= log.logger_type
%td= log.context
%td= log.start_date
%td= log.end_date
%td= log.description
%td= log.action
%td=l log.created_at
%td
= link_to t('.edit', :default => t("helpers.links.edit")), edit_acts_as_loggable_log_path(log), :class => 'btn btn-mini'
= link_to t('.destroy', :default => t("helpers.links.destroy")), acts_as_loggable_log_path(log), :method => :delete, :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')), :class => 'btn btn-mini btn-danger'
= link_to t('.new', :default => t("helpers.links.new")), "#{@loggable_path}/new", :class => 'btn btn-primary'

4
app/views/acts_as_loggable/logs/new.html.haml

@ -0,0 +1,4 @@
- model_class = @log.class
.page-header
%h1=t '.title', :default => t('helpers.titles.new', :model => model_class.model_name.human, :default => "New #{model_class.model_name.human}")
= render :partial => "form"

68
app/views/users/_form.html.haml

@ -0,0 +1,68 @@
= form_for @user, :html => { :class => 'form-horizontal' } do |f|
.control-group
= f.label :email, :class => 'control-label'
.controls
= f.text_field :email, :class => 'text_field'
.control-group
= f.label :encrypted_password, :class => 'control-label'
.controls
= f.text_field :encrypted_password, :class => 'text_field'
.control-group
= f.label :reset_password_token, :class => 'control-label'
.controls
= f.text_field :reset_password_token, :class => 'text_field'
.control-group
= f.label :reset_password_sent_at, :class => 'control-label'
.controls
= f.datetime_select :reset_password_sent_at, :class => 'datetime_select'
.control-group
= f.label :remember_created_at, :class => 'control-label'
.controls
= f.datetime_select :remember_created_at, :class => 'datetime_select'
.control-group
= f.label :sign_in_count, :class => 'control-label'
.controls
= f.number_field :sign_in_count, :class => 'number_field'
.control-group
= f.label :current_sign_in_at, :class => 'control-label'
.controls
= f.datetime_select :current_sign_in_at, :class => 'datetime_select'
.control-group
= f.label :last_sign_in_at, :class => 'control-label'
.controls
= f.datetime_select :last_sign_in_at, :class => 'datetime_select'
.control-group
= f.label :current_sign_in_ip, :class => 'control-label'
.controls
= f.text_field :current_sign_in_ip, :class => 'text_field'
.control-group
= f.label :last_sign_in_ip, :class => 'control-label'
.controls
= f.text_field :last_sign_in_ip, :class => 'text_field'
.control-group
= f.label :failed_attempts, :class => 'control-label'
.controls
= f.number_field :failed_attempts, :class => 'number_field'
.control-group
= f.label :unlock_token, :class => 'control-label'
.controls
= f.text_field :unlock_token, :class => 'text_field'
.control-group
= f.label :locked_at, :class => 'control-label'
.controls
= f.datetime_select :locked_at, :class => 'datetime_select'
.control-group
= f.label :first_name, :class => 'control-label'
.controls
= f.text_field :first_name, :class => 'text_field'
.control-group
= f.label :last_name, :class => 'control-label'
.controls
= f.text_field :last_name, :class => 'text_field'
.control-group
= f.label :nickname, :class => 'control-label'
.controls
= f.text_field :nickname, :class => 'text_field'
.form-actions
= f.submit nil, :class => 'btn btn-primary'
= link_to t('.cancel', :default => t("helpers.links.cancel")), users_path, :class => 'btn'

4
app/views/users/edit.html.haml

@ -0,0 +1,4 @@
- model_class = user.class
.page-header
%h1=t '.title', :default => t('helpers.titles.edit', :model => model_class.model_name.human, :default => "Edit #{model_class.model_name.human}")
= render :partial => "form"

27
app/views/users/index.html.haml

@ -0,0 +1,27 @@
- model_class = User.new.class
.page-header
%h1=t '.title', :default => model_class.model_name.human.pluralize
%table.table.table-striped
%thead
%tr
%th= model_class.human_attribute_name(:id)
%th= model_class.human_attribute_name(:email)
%th= model_class.human_attribute_name(:first_name)
%th= model_class.human_attribute_name(:last_name)
%th= model_class.human_attribute_name(:nickname)
%th= model_class.human_attribute_name(:created_at)
%th=t '.actions', :default => t("helpers.actions")
%tbody
- users.each do |user|
%tr
%td= link_to user.id, user_path(user)
%td= link_to user.email, user_path(user)
%td= user.first_name
%td= user.last_name
%td= user.nickname
%td=l user.created_at
%td
= link_to t('.edit', :default => t("helpers.links.edit")), edit_user_path(user), :class => 'btn btn-mini'
= link_to t('.destroy', :default => t("helpers.links.destroy")), user_path(user), :method => :delete, :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')), :class => 'btn btn-mini btn-danger'
= link_to t('.new', :default => t("helpers.links.new")), new_user_path, :class => 'btn btn-primary'

4
app/views/users/new.html.haml

@ -0,0 +1,4 @@
- model_class = user.class
.page-header
%h1=t '.title', :default => t('helpers.titles.new', :model => model_class.model_name.human, :default => "New #{model_class.model_name.human}")
= render :partial => "form"

73
app/views/users/show.html.haml

@ -0,0 +1,73 @@
- model_class = user.class
.page-header
%h1=t '.title', :default => model_class.model_name.human
%p
%strong= model_class.human_attribute_name(:email) + ':'
%br
= user.email
%p
%strong= model_class.human_attribute_name(:encrypted_password) + ':'
%br
= user.encrypted_password
%p
%strong= model_class.human_attribute_name(:reset_password_token) + ':'
%br
= user.reset_password_token
%p
%strong= model_class.human_attribute_name(:reset_password_sent_at) + ':'
%br
= user.reset_password_sent_at
%p
%strong= model_class.human_attribute_name(:remember_created_at) + ':'
%br
= user.remember_created_at
%p
%strong= model_class.human_attribute_name(:sign_in_count) + ':'
%br
= user.sign_in_count
%p
%strong= model_class.human_attribute_name(:current_sign_in_at) + ':'
%br
= user.current_sign_in_at
%p
%strong= model_class.human_attribute_name(:last_sign_in_at) + ':'
%br
= user.last_sign_in_at
%p
%strong= model_class.human_attribute_name(:current_sign_in_ip) + ':'
%br
= user.current_sign_in_ip
%p
%strong= model_class.human_attribute_name(:last_sign_in_ip) + ':'
%br
= user.last_sign_in_ip
%p
%strong= model_class.human_attribute_name(:failed_attempts) + ':'
%br
= user.failed_attempts
%p
%strong= model_class.human_attribute_name(:unlock_token) + ':'
%br
= user.unlock_token
%p
%strong= model_class.human_attribute_name(:locked_at) + ':'
%br
= user.locked_at
%p
%strong= model_class.human_attribute_name(:first_name) + ':'
%br
= user.first_name
%p
%strong= model_class.human_attribute_name(:last_name) + ':'
%br
= user.last_name
%p
%strong= model_class.human_attribute_name(:nickname) + ':'
%br
= user.nickname
.form-actions
= link_to t('.back', :default => t("helpers.links.back")), users_path, :class => 'btn'
= link_to t('.edit', :default => t("helpers.links.edit")), edit_user_path(user), :class => 'btn'
= link_to t('.destroy', :default => t("helpers.links.destroy")), user_path(user), :method => "delete", :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')), :class => 'btn btn-danger'

65
config/routes.rb

@ -1,7 +1,6 @@
Velocipede::Application.routes.draw do
devise_for :users
# The priority is based upon order of creation:
# first created -> highest priority.
@ -13,66 +12,26 @@ Velocipede::Application.routes.draw do
resources :bike_styles
resources :bike_conditions
resources :bikes
namespace :acts_as_loggable do
resources :logs
resources :bike_actions
resources :user_actions
resources :transaction_actions
end
#resources :clues
#resources :maps
# Sample of regular route:
# match 'products/:id' => 'catalog#view'
# Keep in mind you can assign values other than :controller and :action
# Sample of named route:
# match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
# This route can be invoked with purchase_url(:id => product.id)
# Sample resource route (maps HTTP verbs to controller actions automatically):
# resources :products
# Sample resource route with options:
# resources :products do
# member do
# get 'short'
# post 'toggle'
# end
#
# collection do
# get 'sold'
# end
# end
# Sample resource route with sub-resources:
# resources :products do
# resources :comments, :sales
# resource :seller
# end
# Sample resource route with more complex sub-resources
# resources :products do
# resources :comments
# resources :sales do
# get 'recent', :on => :collection
# end
# end
# Sample resource route within a namespace:
# namespace :admin do
# # Directs /admin/products/* to Admin::ProductsController
# # (app/controllers/admin/products_controller.rb)
# resources :products
# end
#user logs
get 'users/:loggable_id/logs' => 'user_logs#index', :as => 'user_logs'
get 'users/:loggable_id/logs/new' => 'user_logs#new', :as => 'new_user_log'
post 'users/:loggable_id/logs' => 'user_logs#create'
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
root :to => 'site#index'
#bike logs
get 'bikes/:loggable_id/logs' => 'bike_logs#index', :as => 'bike_logs'
get 'bikes/:loggable_id/logs/new' => 'bike_logs#new', :as => 'new_bike_log'
post 'bikes/:loggable_id/logs' => 'bike_logs#create'
# See how all your routes lay out with "rake routes"
#match ':loggable_type/:loggable_id/logs' => 'acts_as_loggable/logs#index', :as => 'loggable_logs'
# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.
# match ':controller(/:action(/:id))(.:format)'
root :to => 'site#index'
end

Loading…
Cancel
Save