sharing_tags 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +94 -0
- data/.travis.yml +1 -0
- data/Gemfile +2 -1
- data/Guardfile +21 -11
- data/README.md +8 -1
- data/Rakefile +16 -0
- data/Todo.md +4 -1
- data/app/assets/images/sharing_tags/icons/line.svg +9 -9
- data/app/assets/javascripts/sharing_tags.js +10 -0
- data/app/assets/javascripts/sharing_tags/init.js.coffee.erb +5 -4
- data/app/assets/javascripts/sharing_tags/links.js.coffee +9 -7
- data/app/assets/javascripts/sharing_tags/share.js.coffee +82 -62
- data/app/assets/javascripts/sharing_tags/share/callback.js.coffee +14 -0
- data/app/assets/javascripts/sharing_tags/share/facebook.js.coffee +82 -0
- data/app/assets/stylesheets/sharing_tags/wave_animation.css.sass +33 -0
- data/app/views/sharing_tags/meta/_open_graphs.html.slim +1 -1
- data/app/views/sharing_tags/meta/_twitter_card.html.slim +12 -9
- data/circle.yml +9 -0
- data/lib/generators/sharing_tags/install/install_generator.rb +12 -14
- data/lib/generators/sharing_tags/install/templates/initializer.rb +3 -0
- data/lib/sharing_tags.rb +0 -5
- data/lib/sharing_tags/action_controller/filters.rb +13 -10
- data/lib/sharing_tags/action_controller/helpers.rb +11 -9
- data/lib/sharing_tags/action_view/asset_helper.rb +39 -35
- data/lib/sharing_tags/action_view/button_helper.rb +62 -53
- data/lib/sharing_tags/action_view/meta_helper.rb +11 -8
- data/lib/sharing_tags/config.rb +3 -4
- data/lib/sharing_tags/configuration.rb +17 -18
- data/lib/sharing_tags/context.rb +11 -14
- data/lib/sharing_tags/engine.rb +11 -0
- data/lib/sharing_tags/network.rb +64 -30
- data/lib/sharing_tags/network/facebook.rb +11 -8
- data/lib/sharing_tags/railtie.rb +6 -9
- data/lib/sharing_tags/version.rb +1 -1
- data/sharing_tags.gemspec +1 -0
- data/spec/controllers/main_controller_spec.rb +2 -2
- data/spec/dummy/app/helpers/application_helper.rb +1 -0
- data/spec/generators/install_generator_spec.rb +8 -6
- data/spec/helpers/asset_helper_spec.rb +3 -2
- data/spec/helpers/button_helper_spec.rb +70 -76
- data/spec/helpers/meta_tags_helper_spec.rb +1 -2
- data/spec/javascripts/fixtures/facebook.json +3 -1
- data/spec/javascripts/sharing_tags/share/{facebook_share_spec.coffee → facebook_spec.coffee} +73 -12
- data/spec/javascripts/sharing_tags/share/vkontakte_spec.coffee +29 -0
- data/spec/javascripts/sharing_tags/share_spec.coffee +193 -0
- data/spec/javascripts/sharing_tags/sharing_tags_spec.coffee +9 -14
- data/spec/models/configuration_spec.rb +12 -14
- data/spec/models/network_spec.rb +1 -4
- data/spec/models/running_in_context_spec.rb +19 -6
- data/spec/spec_helper.rb +1 -2
- data/spec/support/generator_support.rb +1 -3
- data/spec/teaspoon_env.rb +39 -39
- data/spec/views/meta_tags/facebook_meta_tags_erb_spec.rb +16 -17
- data/spec/views/meta_tags/meta_tags_erb_spec.rb +5 -7
- metadata +29 -13
- data/app/assets/javascripts/sharing_tags.js.coffee +0 -9
- data/app/assets/javascripts/sharing_tags/share/base.js.coffee +0 -38
- data/app/assets/javascripts/sharing_tags/share/facebook.coffee +0 -57
- data/app/assets/javascripts/sharing_tags/share/vkontakte.js.coffee +0 -13
- data/bin/rspec +0 -16
- data/spec/javascripts/sharing_tags/share/vkontakte_share_spec.coffee +0 -31
data/spec/teaspoon_env.rb
CHANGED
@@ -22,7 +22,7 @@ Teaspoon.configure do |config|
|
|
22
22
|
|
23
23
|
# Fixtures are rendered through a controller, which allows using HAML, RABL/JBuilder, etc. Files in these paths will
|
24
24
|
# be rendered as fixtures.
|
25
|
-
#config.fixture_paths = ["spec/javascripts/fixtures"]
|
25
|
+
# config.fixture_paths = ["spec/javascripts/fixtures"]
|
26
26
|
|
27
27
|
# SUITES
|
28
28
|
#
|
@@ -47,52 +47,52 @@ Teaspoon.configure do |config|
|
|
47
47
|
|
48
48
|
# Specify a file matcher as a regular expression and all matching files will be loaded when the suite is run. These
|
49
49
|
# files need to be within an asset path. You can add asset paths using the `config.asset_paths`.
|
50
|
-
#suite.matcher = "{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}"
|
50
|
+
# suite.matcher = "{spec/javascripts,app/assets}/**/*_spec.{js,js.coffee,coffee}"
|
51
51
|
|
52
52
|
# This suites spec helper, which can require additional support files. This file is loaded before any of your test
|
53
53
|
# files are loaded.
|
54
|
-
#suite.helper = "spec_helper"
|
54
|
+
# suite.helper = "spec_helper"
|
55
55
|
|
56
56
|
# The core Teaspoon javascripts. It's recommended to include only the base files here, as you can require support
|
57
57
|
# libraries from your spec helper.
|
58
58
|
# Note: For CoffeeScript files use `"teaspoon/jasmine"` etc.
|
59
59
|
#
|
60
60
|
# Available: teaspoon-jasmine, teaspoon-mocha, teaspoon-qunit
|
61
|
-
#suite.javascripts = ["jasmine/1.3.1", "teaspoon-jasmine"]
|
61
|
+
# suite.javascripts = ["jasmine/1.3.1", "teaspoon-jasmine"]
|
62
62
|
|
63
63
|
# You can include your own stylesheets if you want to change how Teaspoon looks.
|
64
64
|
# Note: Spec related CSS can and should be loaded using fixtures.
|
65
|
-
#suite.stylesheets = ["teaspoon"]
|
65
|
+
# suite.stylesheets = ["teaspoon"]
|
66
66
|
|
67
67
|
# Partial to be rendered in the head tag of the runner. You can use the provided ones or define your own by creating
|
68
68
|
# a `_boot.html.erb` in your fixtures path, and adjust the config to `"/boot"` for instance.
|
69
69
|
#
|
70
70
|
# Available: boot, boot_require_js
|
71
|
-
#suite.boot_partial = "boot"
|
71
|
+
# suite.boot_partial = "boot"
|
72
72
|
|
73
73
|
# Partial to be rendered in the body tag of the runner. You can define your own to create a custom body structure.
|
74
|
-
#suite.body_partial = "body"
|
74
|
+
# suite.body_partial = "body"
|
75
75
|
|
76
76
|
# Assets to be ignored when generating coverage reports. Accepts an array of filenames or regular expressions. The
|
77
77
|
# default excludes assets from vendor, gems and support libraries.<br/><br/>
|
78
|
-
#suite.no_coverage = [%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/}, %r{/(.+)_helper.}]
|
78
|
+
# suite.no_coverage = [%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/}, %r{/(.+)_helper.}]
|
79
79
|
|
80
80
|
# Hooks allow you to use `Teaspoon.hook("fixtures")` before, after, or during your spec run. This will make a
|
81
81
|
# synchronous Ajax request to the server that will call all of the blocks you've defined for that hook name.
|
82
|
-
#suite.hook :fixtures, proc{ }
|
82
|
+
# suite.hook :fixtures, proc{ }
|
83
83
|
|
84
84
|
# Determine whether specs loaded into the test harness should be embedded as individual script tags or concatenated
|
85
85
|
# into a single file. Similar to Rails' asset `debug: true` and `config.assets.debug = true` options. By default,
|
86
86
|
# Teaspoon expands all assets to provide more valuable stack traces that reference individual source files.
|
87
|
-
#suite.expand_assets = false
|
87
|
+
# suite.expand_assets = false
|
88
88
|
|
89
89
|
end
|
90
90
|
|
91
91
|
# Example suite. Since we're just filtering to files already within the root test/javascripts, these files will also
|
92
92
|
# be run in the default suite -- but can be focused into a more specific suite.
|
93
|
-
#config.suite :targeted do |suite|
|
94
|
-
#
|
95
|
-
#end
|
93
|
+
# config.suite :targeted do |suite|
|
94
|
+
# suite.matcher = "test/javascripts/targeted/*_test.{js,js.coffee,coffee}"
|
95
|
+
# end
|
96
96
|
|
97
97
|
# CONSOLE RUNNER SPECIFIC
|
98
98
|
#
|
@@ -111,44 +111,44 @@ Teaspoon.configure do |config|
|
|
111
111
|
# Available: phantomjs, selenium
|
112
112
|
# PhantomJS: https://github.com/modeset/teaspoon/wiki/Using-PhantomJS
|
113
113
|
# Selenium Webdriver: https://github.com/modeset/teaspoon/wiki/Using-Selenium-WebDriver
|
114
|
-
#config.driver = "phantomjs"
|
114
|
+
# config.driver = "phantomjs"
|
115
115
|
|
116
116
|
# Specify additional options for the driver.
|
117
117
|
#
|
118
118
|
# PhantomJS: https://github.com/modeset/teaspoon/wiki/Using-PhantomJS
|
119
119
|
# Selenium Webdriver: https://github.com/modeset/teaspoon/wiki/Using-Selenium-WebDriver
|
120
|
-
#config.driver_options = nil
|
120
|
+
# config.driver_options = nil
|
121
121
|
|
122
122
|
# Specify the timeout for the driver. Specs are expected to complete within this time frame or the run will be
|
123
123
|
# considered a failure. This is to avoid issues that can arise where tests stall.
|
124
|
-
#config.driver_timeout = 180
|
124
|
+
# config.driver_timeout = 180
|
125
125
|
|
126
126
|
# Specify a server to use with Rack (e.g. thin, mongrel). If nil is provided Rack::Server is used.
|
127
|
-
#config.server = nil
|
127
|
+
# config.server = nil
|
128
128
|
|
129
129
|
# Specify a port to run on a specific port, otherwise Teaspoon will use a random available port.
|
130
|
-
#config.server_port = nil
|
130
|
+
# config.server_port = nil
|
131
131
|
|
132
132
|
# Timeout for starting the server in seconds. If your server is slow to start you may have to bump this, or you may
|
133
133
|
# want to lower this if you know it shouldn't take long to start.
|
134
|
-
#config.server_timeout = 20
|
134
|
+
# config.server_timeout = 20
|
135
135
|
|
136
136
|
# Force Teaspoon to fail immediately after a failing suite. Can be useful to make Teaspoon fail early if you have
|
137
137
|
# several suites, but in environments like CI this may not be desirable.
|
138
|
-
#config.fail_fast = true
|
138
|
+
# config.fail_fast = true
|
139
139
|
|
140
140
|
# Specify the formatters to use when outputting the results.
|
141
141
|
# Note: Output files can be specified by using `"junit>/path/to/output.xml"`.
|
142
142
|
#
|
143
143
|
# Available: clean, documentation, dot, json, junit, pride, rspec_html, snowday, swayze_or_oprah, tap, tap_y, teamcity
|
144
|
-
#config.formatters = ["dot"]
|
144
|
+
# config.formatters = ["dot"]
|
145
145
|
|
146
146
|
# Specify if you want color output from the formatters.
|
147
|
-
#config.color = true
|
147
|
+
# config.color = true
|
148
148
|
|
149
149
|
# Teaspoon pipes all console[log/debug/error] to $stdout. This is useful to catch places where you've forgotten to
|
150
150
|
# remove them, but in verbose applications this may not be desirable.
|
151
|
-
#config.suppress_log = false
|
151
|
+
# config.suppress_log = false
|
152
152
|
|
153
153
|
# COVERAGE REPORTS / THRESHOLD ASSERTIONS
|
154
154
|
#
|
@@ -163,26 +163,26 @@ Teaspoon.configure do |config|
|
|
163
163
|
# - with the cli: teaspoon --coverage=[coverage_name]
|
164
164
|
|
165
165
|
# Specify that you always want a coverage configuration to be used.
|
166
|
-
#config.use_coverage = nil
|
166
|
+
# config.use_coverage = nil
|
167
167
|
|
168
|
-
config.coverage do |coverage|
|
168
|
+
# config.coverage do |coverage|
|
169
169
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
170
|
+
# # Which coverage reports Istanbul should generate. Correlates directly to what Istanbul supports.
|
171
|
+
# #
|
172
|
+
# # Available: text-summary, text, html, lcov, lcovonly, cobertura, teamcity
|
173
|
+
# # coverage.reports = ["text-summary", "html"]
|
174
174
|
|
175
|
-
|
176
|
-
|
177
|
-
|
175
|
+
# # The path that the coverage should be written to - when there's an artifact to write to disk.
|
176
|
+
# # Note: Relative to `config.root`.
|
177
|
+
# # coverage.output_path = "coverage"
|
178
178
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
179
|
+
# # Various thresholds requirements can be defined, and those thresholds will be checked at the end of a run. If any
|
180
|
+
# # aren't met the run will fail with a message. Thresholds can be defined as a percentage (0-100), or nil.
|
181
|
+
# # coverage.statements = nil
|
182
|
+
# # coverage.functions = nil
|
183
|
+
# # coverage.branches = nil
|
184
|
+
# # coverage.lines = nil
|
185
185
|
|
186
|
-
end
|
186
|
+
# end
|
187
187
|
|
188
188
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
RSpec.describe "sharing_tags/meta_tags", :
|
2
|
+
RSpec.describe "sharing_tags/meta_tags", type: :view do
|
3
3
|
|
4
4
|
context "constant params" do
|
5
5
|
before do
|
@@ -20,14 +20,14 @@ RSpec.describe "sharing_tags/meta_tags", :type => :view do
|
|
20
20
|
|
21
21
|
it "render image size tags" do
|
22
22
|
render
|
23
|
-
expect(rendered).to have_tag "meta", with: {property: "og:title",
|
24
|
-
expect(rendered).to have_tag "meta", with: {property: "og:description",
|
25
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image",
|
26
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image:type",
|
27
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image:width",
|
28
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image:height",content: "200"}
|
29
|
-
expect(rendered).to have_tag "meta", with: {property: "og:url",
|
30
|
-
expect(rendered).to have_tag "meta", with: {property: "fb:app_id",
|
23
|
+
expect(rendered).to have_tag "meta", with: {property: "og:title", content: "Facebook title"}
|
24
|
+
expect(rendered).to have_tag "meta", with: {property: "og:description", content: "Facebook description"}
|
25
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image", content: "http://img.jpg"}
|
26
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image:type", content: "image/jpeg"}
|
27
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image:width", content: "100"}
|
28
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image:height", content: "200"}
|
29
|
+
expect(rendered).to have_tag "meta", with: {property: "og:url", content: "http://a.b"}
|
30
|
+
expect(rendered).to have_tag "meta", with: {property: "fb:app_id", content: "12345"}
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -49,14 +49,13 @@ RSpec.describe "sharing_tags/meta_tags", :type => :view do
|
|
49
49
|
|
50
50
|
it "render image size tags" do
|
51
51
|
render
|
52
|
-
expect(rendered).to have_tag "meta", with: {property: "og:title",
|
53
|
-
expect(rendered).to have_tag "meta", with: {property: "og:description",
|
54
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image",
|
55
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image:type",
|
56
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image:width",
|
57
|
-
expect(rendered).to have_tag "meta", with: {property: "og:image:height",content: "200"}
|
58
|
-
expect(rendered).to have_tag "meta", with: {property: "og:url",
|
52
|
+
expect(rendered).to have_tag "meta", with: {property: "og:title", content: "Facebook title"}
|
53
|
+
expect(rendered).to have_tag "meta", with: {property: "og:description", content: "Facebook description"}
|
54
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image", content: "http://img.jpg"}
|
55
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image:type", content: "image/jpeg"}
|
56
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image:width", content: "100"}
|
57
|
+
expect(rendered).to have_tag "meta", with: {property: "og:image:height", content: "200"}
|
58
|
+
expect(rendered).to have_tag "meta", with: {property: "og:url", content: "http://a.b"}
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
62
61
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
RSpec.describe "sharing_tags/meta_tags", :
|
1
|
+
RSpec.describe "sharing_tags/meta_tags", type: :view do
|
2
2
|
|
3
3
|
before do
|
4
4
|
controller.append_view_path 'app/views'
|
@@ -48,10 +48,10 @@ RSpec.describe "sharing_tags/meta_tags", :type => :view do
|
|
48
48
|
it "render twitter card tags" do
|
49
49
|
render
|
50
50
|
|
51
|
-
expect(rendered).to have_tag "meta", with: {name: "twitter:card",
|
51
|
+
expect(rendered).to have_tag "meta", with: {name: "twitter:card", content: "summary"}
|
52
52
|
# expect(rendered).to have_tag "meta", with: {name: "twitter:site", content: ""}
|
53
|
-
expect(rendered).to have_tag "meta", with: {name: "twitter:title",
|
54
|
-
expect(rendered).to have_tag "meta", with: {name: "twitter:description",content: "Twitter description"}
|
53
|
+
expect(rendered).to have_tag "meta", with: {name: "twitter:title", content: "Twitter title"}
|
54
|
+
expect(rendered).to have_tag "meta", with: {name: "twitter:description", content: "Twitter description"}
|
55
55
|
# expect(rendered).to have_tag "meta", with: {name: "twitter:creator", content: ""}
|
56
56
|
# expect(rendered).to have_tag "meta", with: {name: "twitter:image:src", content: ""}
|
57
57
|
# expect(rendered).to have_tag "meta", with: {name: "twitter:domain", content: ""}
|
@@ -62,6 +62,4 @@ RSpec.describe "sharing_tags/meta_tags", :type => :view do
|
|
62
62
|
render
|
63
63
|
expect(rendered).to_not have_tag('meta')
|
64
64
|
end
|
65
|
-
|
66
|
-
|
67
|
-
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sharing_tags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anatoliy Kovalchuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -262,6 +262,20 @@ dependencies:
|
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0.8'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: guard-rubocop
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: 1.2.0
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 1.2.0
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
280
|
name: sqlite3
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -294,14 +308,14 @@ description: " Describe your sharing information for different contexts in one s
|
|
294
308
|
configuration file. "
|
295
309
|
email:
|
296
310
|
- kr00lix@gmail.com
|
297
|
-
executables:
|
298
|
-
- rspec
|
311
|
+
executables: []
|
299
312
|
extensions: []
|
300
313
|
extra_rdoc_files: []
|
301
314
|
files:
|
302
315
|
- ".coveralls.yml"
|
303
316
|
- ".gitignore"
|
304
317
|
- ".rspec"
|
318
|
+
- ".rubocop.yml"
|
305
319
|
- ".travis.yml"
|
306
320
|
- Gemfile
|
307
321
|
- Guardfile
|
@@ -316,15 +330,15 @@ files:
|
|
316
330
|
- app/assets/images/sharing_tags/icons/odnoklassniki.svg
|
317
331
|
- app/assets/images/sharing_tags/icons/twitter.svg
|
318
332
|
- app/assets/images/sharing_tags/icons/vkontakte.svg
|
319
|
-
- app/assets/javascripts/sharing_tags.js
|
333
|
+
- app/assets/javascripts/sharing_tags.js
|
320
334
|
- app/assets/javascripts/sharing_tags/init.js.coffee.erb
|
321
335
|
- app/assets/javascripts/sharing_tags/links.js.coffee
|
322
336
|
- app/assets/javascripts/sharing_tags/share.js.coffee
|
323
|
-
- app/assets/javascripts/sharing_tags/share/
|
324
|
-
- app/assets/javascripts/sharing_tags/share/facebook.coffee
|
325
|
-
- app/assets/javascripts/sharing_tags/share/vkontakte.js.coffee
|
337
|
+
- app/assets/javascripts/sharing_tags/share/callback.js.coffee
|
338
|
+
- app/assets/javascripts/sharing_tags/share/facebook.js.coffee
|
326
339
|
- app/assets/stylesheets/sharing_tags.css.sass
|
327
340
|
- app/assets/stylesheets/sharing_tags/icons.css.sass
|
341
|
+
- app/assets/stylesheets/sharing_tags/wave_animation.css.sass
|
328
342
|
- app/views/sharing_tags/button/_facebook.html.slim
|
329
343
|
- app/views/sharing_tags/button/_google.html.slim
|
330
344
|
- app/views/sharing_tags/button/_line.html.slim
|
@@ -337,7 +351,7 @@ files:
|
|
337
351
|
- app/views/sharing_tags/meta/_schema_tags.html.slim
|
338
352
|
- app/views/sharing_tags/meta/_twitter_card.html.slim
|
339
353
|
- app/views/sharing_tags/meta_tags.html.slim
|
340
|
-
-
|
354
|
+
- circle.yml
|
341
355
|
- lib/generators/sharing_tags/install/install_generator.rb
|
342
356
|
- lib/generators/sharing_tags/install/templates/POST_INSTALL
|
343
357
|
- lib/generators/sharing_tags/install/templates/initializer.rb
|
@@ -417,8 +431,9 @@ files:
|
|
417
431
|
- spec/helpers/meta_tags_helper_spec.rb
|
418
432
|
- spec/javascripts/fixtures/facebook.json
|
419
433
|
- spec/javascripts/fixtures/vkontakte.json
|
420
|
-
- spec/javascripts/sharing_tags/share/
|
421
|
-
- spec/javascripts/sharing_tags/share/
|
434
|
+
- spec/javascripts/sharing_tags/share/facebook_spec.coffee
|
435
|
+
- spec/javascripts/sharing_tags/share/vkontakte_spec.coffee
|
436
|
+
- spec/javascripts/sharing_tags/share_spec.coffee
|
422
437
|
- spec/javascripts/sharing_tags/sharing_tags_spec.coffee
|
423
438
|
- spec/javascripts/spec_helper.coffee
|
424
439
|
- spec/models/configuration_spec.rb
|
@@ -518,8 +533,9 @@ test_files:
|
|
518
533
|
- spec/helpers/meta_tags_helper_spec.rb
|
519
534
|
- spec/javascripts/fixtures/facebook.json
|
520
535
|
- spec/javascripts/fixtures/vkontakte.json
|
521
|
-
- spec/javascripts/sharing_tags/share/
|
522
|
-
- spec/javascripts/sharing_tags/share/
|
536
|
+
- spec/javascripts/sharing_tags/share/facebook_spec.coffee
|
537
|
+
- spec/javascripts/sharing_tags/share/vkontakte_spec.coffee
|
538
|
+
- spec/javascripts/sharing_tags/share_spec.coffee
|
523
539
|
- spec/javascripts/sharing_tags/sharing_tags_spec.coffee
|
524
540
|
- spec/javascripts/spec_helper.coffee
|
525
541
|
- spec/models/configuration_spec.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
class @SharingTags.BaseShare
|
2
|
-
|
3
|
-
url: null
|
4
|
-
title: null
|
5
|
-
description: null
|
6
|
-
|
7
|
-
constructor: ({@url, @title, @description})->
|
8
|
-
@_assert_vars 'url'
|
9
|
-
|
10
|
-
_open_popup: (api_url, params)->
|
11
|
-
share_url = if params then "#{api_url}?#{$.param(params)}" else api_url
|
12
|
-
share_window = window.open share_url, 'Sharing', 'width=740,height=440'
|
13
|
-
|
14
|
-
clearInterval(@interval)
|
15
|
-
iteration = 0
|
16
|
-
@interval = setInterval((=>
|
17
|
-
iteration++
|
18
|
-
if @_checkSharing(share_url, share_window, iteration)
|
19
|
-
clearInterval @interval
|
20
|
-
jQuery("body").trigger("sharing_tags.shared") if jQuery
|
21
|
-
), 500)
|
22
|
-
|
23
|
-
_checkSharing: (share_url, share_window, iteration)=>
|
24
|
-
# console.log("check desktop sharing", share_url, share_window, iteration)
|
25
|
-
share_window?.closed || iteration >= 15
|
26
|
-
|
27
|
-
_after_callback: =>
|
28
|
-
jQuery?("body").trigger("sharing_tags.shared")
|
29
|
-
|
30
|
-
_assert_vars: (vars...)->
|
31
|
-
for var_name in vars
|
32
|
-
if ! @[var_name]
|
33
|
-
arguments_list = ''
|
34
|
-
arguments_list += " #{var_name}: '#{@[var_name]}'" for arg, val in vars
|
35
|
-
throw new SharingTags.Error("Error could not initialize sharing class, with params: #{arguments_list}")
|
36
|
-
|
37
|
-
_user_agent: ->
|
38
|
-
window.navigator?.userAgent
|
@@ -1,57 +0,0 @@
|
|
1
|
-
class @SharingTags.FacebookShare extends @SharingTags.BaseShare
|
2
|
-
|
3
|
-
# available providers: sharer, fb_ui, dialog
|
4
|
-
@default_provider: "fb_ui"
|
5
|
-
|
6
|
-
app_id: null
|
7
|
-
return_url: null
|
8
|
-
provider: null
|
9
|
-
|
10
|
-
constructor: ({@app_id, @return_url, @provider})->
|
11
|
-
@provider = @detect_provider() if !@provider
|
12
|
-
|
13
|
-
# todo: throw error for invalid provider
|
14
|
-
@constructor.init() if @provider is 'fb_ui' and not FB?
|
15
|
-
|
16
|
-
super
|
17
|
-
|
18
|
-
@init: (locale="en_US")->
|
19
|
-
if not FB?
|
20
|
-
jQuery.ajax(
|
21
|
-
url: "//connect.facebook.net/#{locale}/all.js"
|
22
|
-
dataType: "script"
|
23
|
-
cache: true
|
24
|
-
)
|
25
|
-
|
26
|
-
share: ()->
|
27
|
-
@["_#{@provider}"]()
|
28
|
-
|
29
|
-
_sharer: ->
|
30
|
-
@_assert_vars "url"
|
31
|
-
@_open_popup("http://www.facebook.com/sharer.php", u: @url)
|
32
|
-
|
33
|
-
_fb_ui: =>
|
34
|
-
@_assert_vars "url", "app_id"
|
35
|
-
return @constructor.init().done(@_fb_ui) if not FB?
|
36
|
-
|
37
|
-
FB?.ui(method: 'share', href: @url, app_id: @app_id, (response)=>
|
38
|
-
@_after_callback(response)
|
39
|
-
# if response && !response.error_code
|
40
|
-
# @_after_callback(response)
|
41
|
-
# else
|
42
|
-
# # another callback
|
43
|
-
)
|
44
|
-
|
45
|
-
_dialog: (display = 'page')->
|
46
|
-
@_assert_vars 'url', 'return_url'
|
47
|
-
@_open_popup("http://www.facebook.com/dialog/share", href: @url, redirect_uri: @return_url, app_id: @app_id, display: display)
|
48
|
-
|
49
|
-
|
50
|
-
detect_provider: ->
|
51
|
-
if @_user_agent().match('CriOS')
|
52
|
-
"sharer"
|
53
|
-
else if @app_id
|
54
|
-
if @return_url then "dialog"
|
55
|
-
else "fb_ui"
|
56
|
-
else
|
57
|
-
"sharer"
|