Class: FatFreeCRM::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/fat_free_crm/plugin.rb

Constant Summary collapse

@@list =

List of added plugins.

{}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, initializer) ⇒ Plugin




21
22
23
# File 'lib/fat_free_crm/plugin.rb', line 21

def initialize(id, initializer)
  @id, @initializer = id, initializer
end

Class Method Details

.listObject




82
83
84
# File 'lib/fat_free_crm/plugin.rb', line 82

def list
  @@list.values
end

.list_idsObject



86
87
88
# File 'lib/fat_free_crm/plugin.rb', line 86

def list_ids
  @@list.keys
end

.register(id, initializer = nil, &block) ⇒ Object Also known as: <<



70
71
72
73
74
75
76
77
78
# File 'lib/fat_free_crm/plugin.rb', line 70

def register(id, initializer = nil, &block)
  unless @@list.include?(id)
    plugin = new(id, initializer)
    plugin.instance_eval(&block)            # Grab plugin properties.
    plugin.name(id.to_s) unless plugin.name # Set default name if the name property was missing.

    @@list[id] = plugin
  end
end

Instance Method Details

#dependencies(*plugins) ⇒ Object

Preload other plugins that are required by the plugin being loaded.




36
37
38
39
40
41
# File 'lib/fat_free_crm/plugin.rb', line 36

def dependencies(*plugins)
  plugins.each do |name|
    plugin_path = File.join(Rails.root, 'vendor/plugins', name.to_s)
    require File.directory?(plugin_path) ? File.join(plugin_path, 'init') : name.to_s
  end
end

#tab(main_or_admin, options = nil) ⇒ Object

Define custom tab. See [crm_sample_tabs] plugin for usage examples.

tab(:main | :admin, { :text => ..., :url => ... })

or

tab(:main | :admin) { |tabs| ... }



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/fat_free_crm/plugin.rb', line 48

def tab(main_or_admin, options = nil)
  if main_or_admin.is_a?(Hash)    # Make it possible to omit first parameter...
    options = main_or_admin.dup   # ...and use :main as default.
    main_or_admin = :main
  end
  if Setting.database_and_table_exists?
    tabs = FatFreeCRM::Tabs.send(main_or_admin)
    if tabs                         # Might be nil when running rake task (ex: rake ffcrm:setup).
      if block_given?
        yield tabs
      else
        tabs << options if options
      end
    end
  end
end