Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / lib / radiant / .svn / text-base / extension.rb.svn-base
blobb761164b9f50f020db788ebf711696b72a7c83e8
1 require 'annotatable'
2 require 'simpleton'
3 require 'radiant/admin_ui'
5 module Radiant
6   class Extension
7     include Simpleton
8     include Annotatable
10     annotate :version, :description, :url, :root, :extension_name
12     attr_writer :active
14     def active?
15       @active
16     end
17     
18     def migrator
19       ExtensionMigrator.new(self)
20     end
22     def admin
23       AdminUI.instance
24     end
26     def meta
27       self.class.meta
28     end
30     class << self
32       def activate_extension
33         return if instance.active?
34         instance.activate if instance.respond_to? :activate
35         ActionController::Routing::Routes.reload
36         instance.active = true
37       end
38       alias :activate :activate_extension
40       def deactivate_extension
41         return unless instance.active?
42         instance.active = false
43         instance.deactivate if instance.respond_to? :deactivate
44       end
45       alias :deactivate :deactivate_extension
47       def define_routes(&block)
48         route_definitions << block
49       end
51       def inherited(subclass)
52         subclass.extension_name = subclass.name.to_name('Extension')
53       end
55       def meta
56         Radiant::ExtensionMeta.find_or_create_by_name(extension_name)
57       end
59       def route_definitions
60         @route_definitions ||= []
61       end
63     end
64   end
65 end