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



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

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



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

def connect_to_page_id
  @connect_to_page_id
end

#controllerObject

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_indexObject



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_templateObject



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_pathObject



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

.formObject



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

Returns:

  • (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

.typesObject



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_optionsObject

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_nameObject

—– 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_nameObject

For column in list



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_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.



147
148
149
# File 'app/models/portlet.rb', line 147

def store_params_in_flash
  store_hash_in_flash instance_name, params
end

#type_nameObject



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

def type_name
  type.to_s.titleize
end

#url_for_failureObject



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_successObject



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