Module: Hobo::Controller::Model

Includes:
Hobo::Controller
Defined in:
lib/hobo/controller/model.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

DONT_PAGINATE_FORMATS =
[ Mime::CSV, Mime::YAML, Mime::JSON, Mime::XML, Mime::ATOM, Mime::RSS ]
WILL_PAGINATE_OPTIONS =
[ :page, :per_page, :total_entries, :count, :finder ]
READ_ONLY_ACTIONS =
[:index, :show]
WRITE_ONLY_ACTIONS =
[:create, :update, :destroy]
FORM_ACTIONS =
[:new, :edit]

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Hobo::Controller

included_in_class

Methods included from Cache

#expire_swept_caches_for

Methods included from AuthenticationSupport

#authenticated_user_from_cookie, #authorized?, #create_auth_cookie, #logged_in?, #login_from_cookie, #login_required, #redirect_back_or_default, #store_location

Class Method Details

.all_controllers(subsite = nil, force = false) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/hobo/controller/model.rb', line 56

def self.all_controllers(subsite=nil, force=false)
  controller_dirs = ["#{Rails.root}/app/controllers"] + Hobo.engines.map { |e| "#{e}/app/controllers" }

  # Load every controller in app/controllers/<subsite>...
  @controllers_loaded ||= {}
  if force || !@controllers_loaded[subsite]
    controller_dirs.each do |controller_dir|
      dir = "#{controller_dir}#{'/' + subsite if subsite}"
      if File.directory?(dir)
        Dir.entries(dir).each do |f|
          if f =~ /^[a-zA-Z_][a-zA-Z0-9_]*_controller\.rb$/
            name = f.remove(/.rb$/).camelize
            name = "#{subsite.camelize}::#{name}" if subsite
            name.constantize
          end
        end
      end
    end
    @controllers_loaded[subsite] = true
  end

  # ...but only return the ones that registered themselves
  names = (@controller_names || []).select { |n| subsite ? n =~ /^#{subsite.camelize}::/ : n !~ /::/ }

  names.map do |name|
    name.safe_constantize || (@controller_names.delete name; nil)
  end.compact
end

.included(base) ⇒ Object



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
# File 'lib/hobo/controller/model.rb', line 17

def included(base)
  base.class_eval do
    @auto_actions ||= {}

    inheriting_cattr_reader :web_methods => [], :show_actions => [], :index_actions => [],
                            :owner_actions => {}

    extend ClassMethods


    helper_method :model, :current_user
    before_filter :set_no_cache_headers

    rescue_from ActiveRecord::RecordNotFound, :with => :not_found unless Rails.env.development?

    rescue_from Hobo::PermissionDeniedError,         :with => :permission_denied
    rescue_from Hobo::Model::Lifecycles::LifecycleKeyError, :with => :permission_denied

    respond_to :html

    alias_method_chain :render, :hobo_model

  end
  register_controller(base)
  subsite = base.name.include?("::") ? base.name.split("::").first.underscore : nil
  base.model.hobo_controller[subsite] = base

  Hobo::Controller.included_in_class(base)
end

.register_controller(controller) ⇒ Object



50
51
52
53
# File 'lib/hobo/controller/model.rb', line 50

def self.register_controller(controller)
  @controller_names ||= Set.new
  @controller_names << controller.name
end

Instance Method Details

#modelObject



883
884
885
# File 'lib/hobo/controller/model.rb', line 883

def model
  self.class.model
end