1 # Add necessary Rails path
2 $LOAD_PATH.unshift "#{RADIANT_ROOT}/vendor/rails/railties/lib"
5 require 'radiant/admin_ui'
6 require 'radiant/extension_loader'
10 class Configuration < Rails::Configuration
11 attr_accessor :extension_paths
12 attr_accessor :extensions
13 attr_accessor :view_paths
17 self.extension_paths = default_extension_paths
18 self.extensions = [ :all ]
22 def default_extension_paths
23 env = ENV["RAILS_ENV"] || RAILS_ENV
24 paths = [RADIANT_ROOT + '/vendor/extensions', RAILS_ROOT + '/vendor/extensions'].uniq
25 # There's no other way it will work, config/environments/test.rb loads too late
26 # TODO: Should figure out how to include this extension path only for the tests that need it
27 paths.unshift(RADIANT_ROOT + "/test/fixtures/extensions") if env == "test"
37 def library_directories
38 Dir["#{RADIANT_ROOT}/vendor/*/lib"]
41 def framework_root_path
42 RADIANT_ROOT + '/vendor/rails'
45 # Provide the load paths for the Radiant installation
46 def default_load_paths
47 paths = ["#{RADIANT_ROOT}/test/mocks/#{environment}"]
49 # Add the app's controller directory
50 paths.concat(Dir["#{RADIANT_ROOT}/app/controllers/"])
52 # Then components subdirectories.
53 paths.concat(Dir["#{RADIANT_ROOT}/components/[_a-z]*"])
55 # Followed by the standard includes.
64 ).map { |dir| "#{RADIANT_ROOT}/#{dir}" }.select { |dir| File.directory?(dir) }
66 paths.concat builtin_directories
67 paths.concat library_directories
70 def default_plugin_paths
72 "#{RAILS_ROOT}/vendor/plugins",
73 "#{RADIANT_ROOT}/lib/plugins",
74 "#{RADIANT_ROOT}/vendor/plugins"
79 File.join(RADIANT_ROOT, 'app', 'views')
82 def default_controller_paths
83 [File.join(RADIANT_ROOT, 'app', 'controllers')]
87 class Initializer < Rails::Initializer
88 def self.run(command = :process, configuration = Configuration.new)
92 def set_autoload_paths
93 extension_loader.add_extension_paths
97 def add_plugin_load_paths
98 # checks for plugins within extensions:
99 extension_loader.add_plugin_paths
105 extension_loader.load_extensions
109 extension_loader.activate_extensions
113 def initialize_default_admin_tabs
115 admin.tabs.add "Pages", "/admin/pages"
116 admin.tabs.add "Snippets", "/admin/snippets"
117 admin.tabs.add "Layouts", "/admin/layouts", :visibility => [:admin, :developer]
120 def initialize_framework_views
121 view_paths = returning [] do |arr|
122 # Add the singular view path if it's not in the list
123 arr << configuration.view_path if !configuration.view_paths.include?(configuration.view_path)
124 # Add the default view paths
125 arr.concat configuration.view_paths
126 # Add the extension view paths
127 arr.concat extension_loader.view_paths
128 # Reverse the list so extensions come first
131 ActionMailer::Base.view_paths = view_paths if configuration.frameworks.include?(:action_mailer) || defined?(ActionMailer::Base)
132 ActionController::Base.view_paths = view_paths if configuration.frameworks.include?(:action_controller)
135 def initialize_routing
136 extension_loader.add_controller_paths
145 ExtensionLoader.instance {|l| l.initializer = self }