From 1cd52f385a8c03a82fb7f4e6dfa95f9d23b05e3c Mon Sep 17 00:00:00 2001 From: Darren Shafae Date: Thu, 10 Mar 2011 14:42:40 -0800 Subject: [PATCH 1/4] Fix for asset loading issue: When assets have been copied with rake admin:copy_assets, then rails_admin should NOT insert another ActionDispatch::Static middleware, because it eclipses Rails's native middleware and assets are loaded from rails_admin's public folder instead of the application's public folder. Fixed by checking if any of the rails_admin subdirectories exist in any of the static asset classes (images, javascripts, stylesheets). Also, if the middleware is inserted, it should be done AFTER, not IN FRONT of Rails's own static asset middleware, to permit precedence to the application's public folder over the gem's. --- lib/rails_admin/engine.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/rails_admin/engine.rb b/lib/rails_admin/engine.rb index 66a143f2de..ee79922b3a 100644 --- a/lib/rails_admin/engine.rb +++ b/lib/rails_admin/engine.rb @@ -4,8 +4,12 @@ module RailsAdmin class Engine < Rails::Engine initializer "static assets" do |app| - if app.config.serve_static_assets - app.middleware.insert 0, ::ActionDispatch::Static, "#{root}/public" + + # If assets were copied for app's public/ folder, e.g. via rake admin:copy_assets, then don't insert the static + # asset server, as it iterferes with Rails's own asset server. + if app.config.serve_static_assets && + !(%w(stylesheets images javascripts).any?{|cat| File.exists?(File.join(Rails.root,'public',cat,'rails_admin'))}) + app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public" end end From e88e7ea605d0798cdcc99f1b3e24fb3ef62e11c8 Mon Sep 17 00:00:00 2001 From: Wolfram Arnold Date: Mon, 14 Mar 2011 16:22:45 -0700 Subject: [PATCH 2/4] Fix display bug on dashboard page: Model name in table is now using label override if present. --- app/views/rails_admin/main/index.html.erb | 2 +- .../navigation/rails_admin_config_navigation_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/views/rails_admin/main/index.html.erb b/app/views/rails_admin/main/index.html.erb index 46f904f09f..8dddbf1e7e 100644 --- a/app/views/rails_admin/main/index.html.erb +++ b/app/views/rails_admin/main/index.html.erb @@ -17,7 +17,7 @@ <% if authorized? :list, abstract_model %> - <%= link_to(RailsAdmin.config(abstract_model).list.label, rails_admin_list_path(:model_name => abstract_model.to_param), :class => "show") %> + <%= link_to(RailsAdmin.config(abstract_model).navigation.label, rails_admin_list_path(:model_name => abstract_model.to_param), :class => "show") %> <% if (last_used = @most_recent_changes[abstract_model.pretty_name]) %> diff --git a/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb b/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb index 7a5f15c770..5824d88317 100644 --- a/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +++ b/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb @@ -46,6 +46,16 @@ end end + it 'should display edited model name in model name column' do + RailsAdmin.config Fan do + label_for_navigation "NewFan" + end + get rails_admin_dashboard_path + response.should have_tag("td.modelNameRow") do |model_name_cells| + model_name_cells.should have_tag("a[href='/admin/fans']", :content => "NewFan") + end + end + it "should be editable via shortcut" do RailsAdmin.config Fan do label_for_navigation "Fan test 2" From aedb196f2d431af3741804ee2be0727800b1c4e4 Mon Sep 17 00:00:00 2001 From: Wolfram Arnold Date: Mon, 14 Mar 2011 16:39:50 -0700 Subject: [PATCH 3/4] Fix display bug on list page: @page_name should use overridden model name. Same for breadcrumbs. Spec coverage added. --- app/controllers/rails_admin/main_controller.rb | 2 +- app/views/layouts/rails_admin/list.html.erb | 4 ++-- .../rails_admin_config_navigation_spec.rb | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/controllers/rails_admin/main_controller.rb b/app/controllers/rails_admin/main_controller.rb index 1284895547..8a383c3808 100644 --- a/app/controllers/rails_admin/main_controller.rb +++ b/app/controllers/rails_admin/main_controller.rb @@ -301,7 +301,7 @@ def list_entries(other = {}) @record_count = @abstract_model.count(options, scope) @page_type = @abstract_model.pretty_name.downcase - @page_name = t("admin.list.select", :name => @model_config.list.label.downcase) + @page_name = t("admin.list.select", :name => @model_config.navigation.label.downcase) end def associations_hash diff --git a/app/views/layouts/rails_admin/list.html.erb b/app/views/layouts/rails_admin/list.html.erb index b90f856cf5..dd82478e53 100644 --- a/app/views/layouts/rails_admin/list.html.erb +++ b/app/views/layouts/rails_admin/list.html.erb @@ -43,7 +43,7 @@ <% if @history %>
  • › - <%= link_to(@model_config.list.label, rails_admin_list_path(:model_name => @abstract_model.to_param)) %> + <%= link_to(@model_config.navigation.label, rails_admin_list_path(:model_name => @abstract_model.to_param)) %>
  • › @@ -52,7 +52,7 @@ <% else %>
  • › - <%= @model_config.list.label %> + <%= @model_config.navigation.label %>
  • <% end%> diff --git a/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb b/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb index 5824d88317..d51fd5d745 100644 --- a/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +++ b/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb @@ -56,6 +56,24 @@ end end + it 'should use edited model name in breadcrumbs' do + RailsAdmin.config Fan do + label_for_navigation "NewFan" + end + get rails_admin_list_path(:model_name => 'fans') + response.should have_tag(".breadcrumb li") do |model_name_cells| + model_name_cells.should have_tag("span", :content => "NewFan") + end + end + + it 'should use edited model name in @page_name' do + RailsAdmin.config Fan do + label_for_navigation "NewFan" + end + get rails_admin_list_path(:model_name => 'fans') + assigns[:page_name].should =~ /NewFan/i + end + it "should be editable via shortcut" do RailsAdmin.config Fan do label_for_navigation "Fan test 2" From cad2d0275cb8473208b7ac82211c70fcbc11dd0e Mon Sep 17 00:00:00 2001 From: Wolfram Arnold Date: Mon, 14 Mar 2011 16:42:51 -0700 Subject: [PATCH 4/4] Fixed several other references to model name for delete and history, where @model_config.list.label was called, but @model_config.navigation.label should have been called. --- app/controllers/rails_admin/history_controller.rb | 2 +- app/controllers/rails_admin/main_controller.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/rails_admin/history_controller.rb b/app/controllers/rails_admin/history_controller.rb index e643e835c4..2a7260cd05 100644 --- a/app/controllers/rails_admin/history_controller.rb +++ b/app/controllers/rails_admin/history_controller.rb @@ -24,7 +24,7 @@ def slider def for_model @page_type = @abstract_model.pretty_name.downcase - @page_name = t("admin.history.page_name", :name => @model_config.list.label) + @page_name = t("admin.history.page_name", :name => @model_config.navigation.label) @general = true @page_count, @history = AbstractHistory.history_for_model @abstract_model, params[:query], params[:sort], params[:sort_reverse], params[:all], params[:page] diff --git a/app/controllers/rails_admin/main_controller.rb b/app/controllers/rails_admin/main_controller.rb index 8a383c3808..c07ab88144 100644 --- a/app/controllers/rails_admin/main_controller.rb +++ b/app/controllers/rails_admin/main_controller.rb @@ -111,7 +111,7 @@ def update def delete @authorization_adapter.authorize(:delete, @abstract_model, @object) if @authorization_adapter - @page_name = t("admin.actions.delete").capitalize + " " + @model_config.list.label.downcase + @page_name = t("admin.actions.delete").capitalize + " " + @model_config.navigation.label.downcase @page_type = @abstract_model.pretty_name.downcase render :layout => 'rails_admin/delete' @@ -131,7 +131,7 @@ def destroy def bulk_delete @authorization_adapter.authorize(:bulk_delete, @abstract_model) if @authorization_adapter - @page_name = t("admin.actions.delete").capitalize + " " + @model_config.list.label.downcase + @page_name = t("admin.actions.delete").capitalize + " " + @model_config.navigation.label.downcase @page_type = @abstract_model.pretty_name.downcase render :layout => 'rails_admin/delete'