Class: ScribblerGroup
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ScribblerGroup
- Defined in:
- app/models/scribbler_group.rb
Constant Summary collapse
- ELEMENTS =
Konstanten
{:row => ScribblerText, :text => ScribblerText, :link => ScribblerLink, :image => ScribblerImage, :var => ScribblerVar}
Instance Method Summary collapse
- #clone!(new_name) ⇒ Object
- #destroy_elements ⇒ Object
- #elements(options = {:released => true}) ⇒ Object
-
#get_element(type, name, options = {:released => true}) ⇒ Object
Helpers.
- #human_name ⇒ Object
- #image(image_name, options = {}) ⇒ Object
- #link(link_name, options = {}) ⇒ Object
- #process_data!(data) ⇒ Object
-
#process_group_data(data = {}) ⇒ Object
Save data.
- #released_elements ⇒ Object
-
#row(row_name, options = {}) ⇒ Object
Display data.
- #text(text_name, options = {}) ⇒ Object
- #unreleased_elements ⇒ Object
- #var(name, options = {}) ⇒ Object
Instance Method Details
#clone!(new_name) ⇒ Object
67 68 69 70 71 72 73 74 |
# File 'app/models/scribbler_group.rb', line 67 def clone!(new_name) group = self.class.new(:name => new_name, :container_id => self.container_id) if group.save self.elements.each do |el| el.class.create(el.attributes.except("id").merge(:group_id => group.id)) end end end |
#destroy_elements ⇒ Object
118 119 120 |
# File 'app/models/scribbler_group.rb', line 118 def destroy_elements self.elements.each {|e| e.destroy } end |
#elements(options = {:released => true}) ⇒ Object
106 107 108 |
# File 'app/models/scribbler_group.rb', line 106 def elements( = {:released => true}) ELEMENTS.values.uniq.map {|c| c.where(:group_id => self.id, :released => [:released] == true)}.flatten.sort_by {|e| e.human_name} end |
#get_element(type, name, options = {:released => true}) ⇒ Object
Helpers
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/models/scribbler_group.rb', line 78 def get_element(type, name, = {:released => true}) [:released] ||= true case type when :row .merge!(:plain => true) when :text .merge!(:plain => false) when :link # ... when :image end .merge!(:name => name, :group_id => self.id) element_class = ELEMENTS[type] element = element_class.where().first if element.nil? element_class.create(.merge(:released => ![:released])) element = element_class.create() end return element end |
#human_name ⇒ Object
145 146 147 |
# File 'app/models/scribbler_group.rb', line 145 def human_name I18n.t(self.name, :scope => "scribbler.group_names", :default => self.name.humanize) rescue self.name end |
#image(image_name, options = {}) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'app/models/scribbler_group.rb', line 54 def image(image_name, = {}) e = get_element(:image, image_name, ) if e.image e.image.url else "" end end |
#link(link_name, options = {}) ⇒ Object
48 49 50 51 52 |
# File 'app/models/scribbler_group.rb', line 48 def link(link_name, = {}) link = get_element(:link, link_name) .merge!(:target => "_blank") if link.external ActionController::Base.helpers.link_to(link.title, link.url, ) end |
#process_data!(data) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'app/models/scribbler_group.rb', line 131 def process_data!(data) data.each do |key, content| e_id = content.delete(:id) e_type = content.delete(:type) e_rel = content.delete(:release) element = ELEMENTS[e_type.to_sym].find(e_id) element.update_attributes(content) if e_rel == "1" element.release! end end end |
#process_group_data(data = {}) ⇒ Object
Save data
123 124 125 126 127 128 129 |
# File 'app/models/scribbler_group.rb', line 123 def process_group_data(data = {}) # Update realesed data self.process_data!(data[:released]) # Update unrealesed data self.process_data!(data[:unreleased]) if data[:unreleased] end |
#released_elements ⇒ Object
110 111 112 |
# File 'app/models/scribbler_group.rb', line 110 def released_elements self.elements(:released => true) end |
#row(row_name, options = {}) ⇒ Object
Display data
32 33 34 35 36 37 38 |
# File 'app/models/scribbler_group.rb', line 32 def row(row_name, = {}) e = get_element(:row, row_name) if e.content.blank? && [:default] e.update_attributes(:content => [:default]) end return e.content.to_s.html_safe end |
#text(text_name, options = {}) ⇒ Object
40 41 42 43 44 45 46 |
# File 'app/models/scribbler_group.rb', line 40 def text(text_name, = {}) e = get_element(:text, text_name) if e.content.blank? && [:default] e.update_attributes(:content => [:default]) end return e.content.to_s.html_safe end |
#unreleased_elements ⇒ Object
114 115 116 |
# File 'app/models/scribbler_group.rb', line 114 def unreleased_elements self.elements(:released => false) end |
#var(name, options = {}) ⇒ Object
63 64 65 |
# File 'app/models/scribbler_group.rb', line 63 def var(name, = {}) get_element :var, name end |