jam-cloud/admin/app/admin/jam_ruby_users.rb

123 lines
3.4 KiB
Ruby

ActiveAdmin.register JamRuby::User, :as => 'Users' do
collection_action :autocomplete_user_email, :method => :get
menu :label => 'Users', :parent => 'Users'
config.sort_order = 'created_at DESC'
filter :email
filter :first_name
filter :last_name
filter :created_at
filter :updated_at
form :partial => "form"
show do |user|
attributes_table do
row :id
row :email
row :admin
row :updated_at
row :created_at
row :musician
row :city
row :state
row :country
row :first_name
row :last_name
row :birth_date
row :gender
row :email_confirmed
row :image do user.photo_url ? image_tag(user.photo_url) : '' end
end
active_admin_comments
end
index do
column "ID" do |user|
link_to(truncate(user.id, {:length => 12}),
resource_path(user),
{:title => user.id})
end
column "Email" do |user|
link_to user.email, resource_path(user)
end
column :admin
column :updated_at
column :created_at
column :musician do |user| user.musician? ? true : false end
column :city
column :state
column :country
column :first_name
column :last_name
column :birth_date
column :gender
column :email_confirmed
column :photo_url
column :session_settings
column :can_invite
# default_actions # use this for all view/edit/delete links
column "Actions" do |user|
links = ''.html_safe
links << link_to("View", resource_path(user), :class => "member_link view_link")
links << link_to("Edit", edit_resource_path(user), :class => "member_link edit_link")
links
end
end
controller do
# this actually searches on first name, last name, and email, because of get_autocomplete_items defined below
autocomplete :user, :email, :full => true, :display_value => :autocomplete_display_name
def get_autocomplete_items(parameters)
User.select("email, first_name, last_name, id").where(["email ILIKE ? OR first_name ILIKE ? OR last_name ILIKE ?", "%#{parameters[:term]}%", "%#{parameters[:term]}%", "%#{parameters[:term]}%"])
end
def create
@jam_ruby_user = JamRuby::User.new(params[:jam_ruby_user])
@jam_ruby_user.administratively_created = true
if @jam_ruby_user.password.nil? || @jam_ruby_user.password.length == 0
# a nil password in the form means we simply won't create one; however,
# the password_digest has to be set to something to make 'has_secure_password' happy
@jam_ruby_user.password_digest = SecureRandom.urlsafe_base64
end
# call `create!` to ensure that the rest of the action continues as normal
create!
end
def update
@user = resource
@user.email = params[:jam_ruby_user][:email]
@user.admin = params[:jam_ruby_user][:admin]
@user.musician = params[:jam_ruby_user][:musician]
@user.first_name = params[:jam_ruby_user][:first_name]
@user.last_name = params[:jam_ruby_user][:last_name]
@user.state = params[:jam_ruby_user][:state]
@user.city = params[:jam_ruby_user][:city]
if params[:jam_ruby_user][:show_frame_options].to_i == 1
@user.mod_merge({User::MOD_GEAR => {User::MOD_GEAR_FRAME_OPTIONS => true}})
else
@user.delete_mod(User::MOD_GEAR, User::MOD_GEAR_FRAME_OPTIONS)
end
@user.save!
redirect_to edit_admin_user_path(@user)
end
end
end