Class: Cms::Tag
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Cms::Tag
- Defined in:
- app/models/cms/tag.rb
Instance Attribute Summary collapse
-
#size ⇒ Object
Returns the value of attribute size.
Class Method Summary collapse
-
.cloud(options = {}) ⇒ Object
Returns an array of tags with a size attribute This takes the same arguments as find, plus the additional ‘:sizes` option, which contols the number of sizes the tag cloud will have.
- .columns_for_index ⇒ Object
-
.counts(options = {}) ⇒ Array
Returns an array of tags with a count attribute.
Instance Method Summary collapse
Instance Attribute Details
#size ⇒ Object
Returns the value of attribute size.
7 8 9 |
# File 'app/models/cms/tag.rb', line 7 def size @size end |
Class Method Details
.cloud(options = {}) ⇒ Object
Returns an array of tags with a size attribute This takes the same arguments as find, plus the additional ‘:sizes` option, which contols the number of sizes the tag cloud will have. The default number of sizes is 5.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/models/cms/tag.rb', line 28 def self.cloud(={}) sizes = (.delete(:sizes) || 5) - 1 sizes = 1 if sizes < 1 = counts() return [] if .blank? min = nil max = nil .each do |t| t.count = t.count.to_i min = t.count if (min.nil? || t.count < min) max = t.count if (max.nil? || t.count > min) end divisor = ((max - min) / sizes) + 1 .each do |t| t.size = ("%1.0f" % (t.count * 1.0 / divisor)).to_i end end |
.columns_for_index ⇒ Object
54 55 56 57 58 |
# File 'app/models/cms/tag.rb', line 54 def self.columns_for_index [{:label => "Name", :method => :name, :order => "name"}, {:label => "Usages", :method => :tagging_count}, {:label => "Updated On", :method => :updated_on_string, :order => "updated_at"}] end |
.counts(options = {}) ⇒ Array
Returns an array of tags with a count attribute
14 15 16 17 18 19 20 21 22 |
# File 'app/models/cms/tag.rb', line 14 def self.counts(={}) with_scope(:find => { :select => "#{Tag.table_name}.id, #{Tag.table_name}.name, count(*) as count", :joins => :taggings, :group => "#{Tag.table_name}.id, #{Tag.table_name}.name", :order => "count desc, #{Tag.table_name}.name"}) do all() end end |
Instance Method Details
#render ⇒ Object
60 61 62 |
# File 'app/models/cms/tag.rb', line 60 def render @taggings = @content_block.taggings.paginate(:page => params[:page]) end |
#tagging_count ⇒ Object
50 51 52 |
# File 'app/models/cms/tag.rb', line 50 def tagging_count taggings.count end |