radiant-tags-extension 1.6.3 → 1.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,34 +35,28 @@ class MetaTag < ActiveRecord::Base
35
35
  find_by_name(name) || create!(:name => name)
36
36
  end
37
37
 
38
- def cloud(args = {})
39
- args = {:by => 'popularity', :order => 'desc', :limit => 5}.merge(args)
40
-
41
- find(:all, :select => 'meta_tags.*, count(*) as popularity',
42
- :limit => args[:limit],
43
- :joins => "JOIN taggings ON taggings.meta_tag_id = meta_tags.id",
44
- :conditions => args[:conditions],
45
- :group => "meta_tags.id, meta_tags.name",
46
- :order => order_string(args) )
38
+ def cloud(options = {})
39
+ options = {:by => 'popularity', :order => 'asc', :limit => 5}.merge(options)
40
+ validate_by options[:by]
41
+ validate_order options[:order]
42
+ all(
43
+ :select => 'meta_tags.*, count(*) as popularity',
44
+ :limit => options[:limit],
45
+ :joins => "JOIN taggings ON taggings.meta_tag_id = meta_tags.id",
46
+ :conditions => options[:conditions],
47
+ :group => "meta_tags.id, meta_tags.name",
48
+ :order => "#{options[:by]} #{options[:order].upcase}"
49
+ )
47
50
  end
48
-
49
- def order_string(attr)
50
- by = (attr[:by]).strip
51
- order = (attr[:order]).strip
52
- order_string = ''
53
- if self.new.attributes.keys.dup.push("popularity").include?(by)
54
- order_string << by
55
- else
56
- raise TagError.new("`by' attribute of `each' tag must be set to a valid field name")
57
- end
58
- if order =~ /^(asc|desc)$/i
59
- order_string << " #{$1.upcase}"
60
- else
61
- raise TagError.new(%{`order' attribute of `each' tag must be set to either "asc" or "desc"})
62
- end
63
-
51
+
52
+ def validate_by(by)
53
+ valid_field_names = column_names + ['popularity']
54
+ valid_field_names.include?(by) or raise %Q{"by" must be one of #{valid_field_names.to_sentence}, was #{by}}
55
+ end
56
+
57
+ def validate_order(order)
58
+ order =~ /^(asc|desc)$/i or raise %Q{"order" must be set to either "asc" or "desc"}
64
59
  end
65
-
66
60
  end
67
61
 
68
62
  def <=>(other)
@@ -220,22 +220,24 @@ module RadiusTags
220
220
 
221
221
  desc %{
222
222
  Iterates through each tag and allows you to specify the order: by popularity or by name.
223
- § The default is by name. You may also limit the search; the default is 5 results.
223
+ The default is by name. You may also limit the search; the default is 5 results.
224
224
 
225
225
  Usage: <pre><code><r:all_tags:each [order="asc|desc"] [by="name|popularity"] limit="5">...</r:all_tags:each></code></pre>
226
226
  }
227
227
  tag "all_tags:each" do |tag|
228
- by = tag.attr['by'] || 'name'
229
- order = tag.attr['order'] || 'asc'
228
+ by = (tag.attr['by'] || 'name').strip
229
+ order = (tag.attr['order'] || 'asc').strip
230
230
  limit = tag.attr['limit'] || '5'
231
- result = []
232
- all_tags = MetaTag.cloud(:limit => limit, :order => order, :by => by)
233
- all_tags.each do |t|
234
- next if t.pages.empty? # skip unused tags
235
- tag.locals.meta_tag = t
236
- result << tag.expand
231
+ begin
232
+ all_tags = MetaTag.cloud(:limit => limit, :order => order, :by => by)
233
+ rescue => e
234
+ raise TagError, "all_tags:each: "+e.message
237
235
  end
238
- result
236
+ used_tags = all_tags.reject { |t| t.pages.empty? }
237
+ used_tags.collect do |t|
238
+ tag.locals.meta_tag = t
239
+ tag.expand
240
+ end.join
239
241
  end
240
242
 
241
243
  desc "Renders the tag's name"
@@ -1,3 +1,3 @@
1
1
  module RadiantTagsExtension
2
- VERSION = '1.6.3'
2
+ VERSION = '1.6.4'
3
3
  end
metadata CHANGED
@@ -1,34 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: radiant-tags-extension
3
- version: !ruby/object:Gem::Version
4
- hash: 9
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 6
9
- - 3
10
- version: 1.6.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.6.4
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Benny Degezelle
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-06-21 00:00:00 +02:00
19
- default_executable:
12
+ date: 2012-01-11 00:00:00.000000000Z
20
13
  dependencies: []
21
-
22
- description: This extension enhances the page model with tagging capabilities, tagging as in \"2.0" and tagclouds.
23
- email:
14
+ description: This extension enhances the page model with tagging capabilities, tagging
15
+ as in \"2.0" and tagclouds.
16
+ email:
24
17
  - benny@gorilla-webdesign.be
25
18
  executables: []
26
-
27
19
  extensions: []
28
-
29
20
  extra_rdoc_files: []
30
-
31
- files:
21
+ files:
32
22
  - HELP.md
33
23
  - HELP_admin.md
34
24
  - README
@@ -238,41 +228,33 @@ files:
238
228
  - vendor/plugins/has_many_polymorphs/test/setup.rb
239
229
  - vendor/plugins/has_many_polymorphs/test/test_helper.rb
240
230
  - vendor/plugins/has_many_polymorphs/test/unit/has_many_polymorphs_test.rb
241
- has_rdoc: true
242
231
  homepage: http://ext.radiantcms.org/extensions/195-tags
243
232
  licenses: []
244
-
245
- post_install_message: "\n Add this to your radiant project by adding the following line to your environment.rb:\n config.gem 'radiant-tags-extension', :version => '1.6.3'\n "
233
+ post_install_message: ! "\n Add this to your radiant project by adding the following
234
+ line to your environment.rb:\n config.gem 'radiant-tags-extension', :version
235
+ => '1.6.4'\n "
246
236
  rdoc_options: []
247
-
248
- require_paths:
237
+ require_paths:
249
238
  - lib
250
- required_ruby_version: !ruby/object:Gem::Requirement
239
+ required_ruby_version: !ruby/object:Gem::Requirement
251
240
  none: false
252
- requirements:
253
- - - ">="
254
- - !ruby/object:Gem::Version
255
- hash: 3
256
- segments:
257
- - 0
258
- version: "0"
259
- required_rubygems_version: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ! '>='
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
246
  none: false
261
- requirements:
262
- - - ">="
263
- - !ruby/object:Gem::Version
264
- hash: 3
265
- segments:
266
- - 0
267
- version: "0"
247
+ requirements:
248
+ - - ! '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
268
251
  requirements: []
269
-
270
252
  rubyforge_project:
271
- rubygems_version: 1.3.7
253
+ rubygems_version: 1.8.10
272
254
  signing_key:
273
255
  specification_version: 3
274
256
  summary: Tagging for Radiant CMS
275
- test_files:
257
+ test_files:
276
258
  - test/fixtures/meta_tags.yml
277
259
  - test/fixtures/page_parts.yml
278
260
  - test/fixtures/pages.yml