radiant-taggable-extension 2.0.4 → 2.0.5
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.
@@ -2,10 +2,10 @@ class KeywordsField < ActiveRecord::Migration
|
|
2
2
|
def self.up
|
3
3
|
Page.find(:all).each do |page|
|
4
4
|
if keywords = page.field(:keywords).try(:content)
|
5
|
-
page.attached_tags = Tag.from_list(keywords)
|
6
|
-
page.save
|
5
|
+
page.attached_tags = Tag.from_list(keywords) if keywords.any?
|
6
|
+
page.save if page.changed?
|
7
|
+
page.field(:keywords).delete
|
7
8
|
end
|
8
|
-
page.field(:keywords).delete
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module RadiantTaggableExtension
|
2
|
-
VERSION = '2.0.
|
2
|
+
VERSION = '2.0.5'
|
3
3
|
SUMMARY = %q{Tagging, clouding and faceting extension for Radiant CMS}
|
4
4
|
DESCRIPTION = %q{General purpose tagging and retrieval extension: more versatile but less focused than the tags extension. A good way to support faceted search.}
|
5
5
|
URL = "http://spanner.org/radiant/taggable"
|
data/lib/radius/library_tags.rb
CHANGED
@@ -24,6 +24,8 @@ module Radius
|
|
24
24
|
<r:library:tags:list />
|
25
25
|
<r:library:tags:cloud />
|
26
26
|
</code></pre>
|
27
|
+
|
28
|
+
A cloud is the default.
|
27
29
|
|
28
30
|
To show only those tags attached to a particular kind of object, supply a 'for' parameter.
|
29
31
|
The parameter can be 'pages', 'assets' or the plural of any asset type. If you're displaying an image gallery,
|
@@ -37,7 +39,11 @@ module Radius
|
|
37
39
|
}
|
38
40
|
tag "library:tags" do |tag|
|
39
41
|
tag.locals.tags = _get_coincident_tags(tag).sort
|
40
|
-
tag.
|
42
|
+
if tag.double?
|
43
|
+
tag.expand
|
44
|
+
else
|
45
|
+
tag.render("library:tags:cloud", tag.attr.dup, &tag.block)
|
46
|
+
end
|
41
47
|
end
|
42
48
|
tag "library:tags:each" do |tag|
|
43
49
|
tag.render('each_tag', tag.attr.dup, &tag.block)
|
@@ -193,6 +199,18 @@ module Radius
|
|
193
199
|
tag.expand if _get_assets(tag).any?
|
194
200
|
end
|
195
201
|
|
202
|
+
desc %{
|
203
|
+
Expands if there are any assets associated with all of the current tag set.
|
204
|
+
|
205
|
+
*Usage:*
|
206
|
+
<pre><code>
|
207
|
+
<r:library:unless_assets><h2>No assets</h2>...</r:library:unless_assets>
|
208
|
+
</code></pre>
|
209
|
+
}
|
210
|
+
tag "library:unless_assets" do |tag|
|
211
|
+
tag.expand unless _get_assets(tag).any?
|
212
|
+
end
|
213
|
+
|
196
214
|
Asset.known_types.each do |type|
|
197
215
|
these = type.to_s.pluralize
|
198
216
|
|
@@ -225,6 +243,18 @@ module Radius
|
|
225
243
|
tag.locals.assets = _get_assets(tag).send(these.to_sym)
|
226
244
|
tag.expand if tag.locals.assets.any?
|
227
245
|
end
|
246
|
+
desc %{
|
247
|
+
Expands unless there are any #{these} associated with all of the current tag set.
|
248
|
+
|
249
|
+
*Usage:*
|
250
|
+
<pre><code>
|
251
|
+
<r:library:unless_#{these}><h2>#{these.titlecase}</h2>...</r:library:unless_#{these}>
|
252
|
+
</code></pre>
|
253
|
+
}
|
254
|
+
tag "library:unless_#{these}" do |tag|
|
255
|
+
tag.locals.assets = _get_assets(tag).send(these.to_sym)
|
256
|
+
tag.expand unless tag.locals.assets.any?
|
257
|
+
end
|
228
258
|
end
|
229
259
|
|
230
260
|
############### extra tags:* tags that only make sense on library or other faceting pages
|
data/lib/radius/taggable_tags.rb
CHANGED
@@ -169,13 +169,13 @@ module Radius
|
|
169
169
|
*Usage:*
|
170
170
|
<pre><code><r:tag_cloud /></code></pre>
|
171
171
|
|
172
|
-
You can supply a
|
172
|
+
You can supply a path parameter to work from a page other than the present one.
|
173
173
|
|
174
|
-
<pre><code><r:tag_cloud
|
174
|
+
<pre><code><r:tag_cloud path="/elsewhere" /></code></pre>
|
175
175
|
|
176
176
|
So if you want to show all the tags attached to any page (but ignore their attachment to anything else):
|
177
177
|
|
178
|
-
<pre><code><r:tag_cloud
|
178
|
+
<pre><code><r:tag_cloud path="/" /></code></pre>
|
179
179
|
|
180
180
|
As usual you can limit the size of the cloud (the most popular will be shown) and set the destination of tag links:
|
181
181
|
|
@@ -185,9 +185,9 @@ module Radius
|
|
185
185
|
tag.locals.tags ||= _get_tags(tag)
|
186
186
|
options = tag.attr.dup
|
187
187
|
limit = options.delete('limit')
|
188
|
-
if
|
189
|
-
found = Page.
|
190
|
-
raise TagError, "no page at
|
188
|
+
if path = options.delete('path') || options.delete('url')
|
189
|
+
found = Page.find_by_path(absolute_path_for(tag.locals.page.path, path))
|
190
|
+
raise TagError, "no page at path #{path}" unless page_found?(found)
|
191
191
|
tag.locals.page = found
|
192
192
|
end
|
193
193
|
raise TagError, "no page for tag_cloud" unless tag.locals.page
|
@@ -210,9 +210,9 @@ module Radius
|
|
210
210
|
tag.locals.tags ||= _get_tags(tag)
|
211
211
|
options = tag.attr.dup
|
212
212
|
limit = options.delete('limit')
|
213
|
-
if
|
214
|
-
found = Page.
|
215
|
-
raise TagError, "no page at
|
213
|
+
if path = options.delete('path') || options.delete('url')
|
214
|
+
found = Page.find_by_path(absolute_path_for(tag.locals.page.path, path))
|
215
|
+
raise TagError, "no page at path #{path}" unless page_found?(found)
|
216
216
|
tag.locals.page = found
|
217
217
|
end
|
218
218
|
raise TagError, "no page for tag_list" unless tag.locals.page
|
@@ -417,9 +417,9 @@ module Radius
|
|
417
417
|
text = tag.double? ? tag.expand : tag.render('tag:name')
|
418
418
|
if tag.locals.page.is_a? LibraryPage
|
419
419
|
tagset = tag.locals.page.requested_tags + [tag.locals.tag]
|
420
|
-
destination = tag.locals.page.
|
421
|
-
elsif
|
422
|
-
destination =
|
420
|
+
destination = tag.locals.page.path(tagset)
|
421
|
+
elsif page_path = (options.delete('linkto') || Radiant::Config['library.path'])
|
422
|
+
destination = clean_path(page_path + '/' + tag.locals.tag.clean_title)
|
423
423
|
else
|
424
424
|
# note that this only works if you're at a url with a trailing slash...
|
425
425
|
destination = Rack::Utils.escape("#{tag.locals.tag.title}") + '/'
|
@@ -21,15 +21,6 @@ module Taggable
|
|
21
21
|
end
|
22
22
|
|
23
23
|
module InstanceMethods
|
24
|
-
|
25
|
-
# Faceted pages map nicely onto urls and are cacheable.
|
26
|
-
# There can be redundancy if tags are specified in varying order,
|
27
|
-
# but the site controller tries to normalize everything.
|
28
|
-
#
|
29
|
-
def cache?
|
30
|
-
true
|
31
|
-
end
|
32
|
-
|
33
24
|
# We override the normal Page#find_by_path mechanism and treat nonexistent child paths
|
34
25
|
# are understood as tag sets. Note that the extended site_controller will add to this set
|
35
26
|
# any tags that have been supplied in query string parameters. This may trigger a redirect
|
Binary file
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: radiant-taggable-extension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 2.0.
|
9
|
+
- 5
|
10
|
+
version: 2.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- William Ross
|
@@ -15,7 +15,8 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-10-
|
18
|
+
date: 2011-10-17 00:00:00 +01:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: sanitize
|
@@ -89,6 +90,7 @@ files:
|
|
89
90
|
- public/javascripts/autocomplete.js
|
90
91
|
- public/stylesheets/sass/admin/taggable.sass
|
91
92
|
- public/stylesheets/sass/tagcloud.sass
|
93
|
+
- radiant-taggable-extension-2.0.4.gem
|
92
94
|
- radiant-taggable-extension.gemspec
|
93
95
|
- Rakefile
|
94
96
|
- README.md
|
@@ -101,10 +103,11 @@ files:
|
|
101
103
|
- spec/spec.opts
|
102
104
|
- spec/spec_helper.rb
|
103
105
|
- taggable_extension.rb
|
106
|
+
has_rdoc: true
|
104
107
|
homepage: http://spanner.org/radiant/taggable
|
105
108
|
licenses: []
|
106
109
|
|
107
|
-
post_install_message: "\n Add this to your Gemfile with:\n\n gem 'radiant-taggable-extension', '~> 2.0.
|
110
|
+
post_install_message: "\n Add this to your Gemfile with:\n\n gem 'radiant-taggable-extension', '~> 2.0.5'\n\n "
|
108
111
|
rdoc_options: []
|
109
112
|
|
110
113
|
require_paths:
|
@@ -130,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
133
|
requirements: []
|
131
134
|
|
132
135
|
rubyforge_project:
|
133
|
-
rubygems_version: 1.
|
136
|
+
rubygems_version: 1.5.3
|
134
137
|
signing_key:
|
135
138
|
specification_version: 3
|
136
139
|
summary: Tagging, clouding and faceting extension for Radiant CMS
|