diff --git a/lib/noosfero/plugin.rb b/lib/noosfero/plugin.rb index 4d33221..105e189 100644 --- a/lib/noosfero/plugin.rb +++ b/lib/noosfero/plugin.rb @@ -138,11 +138,12 @@ class Noosfero::Plugin filters = [filters] end filters.each do |plugin_filter| + plugin_filter[:options] ||= {} + plugin_filter[:options][:if] = -> { environment.plugin_enabled? plugin.module_name } + filter_method = "#{plugin.identifier}_#{plugin_filter[:method_name]}".to_sym - controller_class.send(plugin_filter[:type], filter_method, (plugin_filter[:options] || {})) - controller_class.send(:define_method, filter_method) do - instance_exec(&plugin_filter[:block]) if environment.plugin_enabled?(plugin) - end + controller_class.send plugin_filter[:type], filter_method, plugin_filter[:options] + controller_class.send :define_method, filter_method, &plugin_filter[:block] end end diff --git a/lib/noosfero/plugin/parent_methods.rb b/lib/noosfero/plugin/parent_methods.rb index 90f9f06..5166602 100644 --- a/lib/noosfero/plugin/parent_methods.rb +++ b/lib/noosfero/plugin/parent_methods.rb @@ -11,6 +11,10 @@ class Noosfero::Plugin @identifier ||= (if self.parents.first.instance_of? Module then self.parents.first else self end).name.underscore end + def module_name + @name ||= (if self.parents.first != Object then self.parents.first else self end).to_s + end + def public_name @public_name ||= self.identifier.gsub '_plugin', '' end -- libgit2 0.21.2