Commit c4e8c606ffc0d984279c8160cf0d49c5c3afc808

Authored by Antonio Terceiro
1 parent 3f754a9b

Fix the merge of Noosfero::Plugin code

Showing 1 changed file with 35 additions and 26 deletions   Show diff stats
lib/noosfero/plugin.rb
@@ -18,15 +18,16 @@ class Noosfero::Plugin @@ -18,15 +18,16 @@ class Noosfero::Plugin
18 plugin_name = File.basename(plugin_dir) 18 plugin_name = File.basename(plugin_dir)
19 load_plugin(plugin_name) 19 load_plugin(plugin_name)
20 end 20 end
  21 + end
21 22
22 - enabled_plugins.select do |entry|  
23 - File.directory?(entry)  
24 - end.each do |dir|  
25 - load_plugin dir 23 + def setup(config)
  24 + return if !should_load
  25 + enabled.each do |dir|
  26 + setup_plugin(dir, config)
26 end 27 end
27 end 28 end
28 29
29 - def load_plugin dir 30 + def setup_plugin(dir, config)
30 plugin_name = File.basename(dir) 31 plugin_name = File.basename(dir)
31 32
32 plugin_dependencies_ok = true 33 plugin_dependencies_ok = true
@@ -40,30 +41,38 @@ class Noosfero::Plugin @@ -40,30 +41,38 @@ class Noosfero::Plugin
40 end 41 end
41 end 42 end
42 43
43 - return unless plugin_dependencies_ok  
44 -  
45 - # add load paths  
46 - Rails.configuration.controller_paths << File.join(dir, 'controllers')  
47 - ActiveSupport::Dependencies.load_paths << File.join(dir, 'controllers')  
48 - controllers_folders = %w[public profile myprofile admin]  
49 - controllers_folders.each do |folder|  
50 - Rails.configuration.controller_paths << File.join(dir, 'controllers', folder)  
51 - ActiveSupport::Dependencies.load_paths << File.join(dir, 'controllers', folder)  
52 - end  
53 - [ ActiveSupport::Dependencies.load_paths, $:].each do |path|  
54 - path << File.join(dir, 'models')  
55 - path << File.join(dir, 'lib') 44 + if plugin_dependencies_ok
  45 + %w[
  46 + controllers
  47 + controllers/public
  48 + controllers/profile
  49 + controllers/myprofile
  50 + controllers/admin
  51 + ].each do |folder|
  52 + config.autoload_paths << File.join(dir, folder)
  53 + end
  54 + [ config.autoload_paths, $:].each do |path|
  55 + path << File.join(dir, 'models')
  56 + path << File.join(dir, 'lib')
  57 + end
56 end 58 end
  59 + end
57 60
58 - # load vendor/plugins  
59 - Dir.glob(File.join(dir, '/vendor/plugins/*')).each do |vendor_plugin|  
60 - [ ActiveSupport::Dependencies.load_paths, $:].each{ |path| path << "#{vendor_plugin}/lib" }  
61 - init = "#{vendor_plugin}/init.rb"  
62 - require init.gsub(/.rb$/, '') if File.file? init  
63 - end 61 + def load_plugin(dir)
  62 + (dir.to_s.camelize + 'Plugin').constantize
  63 + end
64 64
65 - # load class  
66 - klass(plugin_name) 65 + def enabled
  66 + @enabled ||=
  67 + begin
  68 + plugins = Dir.glob(File.join(Rails.root, 'config', 'plugins', '*'))
  69 + if Rails.env.test? && !plugins.include?(File.join(Rails.root, 'config', 'plugins', 'foo'))
  70 + plugins << File.join(Rails.root, 'plugins', 'foo')
  71 + end
  72 + plugins.select do |entry|
  73 + File.directory?(entry)
  74 + end
  75 + end
67 end 76 end
68 77
69 def all 78 def all