jaap3-addthis 0.5.0 → 0.7.0
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.
- data/README.rdoc +56 -25
- data/VERSION.yml +1 -1
- data/lib/addthis.rb +25 -41
- data/test/addthis_test.rb +41 -14
- data/test/test_helper.rb +2 -2
- metadata +1 -1
data/README.rdoc
CHANGED
@@ -4,11 +4,10 @@ Addthis.com provides widgets that make sharing, bookmarking and emailing pages,
|
|
4
4
|
and subscribing to feeds easy for your visitors. It supports a broad range of
|
5
5
|
social network sites and web applications.
|
6
6
|
|
7
|
-
This
|
8
|
-
your Rails application.
|
9
|
-
and should be usable in other Ruby projects as well.
|
7
|
+
This helper makes it easy to add plain or customized Addthis.com widgets to
|
8
|
+
your Ruby (on Rails) application.
|
10
9
|
|
11
|
-
|
10
|
+
== Installation
|
12
11
|
|
13
12
|
If you want to use the Rails 2.1 dependency manager add this environment.rb:
|
14
13
|
|
@@ -23,7 +22,7 @@ Or use it as a plain plugin:
|
|
23
22
|
|
24
23
|
script/plugin install git://github.com/jaap3/addthis.git
|
25
24
|
|
26
|
-
|
25
|
+
== Quick Start
|
27
26
|
|
28
27
|
The most basic use is simply providing no arguments:
|
29
28
|
|
@@ -33,7 +32,7 @@ The most basic use is simply providing no arguments:
|
|
33
32
|
The code generated by Addthis will then try to figure out the url and title by
|
34
33
|
itself. This is not possible for addthis_feed_button.
|
35
34
|
|
36
|
-
You can set a custom url, a required argument addthis_feed_button:
|
35
|
+
You can set a custom url, a required argument for addthis_feed_button:
|
37
36
|
|
38
37
|
addthis_bookmark_button("http://www.example.com/")
|
39
38
|
addthis_email_button("http://www.example.com/")
|
@@ -52,7 +51,7 @@ To only set a custom title you can use to options hash:
|
|
52
51
|
The options hash can be used to customize the widget to a great extent. Each of
|
53
52
|
the shown examples can take the options hash as an optional extra argument.
|
54
53
|
|
55
|
-
|
54
|
+
== Usage
|
56
55
|
|
57
56
|
If you wish to track analytics for your button, you must create an account at
|
58
57
|
http://Addthis.com. Joining is free!
|
@@ -79,24 +78,20 @@ Besides overriding the default settings using the initializer, each helper
|
|
79
78
|
method takes an options hash that can be used to override any setting for
|
80
79
|
a specific button.
|
81
80
|
|
82
|
-
|
81
|
+
=== Custom services
|
83
82
|
|
84
|
-
|
85
|
-
|
83
|
+
To change the initial list of services shown when opening the bookmark menu
|
84
|
+
pass the options hash a list of services you wish to see.
|
86
85
|
|
87
|
-
addthis_bookmark_button(:
|
86
|
+
addthis_bookmark_button(:options => "facebook, email, twitter, more")
|
88
87
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
The default value of the secure option is false, this default can be changed by
|
93
|
-
setting
|
94
|
-
|
95
|
-
Jaap3::Addthis::DEFAULT_OPTIONS[:secure] = true
|
88
|
+
For a list of available services see http://addthis.com/help/customize/services.
|
89
|
+
By modifying the defaults in the initializer you can avoid having to set your
|
90
|
+
preferred set of services every call.
|
96
91
|
|
97
|
-
|
92
|
+
Jaap3::Addthis::DEFAULT_OPTIONS[:options] = "facebook, email, twitter, more"
|
98
93
|
|
99
|
-
|
94
|
+
=== Custom images / text
|
100
95
|
|
101
96
|
Using a different image or link text is achieved by using the methods with a
|
102
97
|
block:
|
@@ -106,17 +101,17 @@ block:
|
|
106
101
|
This will output a textlink that behaves exactly like a normal bookmark_button
|
107
102
|
but withouth the image.
|
108
103
|
|
109
|
-
You can
|
104
|
+
You can also use the block to call the Rails image_tag helper to embed your
|
110
105
|
own images.
|
111
106
|
|
112
|
-
You can change the default image of each button by modifying the
|
113
|
-
constants in you initializer:
|
107
|
+
You can permanently change the default image of each button by modifying the
|
108
|
+
following constants in you initializer:
|
114
109
|
|
115
110
|
Jaap3::Addthis::BOOKMARK_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
116
111
|
Jaap3::Addthis::FEED_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
117
112
|
Jaap3::Addthis::EMAIL_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
118
113
|
|
119
|
-
|
114
|
+
=== Script options
|
120
115
|
|
121
116
|
Addthis.com allows for a few variables to be set to change the appearance of the
|
122
117
|
widget. These can either be given during a method call:
|
@@ -138,7 +133,43 @@ Note that you cannot customize individual buttons on a page. Custom settings
|
|
138
133
|
will be applied to all the buttons on a page. This is a limitation of the
|
139
134
|
Addthis.com widget.
|
140
135
|
|
141
|
-
|
136
|
+
Read more about these options on the the addthis.com website:
|
137
|
+
* http://addthis.com/help/customize/branding
|
138
|
+
* http://addthis.com/help/customize/menu-offset
|
139
|
+
* http://addthis.com/help/customize/hover-delay
|
140
|
+
|
141
|
+
=== Secure pages
|
142
|
+
|
143
|
+
Calling one of the addthis_button methods with the secure option set to true
|
144
|
+
like this:
|
145
|
+
|
146
|
+
addthis_bookmark_button(:secure => true)
|
147
|
+
|
148
|
+
will output a button usable on https pages.
|
149
|
+
|
150
|
+
The default value of the secure option is false, this default can be changed by
|
151
|
+
setting
|
152
|
+
|
153
|
+
Jaap3::Addthis::DEFAULT_OPTIONS[:secure] = true
|
154
|
+
|
155
|
+
in your initializer.
|
156
|
+
|
157
|
+
=== Custom language
|
158
|
+
|
159
|
+
The Addthis widget language will automatically choose a language based on
|
160
|
+
the user's browser settings. To override this behaviour you can set a custom
|
161
|
+
language.
|
162
|
+
|
163
|
+
addthis_bookmark_button(:language => "nl")
|
164
|
+
|
165
|
+
or
|
166
|
+
|
167
|
+
Jaap3::Addthis::DEFAULT_OPTIONS[:language] = "nl"
|
168
|
+
|
169
|
+
For a list of supported language codes see the bottom of
|
170
|
+
http://addthis.com/help/localization/translations
|
171
|
+
|
172
|
+
== Contributing
|
142
173
|
|
143
174
|
If you would like to contribute to the Addthis plugin, just fork the code
|
144
175
|
and send me a pull request after you are done fiddling.
|
data/VERSION.yml
CHANGED
data/lib/addthis.rb
CHANGED
@@ -1,31 +1,23 @@
|
|
1
1
|
module Jaap3
|
2
2
|
module Addthis
|
3
|
-
CONFIG = {
|
4
|
-
:publisher => ""
|
5
|
-
}
|
3
|
+
CONFIG = {:publisher => ""}
|
6
4
|
DEFAULT_OPTIONS = {
|
7
5
|
:script_src => "http://s7.addthis.com/js/200/addthis_widget.js",
|
8
|
-
:secure => false,
|
9
6
|
:brand => nil, :header_color => nil, :header_background => nil,
|
10
|
-
:offset_top => nil, :offset_left => nil, :hover_delay => nil
|
7
|
+
:offset_top => nil, :offset_left => nil, :hover_delay => nil,
|
8
|
+
:options => nil, :language => nil, :secure => false
|
11
9
|
}
|
12
10
|
BOOKMARK_BUTTON_DEFAULTS = {
|
13
11
|
:title => "",
|
14
|
-
:
|
15
|
-
:button_html => '<img src="http://s7.addthis.com/static/btn/lg-share-en.gif"
|
16
|
-
width="125" height="16" border="0" alt="#{options[:alt]}" />'
|
12
|
+
:button_html => '<img src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" />'
|
17
13
|
}
|
18
14
|
FEED_BUTTON_DEFAULTS = {
|
19
15
|
:title => "Subscribe using any feed reader!",
|
20
|
-
:
|
21
|
-
:button_html => '<img src="http://s7.addthis.com/static/btn/lg-feed-en.gif"
|
22
|
-
width="125" height="16" border="0" alt="#{options[:alt]}" />'
|
16
|
+
:button_html => '<img src="http://s7.addthis.com/static/btn/lg-feed-en.gif" width="125" height="16" border="0" alt="Subscribe" />'
|
23
17
|
}
|
24
18
|
EMAIL_BUTTON_DEFAULTS = {
|
25
19
|
:title => "",
|
26
|
-
:
|
27
|
-
:button_html => '<img src="http://s7.addthis.com/button1-email.gif"
|
28
|
-
width="54" height="16" border="0" alt="#{options[:alt]}" />'
|
20
|
+
:button_html => '<img src="http://s7.addthis.com/button1-email.gif" width="54" height="16" border="0" alt="Email" />'
|
29
21
|
}
|
30
22
|
|
31
23
|
module Helper
|
@@ -33,56 +25,48 @@ module Jaap3
|
|
33
25
|
url, options = extract_addthis_url_and_options(args)
|
34
26
|
options[:button_html] = yield if block_given?
|
35
27
|
options = BOOKMARK_BUTTON_DEFAULTS.merge(options)
|
36
|
-
s = %Q{
|
37
|
-
<a href="http://www.addthis.com/bookmark.php?v=20"
|
38
|
-
onmouseover="return addthis_open(this, '', '#{url}', '#{options[:page_title]}')"
|
39
|
-
title="#{options[:title]}" onmouseout="addthis_close()"
|
40
|
-
onclick="return addthis_sendto()">}
|
28
|
+
s = %Q{<a href="http://www.addthis.com/bookmark.php?v=20" onmouseover="#{addthis_open("", url, options[:page_title])}" onmouseout="addthis_close()" onclick="return addthis_sendto()" title="#{options[:title]}">}
|
41
29
|
addthis_tag(s, options)
|
42
30
|
end
|
43
31
|
alias addthis_share_button addthis_bookmark_button
|
44
32
|
|
45
|
-
def
|
46
|
-
options =
|
33
|
+
def addthis_email_button(*args)
|
34
|
+
url, options = extract_addthis_url_and_options(args)
|
47
35
|
options[:button_html] = yield if block_given?
|
48
|
-
|
49
|
-
|
50
|
-
onclick="return addthis_open(this, 'feed', '#{url}')"
|
51
|
-
title="#{options[:title]}" target="_blank">}
|
36
|
+
options = EMAIL_BUTTON_DEFAULTS.merge(options)
|
37
|
+
s = %Q{<a href="http://www.addthis.com/bookmark.php" onclick="#{addthis_open("email", url, options[:page_title])}" title="#{options[:title]}">}
|
52
38
|
addthis_tag(s, options)
|
53
39
|
end
|
54
40
|
|
55
|
-
def
|
56
|
-
|
41
|
+
def addthis_feed_button(url, *args)
|
42
|
+
options = FEED_BUTTON_DEFAULTS.merge(extract_addthis_options(args))
|
57
43
|
options[:button_html] = yield if block_given?
|
58
|
-
|
59
|
-
s = %Q{
|
60
|
-
<a href="http://www.addthis.com/bookmark.php"
|
61
|
-
onclick="return addthis_open(this, 'email', '#{url}', '#{options[:page_title]}')"
|
62
|
-
title="#{options[:title]}">}
|
44
|
+
s = %Q{<a href="http://www.addthis.com/feed.php?pub=#{options[:publisher]}&h1=#{url.gsub(/[^a-zA-Z0-9_\.\-]/n) {|c| sprintf('%%%02x', c[0]) }}&t1=" onclick="#{addthis_open("feed", url)}" title="#{options[:title]}" target="_blank">}
|
63
45
|
addthis_tag(s, options)
|
64
46
|
end
|
65
47
|
|
66
48
|
protected
|
67
49
|
def addthis_tag(str, options = {})
|
68
|
-
s = [
|
50
|
+
s = ["<!-- AddThis Button BEGIN -->"]
|
69
51
|
s << addthis_custom_script(options)
|
70
|
-
s <<
|
71
|
-
s <<
|
72
|
-
s << %Q{<!-- AddThis Button END -->}
|
52
|
+
s << "#{str}#{options[:button_html]}</a><script type=\"text/javascript\" src=\"#{options[:script_src]}\"></script>"
|
53
|
+
s << "<!-- AddThis Button END -->"
|
73
54
|
s = s * "\n"
|
74
55
|
options[:secure] ? s.gsub(/http:\/\/s[57]\.addthis\.com/, "https://secure.addthis.com") : s
|
75
56
|
end
|
76
57
|
|
77
58
|
def addthis_custom_script(options = {})
|
78
|
-
s =
|
79
|
-
|
80
|
-
|
81
|
-
s << %Q{var addthis_#{custom} = #{options[custom].is_a?(Integer) ? options[custom] : %Q("#{options[custom]}")};} unless options[custom].nil?
|
59
|
+
s = "<script type=\"text/javascript\">var addthis_pub = '#{options[:publisher]}';"
|
60
|
+
[:brand, :header_color, :header_background, :offset_top, :offset_left, :hover_delay, :options, :language].each do |custom|
|
61
|
+
s << "var addthis_#{custom} = #{options[custom].is_a?(Integer) ? options[custom] : "'#{options[custom]}'"};" unless options[custom].nil?
|
82
62
|
end
|
83
63
|
s << "</script>"
|
84
64
|
end
|
85
65
|
|
66
|
+
def addthis_open(type, url, title = nil)
|
67
|
+
"addthis_open(this, '#{type}', '#{url}'#{ title.nil? ? "" : ", '#{title.gsub("'", "\\u0027").gsub("\"", "\\u0022")}'"})"
|
68
|
+
end
|
69
|
+
|
86
70
|
def extract_addthis_url_and_options(args, options = {:page_title => "[TITLE]"})
|
87
71
|
url = args[0].is_a?(String) ? args.shift : "[URL]"
|
88
72
|
return url, options = extract_addthis_options(args, options)
|
@@ -91,8 +75,8 @@ module Jaap3
|
|
91
75
|
def extract_addthis_options(args, options = {})
|
92
76
|
page_title = args[0].is_a?(String) ? args.shift : options[:page_title]
|
93
77
|
options = args[0].is_a?(Hash) ? args.shift : options
|
94
|
-
options[:page_title] = page_title
|
95
78
|
options.symbolize_keys! if options.respond_to?(:symbolize_keys!)
|
79
|
+
options[:page_title] = page_title
|
96
80
|
options = CONFIG.merge(DEFAULT_OPTIONS).merge(options)
|
97
81
|
return options
|
98
82
|
end
|
data/test/addthis_test.rb
CHANGED
@@ -18,7 +18,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
18
18
|
should "provide addthis_email_button" do
|
19
19
|
assert respond_to?(:addthis_email_button)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
23
23
|
context "the output of #{m}" do
|
24
24
|
setup do
|
@@ -43,10 +43,19 @@ class AddthisTest < Test::Unit::TestCase
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
[:addthis_bookmark_button, :addthis_email_button].each do |m|
|
47
|
+
context "the output of #{m} with url and title set" do
|
48
|
+
setup { @output = method(m).call("http://example.com", "It's an \"example\"") }
|
49
|
+
|
50
|
+
should "include title" do
|
51
|
+
assert_match "'It\\u0027s an \\u0022example\\u0022'", @output
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
46
56
|
context "a bookmark/share button" do
|
47
57
|
setup { @output = addthis_bookmark_button }
|
48
58
|
|
49
|
-
should_set_alt_to Jaap3::Addthis::BOOKMARK_BUTTON_DEFAULTS[:alt]
|
50
59
|
should_set_title_to Jaap3::Addthis::BOOKMARK_BUTTON_DEFAULTS[:title]
|
51
60
|
should_set_href_to "http://www.addthis.com/bookmark.php?v=20"
|
52
61
|
|
@@ -62,9 +71,8 @@ class AddthisTest < Test::Unit::TestCase
|
|
62
71
|
context "a feed button" do
|
63
72
|
setup { @output = addthis_feed_button("http://example.com") }
|
64
73
|
|
65
|
-
should_set_alt_to Jaap3::Addthis::FEED_BUTTON_DEFAULTS[:alt]
|
66
74
|
should_set_title_to Jaap3::Addthis::FEED_BUTTON_DEFAULTS[:title]
|
67
|
-
should_set_href_to "http://www.addthis.com/feed.php?pub=&h1=http
|
75
|
+
should_set_href_to "http://www.addthis.com/feed.php?pub=&h1=http%3a%2f%2fexample.com&t1="
|
68
76
|
|
69
77
|
should "set url to example.com" do
|
70
78
|
assert_match "'http://example.com')", @output
|
@@ -74,7 +82,6 @@ class AddthisTest < Test::Unit::TestCase
|
|
74
82
|
context "an email button" do
|
75
83
|
setup { @output = addthis_email_button }
|
76
84
|
|
77
|
-
should_set_alt_to Jaap3::Addthis::EMAIL_BUTTON_DEFAULTS[:alt]
|
78
85
|
should_set_title_to Jaap3::Addthis::EMAIL_BUTTON_DEFAULTS[:title]
|
79
86
|
should_set_href_to "http://www.addthis.com/bookmark.php"
|
80
87
|
end
|
@@ -93,7 +100,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
93
100
|
context "a feed button" do
|
94
101
|
setup { @output = addthis_feed_button("http://example.com") }
|
95
102
|
|
96
|
-
should_set_href_to "http://www.addthis.com/feed.php?pub=test_publisher&h1=http
|
103
|
+
should_set_href_to "http://www.addthis.com/feed.php?pub=test_publisher&h1=http%3a%2f%2fexample.com&t1="
|
97
104
|
end
|
98
105
|
|
99
106
|
context "in turn overwritten by options hash" do
|
@@ -108,7 +115,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
108
115
|
context "a feed button" do
|
109
116
|
setup { @output = addthis_feed_button("http://example.com", :publisher => "another_publisher") }
|
110
117
|
|
111
|
-
should_set_href_to "http://www.addthis.com/feed.php?pub=another_publisher&h1=http
|
118
|
+
should_set_href_to "http://www.addthis.com/feed.php?pub=another_publisher&h1=http%3a%2f%2fexample.com&t1="
|
112
119
|
end
|
113
120
|
end
|
114
121
|
end
|
@@ -135,13 +142,12 @@ class AddthisTest < Test::Unit::TestCase
|
|
135
142
|
end
|
136
143
|
end
|
137
144
|
|
138
|
-
context "when overwriting
|
145
|
+
context "when overwriting title" do
|
139
146
|
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
140
147
|
context "the output of #{m}" do
|
141
|
-
setup { @output = method(m).call("http://example.com", :
|
148
|
+
setup { @output = method(m).call("http://example.com", :title => "Example title") }
|
142
149
|
|
143
150
|
should_set_title_to "Example title"
|
144
|
-
should_set_alt_to "Example"
|
145
151
|
end
|
146
152
|
end
|
147
153
|
end
|
@@ -212,9 +218,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
212
218
|
}
|
213
219
|
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
214
220
|
context "the output of #{m}" do
|
215
|
-
setup
|
216
|
-
@output = method(m).call("http://example.com", options)
|
217
|
-
end
|
221
|
+
setup { @output = method(m).call("http://example.com", options) }
|
218
222
|
|
219
223
|
options.each_pair do |attribute, value|
|
220
224
|
should_customize attribute, value
|
@@ -228,7 +232,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
228
232
|
options.each_pair do |attribute, value|
|
229
233
|
Jaap3::Addthis::DEFAULT_OPTIONS[attribute] = value
|
230
234
|
end
|
231
|
-
@output = method(m).call("http://example.com"
|
235
|
+
@output = method(m).call("http://example.com")
|
232
236
|
end
|
233
237
|
|
234
238
|
options.each_pair do |attribute, value|
|
@@ -238,4 +242,27 @@ class AddthisTest < Test::Unit::TestCase
|
|
238
242
|
end
|
239
243
|
end
|
240
244
|
|
245
|
+
context "with a custom list of services" do
|
246
|
+
context "the output of addthis_bookmark_button" do
|
247
|
+
setup { @output = addthis_bookmark_button(:options => "facebook, email, twitter, more") }
|
248
|
+
|
249
|
+
should_customize :options, "facebook, email, twitter, more"
|
250
|
+
end
|
251
|
+
|
252
|
+
context "by changing the defaults the output of addthis_bookmark_button" do
|
253
|
+
setup do
|
254
|
+
Jaap3::Addthis::DEFAULT_OPTIONS[:options] = "facebook, email, twitter, more"
|
255
|
+
@output = addthis_bookmark_button
|
256
|
+
end
|
257
|
+
|
258
|
+
should_customize :options, "facebook, email, twitter, more"
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
context "with a custom language set" do
|
263
|
+
setup { @output = addthis_bookmark_button(:language => "nl") }
|
264
|
+
|
265
|
+
should_customize :language, "nl"
|
266
|
+
end
|
267
|
+
|
241
268
|
end
|
data/test/test_helper.rb
CHANGED
@@ -29,13 +29,13 @@ class Test::Unit::TestCase
|
|
29
29
|
|
30
30
|
def should_not_customize(attribute)
|
31
31
|
should "not set addthis_#{attribute}" do
|
32
|
-
assert_no_match(/var addthis_#{attribute} =
|
32
|
+
assert_no_match(/var addthis_#{attribute} = '[^']+';/, @output)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
def should_customize(attribute, value)
|
37
37
|
should "set addthis_#{attribute} to '#{value}" do
|
38
|
-
assert_match(/var addthis_#{attribute} = [
|
38
|
+
assert_match(/var addthis_#{attribute} = [']?#{value}[']?;/, @output)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|