module EasyAdminUi module CoreExt def self.included(base) base.extend ClassMethods end module ClassMethods attr_accessor :options def easy_admin(options = {}) @options = options make_resourceful do actions :all response_for :index do |format| format.html do @options = options override = File.join('app/views', self.controller_path, 'index.html.erb') if File.exists?(override) render :template => override.gsub('app/views', '') else render :template => 'easy_admin_ui/index' end end end response_for :show do |format| format.html { redirect_to :action => 'index' } end [:new, :create_fails].each do |new_action| response_for new_action do |format| format.html do override = File.join(controller_full_path, 'new.html.erb') if File.exists?(override) render :template => override.gsub('app/views', '') else render :template => 'easy_admin_ui/new' end end end end [:edit, :update_fails].each do |edit_action| response_for edit_action do |format| format.html do override = File.join(controller_full_path, 'edit.html.erb') if File.exists?(override) render :template => override.gsub('app/views', '') else render :template => 'easy_admin_ui/edit' end end end end response_for :destroy do |format| format.js do render :update do |page| page.remove "tr_#{current_model_name.underscore}_#{@item.id}" end end end end class_eval do def options self.class.options end def current_objects @items = current_model.paginate(:page => params[:page], :per_page => options[:per_page], :order => options[:order]) end def current_object @item ||= current_model.find(params[:id]) if params[:id] @item ||= current_model.new(params[current_model_name.underscore.to_sym]) end def instance_variable_name 'item' end helper_method :controller_full_path def controller_full_path File.join 'app/views', self.controller_path end end end end end end