Skip to content

Commit

Permalink
main_app_name: added tests, doc and initializer correction.
Browse files Browse the repository at this point in the history
  • Loading branch information
bbenezech committed Oct 19, 2011
1 parent 18c60f1 commit b0b5909
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 12 deletions.
10 changes: 10 additions & 0 deletions README.md
Expand Up @@ -270,6 +270,16 @@ The configuration code should be placed in an initializer file, for example:

### General

Set the application name:

RailsAdmin.config do |config|
config.main_app_name = ["Cool app", "BackOffice"]
end
# or somethig more dynamic
RailsAdmin.config do |config|
config.main_app_name = Proc.new { |controller| [ "Cool app", "BackOffice - #{controller.params[:action].try(:titleize)}" ] }
end

You can customize authentication by providing a custom block for `RailsAdmin.authenticate_with`.
To disable authentication, pass an empty block:

Expand Down
9 changes: 9 additions & 0 deletions app/assets/stylesheets/rails_admin/base/theming.css.scss
Expand Up @@ -3,6 +3,15 @@
Keep it clean, people
*/

/* Application name */
.topbar h3 {
font-weight:bold;
small {
color:red;

}
}

/* We want input size to be used, unfixate input width */
input, textarea {
width:auto;
Expand Down
12 changes: 5 additions & 7 deletions app/controllers/rails_admin/application_controller.rb
Expand Up @@ -6,9 +6,8 @@ class ApplicationController < ::ApplicationController

before_filter :_authenticate!
before_filter :_authorize!
before_filter :set_plugin_name

helper_method :_current_user, :_attr_accessible_role
helper_method :_current_user, :_attr_accessible_role, :_get_plugin_name

def get_model
model_name = to_model_name(params[:model_name])
Expand All @@ -30,7 +29,11 @@ def get_object
not_found unless @object
end


private
def _get_plugin_name
@plugin_name_array ||= [RailsAdmin.config.main_app_name.is_a?(Proc) ? instance_eval(&RailsAdmin.config.main_app_name) : RailsAdmin.config.main_app_name].flatten
end

def _authenticate!
instance_eval &RailsAdmin::Config.authenticate_with
Expand All @@ -48,11 +51,6 @@ def _attr_accessible_role
instance_eval &RailsAdmin::Config.attr_accessible_role
end

def set_plugin_name
@plugin_name_array = [instance_eval(&RailsAdmin.config.main_app_name)].flatten
@plugin_name = @plugin_name_array.join(' ')
end

def not_found
render :file => Rails.root.join('public', '404.html'), :layout => false, :status => :not_found
end
Expand Down
4 changes: 2 additions & 2 deletions app/views/layouts/rails_admin/application.html.haml
Expand Up @@ -14,8 +14,8 @@
.container-fluid
%h3
= link_to dashboard_path do
%span.first= (@plugin_name_array[0] || 'Rails')
%span.second= (@plugin_name_array[1] || 'Admin')
= _get_plugin_name[0] || 'Rails'
%small= _get_plugin_name[1] || 'Admin'
%ul.nav.secondary-nav= render :partial => 'layouts/rails_admin/secondary_navigation'
.container-fluid
.sidebar
Expand Down
7 changes: 5 additions & 2 deletions lib/generators/rails_admin/templates/initializer.erb
Expand Up @@ -12,8 +12,11 @@
RailsAdmin.config do |config|

config.current_user_method { current_<%= @model_name %> } # auto-generated

config.main_app_name { ['<%= Rails.application.engine_name.titleize.chomp(' Application') %>', 'Admin'] } # auto-generated

# Set the admin name here (optional second array element will appear in a beautiful RailsAdmin red ©)
config.main_app_name = ['<%= Rails.application.engine_name.titleize.chomp(' Application') %>', 'Admin']
# or for a dynamic name:
# config.main_app_name = Proc.new { |controller| [Rails.application.engine_name.titleize, controller.params['action'].titleize] }

# ==> Authentication (before_filter)
# This is run inside the controller instance so you can setup any authentication you need to.
Expand Down
21 changes: 21 additions & 0 deletions spec/controllers/application_controller_spec.rb
Expand Up @@ -6,4 +6,25 @@
controller.to_model_name("conversations~conversations").should eq("Conversations::Conversation")
end
end

describe "helper method _get_plugin_name" do
it "works by default" do
controller.send(:_get_plugin_name).should == ['Dummy App', 'Admin']
end

it "works for static names" do
RailsAdmin.config do |config|
config.main_app_name = ['static','value']
end
controller.send(:_get_plugin_name).should == ['static', 'value']
end

it "works for dynamic names in the controller context" do
RailsAdmin.config do |config|
config.main_app_name = Proc.new { |controller| [Rails.application.engine_name.try(:titleize), controller.params[:action].titleize] }
end
controller.params[:action] = "dashboard"
controller.send(:_get_plugin_name).should == ["Dummy App Application", "Dashboard"]
end
end
end
17 changes: 16 additions & 1 deletion spec/lib/rails_admin_spec.rb
@@ -1,6 +1,7 @@
require 'spec_helper'

describe RailsAdmin do
describe "RailsAdmin" do

describe ".add_extension" do
it "registers the extension with RailsAdmin" do
RailsAdmin.add_extension(:example, ExampleModule)
Expand Down Expand Up @@ -42,6 +43,20 @@
end
end

describe ".main_app_name" do

it "as a default meaningful dynamic value" do
RailsAdmin.config.main_app_name.call.should == ['Dummy App', 'Admin']
end

it "can be configured" do
RailsAdmin.config do |config|
config.main_app_name = ['static','value']
end
RailsAdmin.config.main_app_name.should == ['static','value']
end
end

describe ".authorize_with" do
context "given a key for a extension with authorization" do
before do
Expand Down

0 comments on commit b0b5909

Please sign in to comment.