sharing_tags 0.0.9 → 0.0.10
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.
- 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"
|