Class: Portlet

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/portlet.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#connect_to_containerObject

These are here simply to temporarily hold these values Makes it easy to pass them through the process of selecting a portlet type



7
8
9
# File 'app/models/portlet.rb', line 7

def connect_to_container
  @connect_to_container
end

#connect_to_page_idObject

These are here simply to temporarily hold these values Makes it easy to pass them through the process of selecting a portlet type



7
8
9
# File 'app/models/portlet.rb', line 7

def connect_to_page_id
  @connect_to_page_id
end

#controllerObject

Returns the value of attribute controller.



9
10
11
# File 'app/models/portlet.rb', line 9

def controller
  @controller
end

Class Method Details

.columns_for_indexObject



110
111
112
113
114
# File 'app/models/portlet.rb', line 110

def self.columns_for_index
  [ {:label => "Name", :method => :name, :order => "name" },
    {:label => "Type", :method => :type_name, :order => "type" },
    {:label => "Updated On", :method => :updated_on_string, :order => "updated_at"} ]
end

.default_templateObject



69
70
71
72
73
74
75
# File 'app/models/portlet.rb', line 69

def self.default_template
  template_file = ActionController::Base.view_paths.map do |vp| 
    path = vp.to_s.first == "/" ? vp.to_s : Rails.root.join(vp.to_s)
    Dir[File.join(path, default_template_path) + '.*']
  end.flatten.first
  template_file ? open(template_file){|f| f.read } : ""
end

.default_template_pathObject



81
82
83
# File 'app/models/portlet.rb', line 81

def self.default_template_path
  @default_template_path ||= "portlets/#{name.tableize.sub('_portlets','')}/render"
end

.formObject



65
66
67
# File 'app/models/portlet.rb', line 65

def self.form
  "portlets/#{name.tableize.sub('_portlets','')}/form"
end

.get_subclass(type) ⇒ Object



55
56
57
58
# File 'app/models/portlet.rb', line 55

def self.get_subclass(type)
  raise "Unknown Portlet Type" unless types.map(&:name).include?(type)
  type.constantize 
end

.handler(handler_type) ⇒ Object



92
93
94
# File 'app/models/portlet.rb', line 92

def self.handler(handler_type)
  define_method(:handler) { handler_type }
end

.has_edit_link?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/models/portlet.rb', line 41

def self.has_edit_link?
  false
end

.inherited(subclass) ⇒ Object



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
# File 'app/models/portlet.rb', line 15

def self.inherited(subclass)
  super if defined? super
ensure
  subclass.class_eval do
    
    has_dynamic_attributes
    
    acts_as_content_block(
      :versioned => false, 
      :publishable => false,
      :renderable => {:instance_variable_name_for_view => "@portlet"})
    
    def self.template_path
      default_template_path
    end      
    
    def self.helper_path
      "app/portlets/helpers/#{name.underscore}_helper.rb"
    end

    def self.helper_class
      "#{name}Helper".constantize
    end      
  end      
end

.render_inline(*args) ⇒ Object



96
97
98
99
100
101
102
103
104
# File 'app/models/portlet.rb', line 96

def self.render_inline(*args)
  if args.length > 0
    @render_inline = args.first
  elsif !defined?(@render_inline)
    @render_inline = true
  else
    @render_inline
  end
end

.set_default_template_path(s) ⇒ Object



77
78
79
# File 'app/models/portlet.rb', line 77

def self.set_default_template_path(s)
  @default_template_path = s
end

.typesObject



45
46
47
48
49
50
51
52
53
# File 'app/models/portlet.rb', line 45

def self.types
  @types ||= ActiveSupport::Dependencies.load_paths.map do |d| 
    if d =~ /app\/portlets/
      Dir["#{d}/*_portlet.rb"].map do |p| 
        File.basename(p, ".rb").classify
      end
    end
  end.flatten.compact.uniq.sort
end

Instance Method Details

#inline_optionsObject



85
86
87
88
89
90
# File 'app/models/portlet.rb', line 85

def inline_options
  options = {}
  options[:inline] = self.template if self.class.render_inline 
  options[:type] = self.handler unless self.handler.blank?
  options
end

#instance_nameObject

—– Portlet Action Related Methods —————————————-



117
118
119
# File 'app/models/portlet.rb', line 117

def instance_name
  "#{self.class.name.demodulize.underscore}_#{id}"
end

#portlet_type_nameObject

For column in list



61
62
63
# File 'app/models/portlet.rb', line 61

def portlet_type_name
  type.titleize
end

#store_errors_in_flash(errors) ⇒ Object

This will convert the errors object into a hash and then store it in the flash under the key #Portlet.portletportlet.instance_name_errors



143
144
145
146
# File 'app/models/portlet.rb', line 143

def store_errors_in_flash(errors)
  store_hash_in_flash("#{instance_name}_errors", 
    errors.inject({}){|h, (k, v)| h[k] = v; h})
end

#store_hash_in_flash(key, hash) ⇒ Object



148
149
150
151
152
153
154
155
# File 'app/models/portlet.rb', line 148

def store_hash_in_flash(key, hash)
  flash[key] = hash.inject(HashWithIndifferentAccess.new) do |p,(k,v)|
    unless StringIO === v || Tempfile === v
      p[k.to_sym] = v
    end
    p
  end      
end

#store_params_in_flashObject

This will copy all the params from this request into the flash. The key in the flash with be the portlet instance_name and the value will be the hash of all the params, except the params that have values that are a StringIO or a Tempfile will be left out.



137
138
139
# File 'app/models/portlet.rb', line 137

def store_params_in_flash
  store_hash_in_flash instance_name, params
end

#type_nameObject



106
107
108
# File 'app/models/portlet.rb', line 106

def type_name
  type.to_s.titleize
end

#url_for_failureObject



127
128
129
130
131
# File 'app/models/portlet.rb', line 127

def url_for_failure
  [params[:failure_url], self.failure_url, request.referer].detect do |e|
    !e.blank?
  end    
end

#url_for_successObject



121
122
123
124
125
# File 'app/models/portlet.rb', line 121

def url_for_success
  [params[:success_url], self.success_url, request.referer].detect do |e|
    !e.blank?
  end    
end