Class: Portlet
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Portlet
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_container ⇒ Object
These are here simply to temporarily hold these values Makes it easy to pass them through the process of selecting a portlet type
8
9
10
|
# File 'app/models/portlet.rb', line 8
def connect_to_container
@connect_to_container
end
|
#connect_to_page_id ⇒ Object
These are here simply to temporarily hold these values Makes it easy to pass them through the process of selecting a portlet type
8
9
10
|
# File 'app/models/portlet.rb', line 8
def connect_to_page_id
@connect_to_page_id
end
|
#controller ⇒ Object
Returns the value of attribute controller.
10
11
12
|
# File 'app/models/portlet.rb', line 10
def controller
@controller
end
|
Class Method Details
.columns_for_index ⇒ Object
120
121
122
123
124
|
# File 'app/models/portlet.rb', line 120
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_template ⇒ Object
70
71
72
73
74
75
76
|
# File 'app/models/portlet.rb', line 70
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_path ⇒ Object
82
83
84
|
# File 'app/models/portlet.rb', line 82
def self.default_template_path
@default_template_path ||= "portlets/#{name.tableize.sub('_portlets','')}/render"
end
|
.enable_template_editor(enabled) ⇒ Object
Determines if the template editor in the CMS UI will be enabled when creating or editing instances of this portlet If enabled, the portlet will use the template code stored in the database. If not, it will render from the render.html.erb file created.
102
103
104
|
# File 'app/models/portlet.rb', line 102
def self.enable_template_editor (enabled)
render_inline enabled
end
|
66
67
68
|
# File 'app/models/portlet.rb', line 66
def self.form
"portlets/#{name.tableize.sub('_portlets','')}/form"
end
|
.get_subclass(type) ⇒ Object
56
57
58
59
|
# File 'app/models/portlet.rb', line 56
def self.get_subclass(type)
raise "Unknown Portlet Type" unless types.map(&:name).include?(type)
type.constantize
end
|
.handler(handler_type) ⇒ Object
95
96
97
|
# File 'app/models/portlet.rb', line 95
def self.handler(handler_type)
define_method(:handler) { handler_type }
end
|
.has_edit_link? ⇒ Boolean
42
43
44
|
# File 'app/models/portlet.rb', line 42
def self.has_edit_link?
false
end
|
.inherited(subclass) ⇒ Object
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
|
# File 'app/models/portlet.rb', line 16
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
106
107
108
109
110
111
112
113
114
|
# File 'app/models/portlet.rb', line 106
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
78
79
80
|
# File 'app/models/portlet.rb', line 78
def self.set_default_template_path(s)
@default_template_path = s
end
|
.types ⇒ Object
46
47
48
49
50
51
52
53
54
|
# File 'app/models/portlet.rb', line 46
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_options ⇒ Object
Called by ‘render’ to determine if this portlet should render itself using a file (render.html.erb) or using its ‘template’ attribute.
88
89
90
91
92
93
|
# File 'app/models/portlet.rb', line 88
def inline_options
options = {}
options[:inline] = self.template if self.class.render_inline && !(self.template.nil? || self.template.blank?)
options[:type] = self.handler unless self.handler.blank?
options
end
|
#instance_name ⇒ Object
—– Portlet Action Related Methods —————————————-
127
128
129
|
# File 'app/models/portlet.rb', line 127
def instance_name
"#{self.class.name.demodulize.underscore}_#{id}"
end
|
#portlet_type_name ⇒ Object
62
63
64
|
# File 'app/models/portlet.rb', line 62
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
153
154
155
156
|
# File 'app/models/portlet.rb', line 153
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
158
159
160
161
162
163
164
165
|
# File 'app/models/portlet.rb', line 158
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_flash ⇒ Object
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.
147
148
149
|
# File 'app/models/portlet.rb', line 147
def store_params_in_flash
store_hash_in_flash instance_name, params
end
|
#type_name ⇒ Object
116
117
118
|
# File 'app/models/portlet.rb', line 116
def type_name
type.to_s.titleize
end
|
#url_for_failure ⇒ Object
137
138
139
140
141
|
# File 'app/models/portlet.rb', line 137
def url_for_failure
[params[:failure_url], self.failure_url, request.referer].detect do |e|
!e.blank?
end
end
|
#url_for_success ⇒ Object
131
132
133
134
135
|
# File 'app/models/portlet.rb', line 131
def url_for_success
[params[:success_url], self.success_url, request.referer].detect do |e|
!e.blank?
end
end
|