manager.rb 683 Bytes
class Noosfero::Plugin::Manager

  extend ActsAsHavingHotspots::ClassMethods
  acts_as_having_hotspots

  attr_reader :context

  delegate :environment, :to => :context
  delegate :each, :to => :enabled_plugins
  include Enumerable

  def initialize(controller)
    @context = Noosfero::Plugin::Context.new(controller)
    Thread.current[:enabled_plugins] = (Noosfero::Plugin.all & environment.enabled_plugins).map do |plugin_name|
      plugin = plugin_name.constantize.new
      plugin.context = context
      plugin
    end
  end

  def [](name)
    klass = Noosfero::Plugin.klass(name)
    enabled_plugins.select do |plugin|
      plugin.kind_of?(klass)
    end.first
  end

end