radiant-library-extension 2.0.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/app/helpers/library_helper.rb +23 -0
- data/app/views/admin/assets/_edit_title.html.haml +12 -29
- data/lib/library/library_tags.rb +42 -16
- data/library_extension.rb +6 -2
- data/radiant-library-extension.gemspec +9 -11
- data/spec/controllers/library_site_controller_spec.rb +0 -1
- metadata +7 -9
- data/pkg/radiant-library-extension-2.0.0.gem +0 -0
- data/pkg/radiant-library-extension-2.0.1.gem +0 -0
- data/pkg/radiant-library-extension-2.0.2.gem +0 -0
data/Rakefile
CHANGED
@@ -7,8 +7,8 @@ begin
|
|
7
7
|
gem.email = "will@spanner.org"
|
8
8
|
gem.homepage = "http://github.com/spanner/radiant-library-extension"
|
9
9
|
gem.authors = ["spanner"]
|
10
|
-
gem.add_dependency "radiant", "
|
11
|
-
gem.add_dependency "radiant-taggable-extension", "
|
10
|
+
gem.add_dependency "radiant", "~> 0.9.0"
|
11
|
+
gem.add_dependency "radiant-taggable-extension", "~> 1.2.0"
|
12
12
|
end
|
13
13
|
rescue LoadError
|
14
14
|
puts "Jeweler (or a dependency) not available. This is only required if you plan to package library as a gem."
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0
|
1
|
+
2.1.0
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'sanitize'
|
2
|
+
|
3
|
+
module LibraryHelper
|
4
|
+
|
5
|
+
def clean_html(text)
|
6
|
+
Sanitize.clean(text, Sanitize::Config::RELAXED)
|
7
|
+
end
|
8
|
+
|
9
|
+
def strip_html(text)
|
10
|
+
Sanitize.clean(text)
|
11
|
+
end
|
12
|
+
|
13
|
+
def truncate_words(text='', options={})
|
14
|
+
return '' if text.blank?
|
15
|
+
ellipsis = options[:ellipsis] || '…'
|
16
|
+
limit = (options[:limit] || 64).to_i
|
17
|
+
text = strip_html(text) if options[:strip]
|
18
|
+
words = text.split
|
19
|
+
ellipsis = '' unless words.size > limit
|
20
|
+
words[0..(limit-1)].join(" ") + ellipsis
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -1,31 +1,14 @@
|
|
1
|
-
-
|
2
|
-
|
3
|
-
|
4
|
-
:width 99%
|
5
|
-
div#a_title
|
6
|
-
:width 70%
|
7
|
-
:float left
|
8
|
-
div#a_keywords
|
9
|
-
:width 28%
|
10
|
-
:float right
|
11
|
-
div#content
|
12
|
-
.form-area
|
13
|
-
.keywords
|
14
|
-
.textbox
|
15
|
-
:font-family Georgia, Palatino, "Times New Roman", Times, serif
|
16
|
-
:font-size 200%
|
17
|
-
:width 100%
|
18
|
-
:color #c00
|
1
|
+
- include_stylesheet 'admin/taggable'
|
2
|
+
- include_javascript 'autocomplete'
|
3
|
+
- include_javascript 'admin/taggable'
|
19
4
|
|
20
5
|
- fields_for :asset, @asset do |fields|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
Tags
|
31
|
-
= fields.text_field :keywords, :class => 'textbox'
|
6
|
+
%p.keywords
|
7
|
+
%label{:for=>"asset_keywords"}
|
8
|
+
Tags
|
9
|
+
= fields.text_field :keywords, :class => 'textbox tagger'
|
10
|
+
|
11
|
+
%p.title
|
12
|
+
%label{:for=>"asset_title"}
|
13
|
+
Title
|
14
|
+
= fields.text_field :title, :class => 'textbox', :maxlength => 100
|
data/lib/library/library_tags.rb
CHANGED
@@ -1,9 +1,40 @@
|
|
1
1
|
module Library
|
2
2
|
module LibraryTags
|
3
3
|
include Radiant::Taggable
|
4
|
+
include LibraryHelper
|
4
5
|
|
5
6
|
class TagError < StandardError; end
|
6
7
|
|
8
|
+
############### libraryish utility tags that don't really belong here
|
9
|
+
desc %{
|
10
|
+
Truncates the contained text to the specified number of words. Attributes:
|
11
|
+
* `limit` sets the number of words shown. Default is 64.
|
12
|
+
* `ellipsis` is the suffix used to indicate truncation. Default is '…'
|
13
|
+
* `strip="true"` will cause all html tags to be stripped from the contained text before it is truncated. Default is false.
|
14
|
+
}
|
15
|
+
tag "truncate" do |tag|
|
16
|
+
# truncate_words is in LibraryHelper
|
17
|
+
truncate_words tag.expand, :limit => tag.attr['limit'], :ellipsis => tag.attr['ellipsis'], :strip => tag.attr['strip'] == 'true'
|
18
|
+
end
|
19
|
+
|
20
|
+
desc %{
|
21
|
+
Strips all html tags from the contained text, leaving the text itself unchanged.
|
22
|
+
Useful when, for example, using a page part to populate a meta tag.
|
23
|
+
}
|
24
|
+
tag "strip" do |tag|
|
25
|
+
# strip_html is in LibraryHelper
|
26
|
+
strip_html tag.expand
|
27
|
+
end
|
28
|
+
|
29
|
+
desc %{
|
30
|
+
Removes all unsafe html tags and attributes from the enclosed text, protecting from cross-site scripting attacks while leaving the text intact.
|
31
|
+
}
|
32
|
+
tag "clean" do |tag|
|
33
|
+
# clean_html is in LibraryHelper
|
34
|
+
clean_html tag.expand
|
35
|
+
end
|
36
|
+
|
37
|
+
|
7
38
|
############### tags for use on library pages
|
8
39
|
# usually to build a faceted browser
|
9
40
|
|
@@ -16,13 +47,12 @@ module Library
|
|
16
47
|
Displays a list of the tags that can be used to narrow the set of results displayed. This begins as a list of
|
17
48
|
all available tags, and as they are chosen it shrinks to show only the coincident tags that will further reduce the set.
|
18
49
|
|
19
|
-
This is normally used to display a list or cloud of facets that can be added to a search.
|
50
|
+
This is normally used to display a list or cloud of facets that can be added to a search.
|
20
51
|
|
21
52
|
<pre><code>
|
22
53
|
<r:library:tags:each><li><r:tag:link /></li></r:library:tags:each>
|
23
54
|
<r:library:tags:list />
|
24
55
|
<r:library:tags:cloud />
|
25
|
-
<r:library:tags />
|
26
56
|
</code></pre>
|
27
57
|
|
28
58
|
To show only those tags attached to a particular kind of object, supply a 'for' parameter.
|
@@ -36,21 +66,17 @@ module Library
|
|
36
66
|
You can still display pages associated with those tags, but the list will not include tags that only have pages.
|
37
67
|
}
|
38
68
|
tag "library:tags" do |tag|
|
39
|
-
tag.locals.tags = _get_coincident_tags(tag)
|
40
|
-
|
41
|
-
tag.expand
|
42
|
-
else
|
43
|
-
tag.render('tags:cloud', tag.attr.dup)
|
44
|
-
end
|
69
|
+
tag.locals.tags = _get_coincident_tags(tag).sort
|
70
|
+
tag.expand
|
45
71
|
end
|
46
72
|
tag "library:tags:each" do |tag|
|
47
|
-
tag.render('
|
73
|
+
tag.render('each_tag', tag.attr.dup, &tag.block)
|
48
74
|
end
|
49
75
|
tag "library:tags:list" do |tag|
|
50
|
-
tag.render('
|
76
|
+
tag.render('tag_list', tag.attr.dup)
|
51
77
|
end
|
52
78
|
tag "library:tags:cloud" do |tag|
|
53
|
-
tag.render('
|
79
|
+
tag.render('tag_cloud', tag.attr.dup)
|
54
80
|
end
|
55
81
|
|
56
82
|
desc %{
|
@@ -64,7 +90,7 @@ module Library
|
|
64
90
|
</code></pre>
|
65
91
|
}
|
66
92
|
tag "library:if_tags" do |tag|
|
67
|
-
tag.locals.tags = _get_coincident_tags(tag)
|
93
|
+
tag.locals.tags = _get_coincident_tags(tag).sort
|
68
94
|
tag.expand if tag.locals.tags.length > 1
|
69
95
|
end
|
70
96
|
desc %{
|
@@ -76,7 +102,7 @@ module Library
|
|
76
102
|
</code></pre>
|
77
103
|
}
|
78
104
|
tag "library:unless_tags" do |tag|
|
79
|
-
tag.locals.tags = _get_coincident_tags(tag)
|
105
|
+
tag.locals.tags = _get_coincident_tags(tag).sort
|
80
106
|
tag.expand if tag.locals.tags.length > 1
|
81
107
|
end
|
82
108
|
|
@@ -91,7 +117,7 @@ module Library
|
|
91
117
|
</code></pre>
|
92
118
|
}
|
93
119
|
tag "library:requested_tags" do |tag|
|
94
|
-
tag.locals.tags = _get_requested_tags(tag)
|
120
|
+
tag.locals.tags = _get_requested_tags(tag).sort
|
95
121
|
if tag.double?
|
96
122
|
tag.expand
|
97
123
|
else
|
@@ -99,7 +125,7 @@ module Library
|
|
99
125
|
end
|
100
126
|
end
|
101
127
|
tag "library:requested_tags:each" do |tag|
|
102
|
-
tag.render('
|
128
|
+
tag.render('each_tag', tag.attr.dup, &tag.block)
|
103
129
|
end
|
104
130
|
|
105
131
|
desc %{
|
@@ -113,7 +139,7 @@ module Library
|
|
113
139
|
</code></pre>
|
114
140
|
}
|
115
141
|
tag "library:if_requested_tags" do |tag|
|
116
|
-
tag.locals.tags = _get_requested_tags(tag)
|
142
|
+
tag.locals.tags = _get_requested_tags(tag).sort
|
117
143
|
tag.expand if tag.locals.tags.any?
|
118
144
|
end
|
119
145
|
|
data/library_extension.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
require_dependency 'application_controller'
|
2
2
|
|
3
3
|
class LibraryExtension < Radiant::Extension
|
4
|
-
version "2.0
|
4
|
+
version "2.1.0"
|
5
5
|
description "Combines paperclipped and taggable to create a general purpose faceted library"
|
6
6
|
url "http://github.com/spanner/radiant-library-extension"
|
7
|
-
|
7
|
+
|
8
|
+
extension_config do |config|
|
9
|
+
config.gem 'sanitize'
|
10
|
+
end
|
11
|
+
|
8
12
|
def activate
|
9
13
|
Asset.send :is_taggable # make assets taggable
|
10
14
|
Asset.send :include, Library::TaggedAsset # add a keywords method for likeness with pages
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{radiant-library-extension}
|
8
|
-
s.version = "2.0
|
8
|
+
s.version = "2.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["spanner"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-04-20}
|
13
13
|
s.description = %q{Combines paperclipped and taggable to create a general purpose faceted library}
|
14
14
|
s.email = %q{will@spanner.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
"README.md",
|
20
20
|
"Rakefile",
|
21
21
|
"VERSION",
|
22
|
+
"app/helpers/library_helper.rb",
|
22
23
|
"app/models/library_page.rb",
|
23
24
|
"app/views/admin/assets/_edit_metadata.html.haml",
|
24
25
|
"app/views/admin/assets/_edit_title.html.haml",
|
@@ -36,9 +37,6 @@ Gem::Specification.new do |s|
|
|
36
37
|
"lib/library/tagged_asset.rb",
|
37
38
|
"lib/tasks/library_extension_tasks.rake",
|
38
39
|
"library_extension.rb",
|
39
|
-
"pkg/radiant-library-extension-2.0.0.gem",
|
40
|
-
"pkg/radiant-library-extension-2.0.1.gem",
|
41
|
-
"pkg/radiant-library-extension-2.0.2.gem",
|
42
40
|
"public/images/library/bigframe.png",
|
43
41
|
"public/images/library/close.png",
|
44
42
|
"public/images/library/detag.png",
|
@@ -77,15 +75,15 @@ Gem::Specification.new do |s|
|
|
77
75
|
s.specification_version = 3
|
78
76
|
|
79
77
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
80
|
-
s.add_runtime_dependency(%q<radiant>, ["
|
81
|
-
s.add_runtime_dependency(%q<radiant-taggable-extension>, ["
|
78
|
+
s.add_runtime_dependency(%q<radiant>, ["~> 0.9.0"])
|
79
|
+
s.add_runtime_dependency(%q<radiant-taggable-extension>, ["~> 1.2.0"])
|
82
80
|
else
|
83
|
-
s.add_dependency(%q<radiant>, ["
|
84
|
-
s.add_dependency(%q<radiant-taggable-extension>, ["
|
81
|
+
s.add_dependency(%q<radiant>, ["~> 0.9.0"])
|
82
|
+
s.add_dependency(%q<radiant-taggable-extension>, ["~> 1.2.0"])
|
85
83
|
end
|
86
84
|
else
|
87
|
-
s.add_dependency(%q<radiant>, ["
|
88
|
-
s.add_dependency(%q<radiant-taggable-extension>, ["
|
85
|
+
s.add_dependency(%q<radiant>, ["~> 0.9.0"])
|
86
|
+
s.add_dependency(%q<radiant-taggable-extension>, ["~> 1.2.0"])
|
89
87
|
end
|
90
88
|
end
|
91
89
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: radiant-library-extension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 2.0.3
|
10
|
+
version: 2.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- spanner
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-04-20 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
hash: 59
|
30
30
|
segments:
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
hash: 31
|
46
46
|
segments:
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- README.md
|
63
63
|
- Rakefile
|
64
64
|
- VERSION
|
65
|
+
- app/helpers/library_helper.rb
|
65
66
|
- app/models/library_page.rb
|
66
67
|
- app/views/admin/assets/_edit_metadata.html.haml
|
67
68
|
- app/views/admin/assets/_edit_title.html.haml
|
@@ -79,9 +80,6 @@ files:
|
|
79
80
|
- lib/library/tagged_asset.rb
|
80
81
|
- lib/tasks/library_extension_tasks.rake
|
81
82
|
- library_extension.rb
|
82
|
-
- pkg/radiant-library-extension-2.0.0.gem
|
83
|
-
- pkg/radiant-library-extension-2.0.1.gem
|
84
|
-
- pkg/radiant-library-extension-2.0.2.gem
|
85
83
|
- public/images/library/bigframe.png
|
86
84
|
- public/images/library/close.png
|
87
85
|
- public/images/library/detag.png
|
Binary file
|
Binary file
|
Binary file
|