Class: FatFreeCRM::Plugin
- Inherits:
-
Object
- Object
- FatFreeCRM::Plugin
- Defined in:
- lib/fat_free_crm/plugin.rb
Constant Summary collapse
- @@list =
List of added plugins.
{}
Class Method Summary collapse
-
.list ⇒ Object
————————————————————————.
- .list_ids ⇒ Object
- .register(id, initializer = nil, &block) ⇒ Object (also: <<)
Instance Method Summary collapse
-
#dependencies(*plugins) ⇒ Object
Preload other plugins that are required by the plugin being loaded.
-
#initialize(id, initializer) ⇒ Plugin
constructor
————————————————————————–.
-
#tab(main_or_admin, options = nil) ⇒ Object
Define custom tab.
Constructor Details
#initialize(id, initializer) ⇒ Plugin
33 34 35 |
# File 'lib/fat_free_crm/plugin.rb', line 33 def initialize(id, initializer) @id, @initializer = id, initializer end |
Class Method Details
.list ⇒ Object
94 95 96 |
# File 'lib/fat_free_crm/plugin.rb', line 94 def list @@list.values end |
.list_ids ⇒ Object
98 99 100 |
# File 'lib/fat_free_crm/plugin.rb', line 98 def list_ids @@list.keys end |
.register(id, initializer = nil, &block) ⇒ Object Also known as: <<
82 83 84 85 86 87 88 89 90 |
# File 'lib/fat_free_crm/plugin.rb', line 82 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.
48 49 50 51 52 53 |
# File 'lib/fat_free_crm/plugin.rb', line 48 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| ... }
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/fat_free_crm/plugin.rb', line 60 def tab(main_or_admin, = nil) if main_or_admin.is_a?(Hash) # Make it possible to omit first parameter... = 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 << if end end end end |