public
Description: Extends the Radiant user model to support site members
Homepage: http://www.cubiclemuses.com/cm
Clone URL: git://github.com/farra/radiant-members-extension.git
farra (author)
Tue Sep 16 03:40:12 -0700 2008
commit  dbfc995c86006cd43b9a7bc66ef80d3f1083f8d0
tree    f9ed8dc7892e1b3fc1ca9940aeaff392d537a294
parent  73f811a3e73f74d6fe65f929939dd310ba5e0aeb
radiant-members-extension / members_extension.rb
100644 68 lines (49 sloc) 2.293 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Uncomment this if you reference any of your controllers in activate
require_dependency 'application'
 
class MembersExtension < Radiant::Extension
  version "1.0"
  description "Extends Radiant user model for site members"
  url "http://cubiclemuses.com/cm"
  
  define_routes do |map|
     map.connect 'admin/members/register/:action', :controller => 'admin/members/register'
     map.connect 'admin/members/:action', :controller => 'admin/members/profile'
  end
  
  def activate
    admin.tabs.add "Profile", "/admin/members/", :after => "Layouts", :visibility => [:all]
    
    User.class_eval do
      file_column :photo, :magick => { :geometry => "80x80>" }
      validates_presence_of :email, :message => 'required'
    end
 
    Radiant::AdminUI::Tab.class_eval do
 
      alias_method :initialize_less_securely, :initialize unless method_defined?(:initialize_more_securely)
      
      def initialize_more_securely(name, url, options = {})
        @name, @url = name, url
        @visibility = [options[:for], options[:visibility]].flatten.compact
        @visibility = [:developer,:admin] if @visibility.empty?
      end
      
      alias_method :initialize, :initialize_more_securely
      
    end
    
    Admin::PageController.class_eval do
      only_allow_access_to :index, :new, :edit, :remove,
        :when => [:developer, :admin],
        :denied_url => { :controller => 'welcome', :action => 'index' },
        :denied_message => 'You must have developer privileges to perform this action.'
    end
    
    Admin::SnippetController.class_eval do
      only_allow_access_to :index, :new, :edit, :remove,
        :when => [:developer, :admin],
        :denied_url => { :controller => 'welcome', :action => 'index' },
        :denied_message => 'You must have developer privileges to perform this action.'
    end
    
    Admin::WelcomeController.class_eval do
      alias_method :index_to_page, :index unless method_defined?(:index_to_profile)
      
      def index_to_profile
        redirect_to :controller => 'admin/members/profile', :action => 'index'
      end
      
      alias_method :index, :index_to_profile
    end
    
    
  end
  
  def deactivate
    admin.tabs.remove "Profile"
  end
  
end