jaap3-addthis 0.2.1 → 0.5.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 +68 -11
- data/VERSION.yml +2 -2
- data/lib/addthis.rb +40 -22
- data/test/addthis_test.rb +107 -16
- data/test/test_helper.rb +12 -0
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -5,16 +5,21 @@ 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
7
|
This plugin makes it easy to add plain or customized Addthis.com widgets to
|
8
|
-
your Rails application.
|
8
|
+
your Rails application. As a matter of fact, the code is framework agnostic
|
9
|
+
and should be usable in other Ruby projects as well.
|
9
10
|
|
10
11
|
= Installation
|
11
12
|
|
12
|
-
|
13
|
+
If you want to use the Rails 2.1 dependency manager add this environment.rb:
|
13
14
|
|
14
15
|
config.gem 'jaap3-addthis', :lib => 'addthis',
|
15
16
|
:source => 'http://gems.github.com'
|
16
17
|
|
17
|
-
|
18
|
+
Then run the following command in your Rails application root:
|
19
|
+
|
20
|
+
rake gems:install
|
21
|
+
|
22
|
+
Or use it as a plain plugin:
|
18
23
|
|
19
24
|
script/plugin install git://github.com/jaap3/addthis.git
|
20
25
|
|
@@ -28,29 +33,29 @@ The most basic use is simply providing no arguments:
|
|
28
33
|
The code generated by Addthis will then try to figure out the url and title by
|
29
34
|
itself. This is not possible for addthis_feed_button.
|
30
35
|
|
31
|
-
You can set a custom url,
|
36
|
+
You can set a custom url, a required argument addthis_feed_button:
|
32
37
|
|
33
38
|
addthis_bookmark_button("http://www.example.com/")
|
34
39
|
addthis_email_button("http://www.example.com/")
|
35
40
|
addthis_feed_button("http://www.example.com/")
|
36
41
|
|
37
|
-
Setting a title is possible when adding a bookmark or email button:
|
42
|
+
Setting a title is also possible when adding a bookmark or email button:
|
38
43
|
|
39
44
|
addthis_bookmark_button("http://www.example.com/", "Example website")
|
40
45
|
addthis_email_button("http://www.example.com/", "Example website")
|
41
46
|
|
42
47
|
To only set a custom title you can use to options hash:
|
43
48
|
|
44
|
-
addthis_bookmark_button(:
|
45
|
-
addthis_email_button(:
|
49
|
+
addthis_bookmark_button(:page_title => "Example title")
|
50
|
+
addthis_email_button(:page_title => "Example title")
|
46
51
|
|
47
|
-
The options hash can be used to customize the widget to a great
|
52
|
+
The options hash can be used to customize the widget to a great extent. Each of
|
48
53
|
the shown examples can take the options hash as an optional extra argument.
|
49
54
|
|
50
55
|
= Usage
|
51
56
|
|
52
57
|
If you wish to track analytics for your button, you must create an account at
|
53
|
-
http://
|
58
|
+
http://Addthis.com. Joining is free!
|
54
59
|
|
55
60
|
After signing up create a new ruby file in config/initializers called
|
56
61
|
addthis.rb. You can use this file to configure your publisher name (your
|
@@ -74,13 +79,65 @@ Besides overriding the default settings using the initializer, each helper
|
|
74
79
|
method takes an options hash that can be used to override any setting for
|
75
80
|
a specific button.
|
76
81
|
|
77
|
-
|
82
|
+
= Secure pages
|
83
|
+
|
84
|
+
Calling one of the addthis_button methods with the secure option set to true
|
85
|
+
like this:
|
78
86
|
|
79
87
|
addthis_bookmark_button(:publisher => "example", :secure => true)
|
80
88
|
|
81
|
-
|
89
|
+
will output a button usable on https pages with the publisher variable set
|
82
90
|
to "example" regardless of any configuration changes.
|
83
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
|
96
|
+
|
97
|
+
in your initializer.
|
98
|
+
|
99
|
+
= Custom images / text
|
100
|
+
|
101
|
+
Using a different image or link text is achieved by using the methods with a
|
102
|
+
block:
|
103
|
+
|
104
|
+
addthis_bookmark_button { "Click here to AddThis!" }
|
105
|
+
|
106
|
+
This will output a textlink that behaves exactly like a normal bookmark_button
|
107
|
+
but withouth the image.
|
108
|
+
|
109
|
+
You can offcourse use the block to call the Rails image_tag helper to embed your
|
110
|
+
own images.
|
111
|
+
|
112
|
+
You can change the default image of each button by modifying the following
|
113
|
+
constants in you initializer:
|
114
|
+
|
115
|
+
Jaap3::Addthis::BOOKMARK_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
116
|
+
Jaap3::Addthis::FEED_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
117
|
+
Jaap3::Addthis::EMAIL_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
118
|
+
|
119
|
+
= Script options
|
120
|
+
|
121
|
+
Addthis.com allows for a few variables to be set to change the appearance of the
|
122
|
+
widget. These can either be given during a method call:
|
123
|
+
|
124
|
+
addthis_bookmark_button({
|
125
|
+
:brand => "Example brand",
|
126
|
+
:header_color => "white",
|
127
|
+
:header_background => "black",
|
128
|
+
:offset_top => -100,
|
129
|
+
:offset_left => 125,
|
130
|
+
:hover_delay => 200
|
131
|
+
})
|
132
|
+
|
133
|
+
Or by having your initializer change the defaults stored in:
|
134
|
+
|
135
|
+
Jaap3::Addthis::DEFAULT_OPTIONS
|
136
|
+
|
137
|
+
Note that you cannot customize individual buttons on a page. Custom settings
|
138
|
+
will be applied to all the buttons on a page. This is a limitation of the
|
139
|
+
Addthis.com widget.
|
140
|
+
|
84
141
|
= Contributing
|
85
142
|
|
86
143
|
If you would like to contribute to the Addthis plugin, just fork the code
|
data/VERSION.yml
CHANGED
data/lib/addthis.rb
CHANGED
@@ -5,66 +5,84 @@ module Jaap3
|
|
5
5
|
}
|
6
6
|
DEFAULT_OPTIONS = {
|
7
7
|
:script_src => "http://s7.addthis.com/js/200/addthis_widget.js",
|
8
|
-
:secure => false
|
8
|
+
:secure => false,
|
9
|
+
:brand => nil, :header_color => nil, :header_background => nil,
|
10
|
+
:offset_top => nil, :offset_left => nil, :hover_delay => nil
|
9
11
|
}
|
10
12
|
BOOKMARK_BUTTON_DEFAULTS = {
|
11
13
|
:title => "",
|
12
|
-
:alt => "Bookmark and Share"
|
14
|
+
:alt => "Bookmark and Share",
|
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]}" />'
|
13
17
|
}
|
14
18
|
FEED_BUTTON_DEFAULTS = {
|
15
19
|
:title => "Subscribe using any feed reader!",
|
16
|
-
:alt => "Subscribe"
|
20
|
+
:alt => "Subscribe",
|
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]}" />'
|
17
23
|
}
|
18
24
|
EMAIL_BUTTON_DEFAULTS = {
|
19
25
|
:title => "",
|
20
|
-
:alt => "Email"
|
26
|
+
:alt => "Email",
|
27
|
+
:button_html => '<img src="http://s7.addthis.com/button1-email.gif"
|
28
|
+
width="54" height="16" border="0" alt="#{options[:alt]}" />'
|
21
29
|
}
|
22
30
|
|
23
31
|
module Helper
|
24
32
|
def addthis_bookmark_button(*args)
|
25
33
|
url, options = extract_addthis_url_and_options(args)
|
34
|
+
options[:button_html] = yield if block_given?
|
26
35
|
options = BOOKMARK_BUTTON_DEFAULTS.merge(options)
|
27
|
-
s = %Q{
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
s << %Q{ width="125" height="16" alt="#{options[:alt]}" style="border:0"/></a>}
|
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()">}
|
33
41
|
addthis_tag(s, options)
|
34
42
|
end
|
35
43
|
alias addthis_share_button addthis_bookmark_button
|
36
44
|
|
37
45
|
def addthis_feed_button(url, *args)
|
38
46
|
options = FEED_BUTTON_DEFAULTS.merge(extract_addthis_options(args))
|
39
|
-
|
40
|
-
s
|
41
|
-
|
42
|
-
|
43
|
-
|
47
|
+
options[:button_html] = yield if block_given?
|
48
|
+
s = %Q{
|
49
|
+
<a href="http://www.addthis.com/feed.php?pub=#{options[:publisher]}&h1=#{url}&t1="
|
50
|
+
onclick="return addthis_open(this, 'feed', '#{url}')"
|
51
|
+
title="#{options[:title]}" target="_blank">}
|
44
52
|
addthis_tag(s, options)
|
45
53
|
end
|
46
54
|
|
47
55
|
def addthis_email_button(*args)
|
48
56
|
url, options = extract_addthis_url_and_options(args)
|
57
|
+
options[:button_html] = yield if block_given?
|
49
58
|
options = EMAIL_BUTTON_DEFAULTS.merge(options)
|
50
|
-
s = %Q{
|
51
|
-
|
52
|
-
|
53
|
-
|
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]}">}
|
54
63
|
addthis_tag(s, options)
|
55
64
|
end
|
56
65
|
|
57
66
|
protected
|
58
67
|
def addthis_tag(str, options = {})
|
59
68
|
s = [%Q{<!-- AddThis Button BEGIN -->}]
|
60
|
-
s <<
|
61
|
-
s << str
|
69
|
+
s << addthis_custom_script(options)
|
70
|
+
s << %Q{#{str}#{options[:button_html].gsub(/#\{options\[:alt\]\}/, options[:alt])}</a>}
|
62
71
|
s << %Q{<script type="text/javascript" src="#{options[:script_src]}"></script>}
|
63
72
|
s << %Q{<!-- AddThis Button END -->}
|
64
73
|
s = s * "\n"
|
65
74
|
options[:secure] ? s.gsub(/http:\/\/s[57]\.addthis\.com/, "https://secure.addthis.com") : s
|
66
75
|
end
|
67
76
|
|
77
|
+
def addthis_custom_script(options = {})
|
78
|
+
s = %Q{<script type="text/javascript">
|
79
|
+
var addthis_pub = "#{options[:publisher]}";}
|
80
|
+
[:brand, :header_color, :header_background, :offset_top, :offset_left, :hover_delay].each do |custom|
|
81
|
+
s << %Q{var addthis_#{custom} = #{options[custom].is_a?(Integer) ? options[custom] : %Q("#{options[custom]}")};} unless options[custom].nil?
|
82
|
+
end
|
83
|
+
s << "</script>"
|
84
|
+
end
|
85
|
+
|
68
86
|
def extract_addthis_url_and_options(args, options = {:page_title => "[TITLE]"})
|
69
87
|
url = args[0].is_a?(String) ? args.shift : "[URL]"
|
70
88
|
return url, options = extract_addthis_options(args, options)
|
@@ -74,8 +92,8 @@ module Jaap3
|
|
74
92
|
page_title = args[0].is_a?(String) ? args.shift : options[:page_title]
|
75
93
|
options = args[0].is_a?(Hash) ? args.shift : options
|
76
94
|
options[:page_title] = page_title
|
77
|
-
options = CONFIG.merge(DEFAULT_OPTIONS).merge(options)
|
78
95
|
options.symbolize_keys! if options.respond_to?(:symbolize_keys!)
|
96
|
+
options = CONFIG.merge(DEFAULT_OPTIONS).merge(options)
|
79
97
|
return options
|
80
98
|
end
|
81
99
|
end
|
data/test/addthis_test.rb
CHANGED
@@ -27,6 +27,11 @@ class AddthisTest < Test::Unit::TestCase
|
|
27
27
|
end
|
28
28
|
|
29
29
|
should_set_script_src_to Jaap3::Addthis::DEFAULT_OPTIONS[:script_src]
|
30
|
+
|
31
|
+
[:brand, :header_color, :header_background,
|
32
|
+
:offset_top, :offset_left, :hover_delay].each do |attribute|
|
33
|
+
should_not_customize attribute
|
34
|
+
end
|
30
35
|
|
31
36
|
should "start with an html comment" do
|
32
37
|
assert_equal "<!-- AddThis Button BEGIN -->", @output_lines.first
|
@@ -81,9 +86,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
81
86
|
context "the output of #{m}" do
|
82
87
|
setup { @output = method(m).call("http://example.com") }
|
83
88
|
|
84
|
-
|
85
|
-
assert_match 'var addthis_pub="test_publisher";', @output
|
86
|
-
end
|
89
|
+
should_customize :pub, "test_publisher"
|
87
90
|
end
|
88
91
|
end
|
89
92
|
|
@@ -92,6 +95,22 @@ class AddthisTest < Test::Unit::TestCase
|
|
92
95
|
|
93
96
|
should_set_href_to "http://www.addthis.com/feed.php?pub=test_publisher&h1=http://example.com&t1="
|
94
97
|
end
|
98
|
+
|
99
|
+
context "in turn overwritten by options hash" do
|
100
|
+
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
101
|
+
context "the output of #{m}" do
|
102
|
+
setup { @output = method(m).call("http://example.com", :publisher => "another_publisher") }
|
103
|
+
|
104
|
+
should_customize :pub, "another_publisher"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "a feed button" do
|
109
|
+
setup { @output = addthis_feed_button("http://example.com", :publisher => "another_publisher") }
|
110
|
+
|
111
|
+
should_set_href_to "http://www.addthis.com/feed.php?pub=another_publisher&h1=http://example.com&t1="
|
112
|
+
end
|
113
|
+
end
|
95
114
|
end
|
96
115
|
|
97
116
|
context "with altered script_src" do
|
@@ -99,10 +118,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
99
118
|
|
100
119
|
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
101
120
|
context "the output of #{m}" do
|
102
|
-
setup
|
103
|
-
@output = method(m).call("http://example.com")
|
104
|
-
@output_lines = @output.split("\n")
|
105
|
-
end
|
121
|
+
setup { @output = method(m).call("http://example.com") }
|
106
122
|
|
107
123
|
should_set_script_src_to "http://example.com/example.js"
|
108
124
|
end
|
@@ -111,10 +127,7 @@ class AddthisTest < Test::Unit::TestCase
|
|
111
127
|
context "in turn overwritten by options hash" do
|
112
128
|
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
113
129
|
context "the output of #{m}" do
|
114
|
-
setup
|
115
|
-
@output = method(m).call("http://example.com", :script_src => "http://www.example.com/example.js")
|
116
|
-
@output_lines = @output.split("\n")
|
117
|
-
end
|
130
|
+
setup { @output = method(m).call("http://example.com", :script_src => "http://www.example.com/example.js") }
|
118
131
|
|
119
132
|
should_set_script_src_to "http://www.example.com/example.js"
|
120
133
|
end
|
@@ -122,13 +135,21 @@ class AddthisTest < Test::Unit::TestCase
|
|
122
135
|
end
|
123
136
|
end
|
124
137
|
|
138
|
+
context "when overwriting alt and title" do
|
139
|
+
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
140
|
+
context "the output of #{m}" do
|
141
|
+
setup { @output = method(m).call("http://example.com", :alt => "Example", :title => "Example title") }
|
142
|
+
|
143
|
+
should_set_title_to "Example title"
|
144
|
+
should_set_alt_to "Example"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
125
149
|
context "when setting secure to true" do
|
126
150
|
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
127
151
|
context "by using the options hash the output of #{m}" do
|
128
|
-
setup
|
129
|
-
@output = method(m).call("http://example.com", :secure => true)
|
130
|
-
@output_lines = @output.split("\n")
|
131
|
-
end
|
152
|
+
setup { @output = method(m).call("http://example.com", :secure => true) }
|
132
153
|
|
133
154
|
should_set_script_src_to "https://secure.addthis.com/js/200/addthis_widget.js"
|
134
155
|
end
|
@@ -139,7 +160,6 @@ class AddthisTest < Test::Unit::TestCase
|
|
139
160
|
setup do
|
140
161
|
Jaap3::Addthis::DEFAULT_OPTIONS[:secure] = true
|
141
162
|
@output = method(m).call("http://example.com")
|
142
|
-
@output_lines = @output.split("\n")
|
143
163
|
end
|
144
164
|
|
145
165
|
should_set_script_src_to "https://secure.addthis.com/js/200/addthis_widget.js"
|
@@ -147,4 +167,75 @@ class AddthisTest < Test::Unit::TestCase
|
|
147
167
|
end
|
148
168
|
end
|
149
169
|
|
170
|
+
context "with a block" do
|
171
|
+
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
172
|
+
context "the output of #{m}" do
|
173
|
+
setup do
|
174
|
+
@output = method(m).call("http://example.com") do
|
175
|
+
"Click here to AddThis"
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
should "contain the custom text" do
|
180
|
+
assert_match(/<a[^>]+>Click here to AddThis<\/a>/, @output)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
context "with changed default html" do
|
187
|
+
setup do
|
188
|
+
Jaap3::Addthis::BOOKMARK_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
189
|
+
Jaap3::Addthis::FEED_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
190
|
+
Jaap3::Addthis::EMAIL_BUTTON_DEFAULTS[:button_html] = "Click here to AddThis"
|
191
|
+
end
|
192
|
+
|
193
|
+
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
194
|
+
context "the output of #{m}" do
|
195
|
+
setup { @output = method(m).call("http://example.com") }
|
196
|
+
|
197
|
+
should "contain the custom text" do
|
198
|
+
assert_match(/<a[^>]+>Click here to AddThis<\/a>/, @output)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
context "tricked out with options" do
|
205
|
+
options = {
|
206
|
+
:brand => "Example brand",
|
207
|
+
:header_color => "white",
|
208
|
+
:header_background => "black",
|
209
|
+
:offset_top => 40,
|
210
|
+
:offset_left => 60,
|
211
|
+
:hover_delay => 200
|
212
|
+
}
|
213
|
+
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
214
|
+
context "the output of #{m}" do
|
215
|
+
setup do
|
216
|
+
@output = method(m).call("http://example.com", options)
|
217
|
+
end
|
218
|
+
|
219
|
+
options.each_pair do |attribute, value|
|
220
|
+
should_customize attribute, value
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
[:addthis_bookmark_button, :addthis_feed_button, :addthis_email_button].each do |m|
|
226
|
+
context "by changing the defaults the output of #{m}" do
|
227
|
+
setup do
|
228
|
+
options.each_pair do |attribute, value|
|
229
|
+
Jaap3::Addthis::DEFAULT_OPTIONS[attribute] = value
|
230
|
+
end
|
231
|
+
@output = method(m).call("http://example.com", options)
|
232
|
+
end
|
233
|
+
|
234
|
+
options.each_pair do |attribute, value|
|
235
|
+
should_customize attribute, value
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
150
241
|
end
|
data/test/test_helper.rb
CHANGED
@@ -26,6 +26,18 @@ class Test::Unit::TestCase
|
|
26
26
|
should_set_src_to expected
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
def should_not_customize(attribute)
|
31
|
+
should "not set addthis_#{attribute}" do
|
32
|
+
assert_no_match(/var addthis_#{attribute} = "[\"]+";/, @output)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def should_customize(attribute, value)
|
37
|
+
should "set addthis_#{attribute} to '#{value}" do
|
38
|
+
assert_match(/var addthis_#{attribute} = ["]?#{value}["]?;/, @output)
|
39
|
+
end
|
40
|
+
end
|
29
41
|
end
|
30
42
|
|
31
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jaap3-addthis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaap Roes
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-24 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -55,7 +55,7 @@ requirements: []
|
|
55
55
|
rubyforge_project:
|
56
56
|
rubygems_version: 1.2.0
|
57
57
|
signing_key:
|
58
|
-
specification_version:
|
58
|
+
specification_version: 3
|
59
59
|
summary: TODO
|
60
60
|
test_files:
|
61
61
|
- test/test_helper.rb
|