SocialShareFeature 0.1.3 → 0.1.4
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/CHANGELOG.md +0 -0
- data/LICENSE.txt +21 -0
- data/README.md +128 -0
- data/app/assets/javascripts/jquery.qrcode.min.js +28 -0
- data/app/assets/javascripts/share_button.coffee +106 -0
- data/app/assets/javascripts/share_button/wechat.coffee +44 -0
- data/app/assets/stylesheets/share_button.css.erb +127 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/SocialShareFeature/version.rb +1 -1
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '093940c3b4855d6974af83429a6437bfddc840f7b8b80e91a266cddac9f60428'
|
4
|
+
data.tar.gz: 937ac1e4e70450175cafd51f49eae0dc974c96088a9aa03f49ace930df3290dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebed7b4467710f58ac86eeaccc7e9b1d2f2dbcf45a377a9ccccbfb06c0a5225055fd82d443b45a19e33d2606c1660d444430a4837c43259f57d7156d44dba927
|
7
|
+
data.tar.gz: 6d4fc296025775252f5c4e89df7f35e6d13004b4d2cfe3c7a320db3bdf8394430318da7cfa66dcb7800d877414b038ebd1e5dca0083889d8c4239705ef15fdd2
|
data/CHANGELOG.md
ADDED
File without changes
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2019 Avdhesh
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
# SocialShareFeature
|
2
|
+
|
3
|
+
This is a gem to help you quick create a share feature and social share counts in you Rails application.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'SocialShareFeature'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install SocialShareFeature
|
20
|
+
|
21
|
+
## Configuration
|
22
|
+
|
23
|
+
Add this line to your application's initializers file.
|
24
|
+
```ruby
|
25
|
+
require 'SocialShareFeature'
|
26
|
+
```
|
27
|
+
For Facebook share count we need to initialize the facebook token which we can get from https://developers.facebook.com/ and create your own app
|
28
|
+
and go to https://developers.facebook.com/apps/YOURAPPID/settings/basic/ And copy YOUR App ID and App Secret
|
29
|
+
|
30
|
+
EX: YOURAPPID = "2254794191441963"
|
31
|
+
|
32
|
+
Add this line to initilizers file:
|
33
|
+
```ruby
|
34
|
+
SocialShareFeature.facebook_token_for_count= "Your App ID|Your App Secret"
|
35
|
+
```
|
36
|
+
|
37
|
+
where **This is only Example use your own details**
|
38
|
+
Your App ID = "2254794191441963"
|
39
|
+
Your App Secret = "247c3641f30468d363bf8a827d6e673a"
|
40
|
+
|
41
|
+
If you want multiple socal share links at a same time Then you can use this
|
42
|
+
Define This in initilizers file to set default social platform:
|
43
|
+
```ruby
|
44
|
+
SocialShareFeature.allow_sites_for_share_button = %w(twitter facebook weibo)
|
45
|
+
```
|
46
|
+
|
47
|
+
## Usage
|
48
|
+
|
49
|
+
Get The Count of Social Share
|
50
|
+
```ruby
|
51
|
+
social_count = SocialShareFeature::Count.selected "https://www.google.com/", %w(facebook reddit)
|
52
|
+
```
|
53
|
+
OR you can use like this
|
54
|
+
```ruby
|
55
|
+
SocialShare::Count.facebook "https://www.google.com/"
|
56
|
+
```
|
57
|
+
|
58
|
+
Get The List of Supported Network For Count:
|
59
|
+
```ruby
|
60
|
+
SocialShareFeature::Count.supported_networks
|
61
|
+
=> [:facebook, :google, :reddit, :weibo]
|
62
|
+
```
|
63
|
+
|
64
|
+
## To Use Social Share Button you required
|
65
|
+
|
66
|
+
Get The List of Supported Network For Share Button:
|
67
|
+
```ruby
|
68
|
+
SocialShareFeature::Button.supported_networks
|
69
|
+
=> [:facebook, :google, :linkedin, :pinterest, :reddit, :twitter, :weibo]
|
70
|
+
```
|
71
|
+
|
72
|
+
You need add require js file in your app assets files and add Jquery in your Project:
|
73
|
+
|
74
|
+
app/assets/javascripts/application.js
|
75
|
+
```js
|
76
|
+
//= require share_button
|
77
|
+
// if you need use WeChat
|
78
|
+
//= require share_button/wechat
|
79
|
+
```
|
80
|
+
_OR_
|
81
|
+
|
82
|
+
For app/assets/javascripts/application.coffe
|
83
|
+
```coffe
|
84
|
+
#= require share_button
|
85
|
+
# if you need use WeChat
|
86
|
+
#= require share_button/wechat
|
87
|
+
```
|
88
|
+
|
89
|
+
app/assets/stylesheets/application.css
|
90
|
+
```css
|
91
|
+
*= require share_button
|
92
|
+
```
|
93
|
+
**OR**
|
94
|
+
For app/assets/stylesheets/application.scss
|
95
|
+
In Rails 4.1.6 , use @import to require files:
|
96
|
+
```scss
|
97
|
+
@import "share_button";
|
98
|
+
```
|
99
|
+
|
100
|
+
Add Button With Image to view
|
101
|
+
```ruby
|
102
|
+
<%= social_share_button_tag('',:allow_sites => 'facebook',img: {src: 'http://Default Image Url.com/',class: 'class for default image'}, :url => "https://my shatring url/", :image => "https://my image url.com/", desc: 'The summary of page',class: 'my class to btn') %>
|
103
|
+
```
|
104
|
+
Add a link Without image to view
|
105
|
+
```ruby
|
106
|
+
<%= social_share_button_tag('Facebook',:allow_sites => 'facebook', :url => "https://my shatring url/", :image => "https://my image url.com/", desc: 'The summary of page',class: 'my class to btn') %>
|
107
|
+
```
|
108
|
+
|
109
|
+
Add Link to the view for default social media platform defined in your initilizer.
|
110
|
+
```ruby
|
111
|
+
<%= social_share_button_tag('',:url => "https://my shatring url/", :image => "https://my image url.com/", desc: 'The summary of page',class: 'my class to btn') %>
|
112
|
+
```
|
113
|
+
|
114
|
+
## Gem Link
|
115
|
+
|
116
|
+
Ruby Gems: [rubygems.org](https://rubygems.org/gems/SocialShareFeature).
|
117
|
+
|
118
|
+
## Contributing
|
119
|
+
|
120
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/Avdhesh51000/SocialShareFeature. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
121
|
+
|
122
|
+
## License
|
123
|
+
|
124
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
125
|
+
|
126
|
+
## Code of Conduct
|
127
|
+
|
128
|
+
Everyone interacting in the SocialShareFeature project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/SocialShareFeature/blob/master/CODE_OF_CONDUCT.md).
|
@@ -0,0 +1,28 @@
|
|
1
|
+
(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
|
2
|
+
write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
|
3
|
+
for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
|
4
|
+
7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
|
5
|
+
0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
|
6
|
+
setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
|
7
|
+
j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
|
8
|
+
b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
|
9
|
+
c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
|
10
|
+
0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
|
11
|
+
(d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
|
12
|
+
78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
|
13
|
+
j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
|
14
|
+
a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
|
15
|
+
a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
|
16
|
+
2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
|
17
|
+
LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
|
18
|
+
this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
|
19
|
+
[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
|
20
|
+
116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
|
21
|
+
43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
|
22
|
+
3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
|
23
|
+
55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
|
24
|
+
45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
|
25
|
+
(a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
|
26
|
+
correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
|
27
|
+
j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
|
28
|
+
d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;jQuery(a).appendTo(this)})}})(jQuery);
|
@@ -0,0 +1,106 @@
|
|
1
|
+
window.ShareButton =
|
2
|
+
openUrl : (url, width = 640, height = 480) ->
|
3
|
+
left = (screen.width / 2) - (width / 2)
|
4
|
+
top = (screen.height * 0.3) - (height / 2)
|
5
|
+
opt = "width=#{width},height=#{height},left=#{left},top=#{top},menubar=no,status=no,location=no"
|
6
|
+
window.open(url, 'popup', opt)
|
7
|
+
false
|
8
|
+
|
9
|
+
share : (el) ->
|
10
|
+
site = $(el).data('site')
|
11
|
+
appkey = $(el).data('appkey') || ''
|
12
|
+
$parent = $(el).parent()
|
13
|
+
title = encodeURIComponent($(el).data(site + '-title') || $parent.data('title') || '')
|
14
|
+
img = encodeURIComponent($parent.data("img") || '')
|
15
|
+
url = encodeURIComponent($parent.data("url") || '')
|
16
|
+
via = encodeURIComponent($parent.data("via") || '')
|
17
|
+
desc = encodeURIComponent($parent.data("desc") || ' ')
|
18
|
+
|
19
|
+
# tracking click events if google analytics enabled
|
20
|
+
ga = window[window['GoogleAnalyticsObject'] || 'ga']
|
21
|
+
if typeof ga == 'function'
|
22
|
+
ga('send', 'event', 'Social Share Button', 'click', site)
|
23
|
+
|
24
|
+
if url.length == 0
|
25
|
+
url = encodeURIComponent(location.href)
|
26
|
+
switch site
|
27
|
+
when "email"
|
28
|
+
location.href = "mailto:?to=&subject=#{title}&body=#{url}"
|
29
|
+
when "weibo"
|
30
|
+
ShareButton.openUrl("http://service.weibo.com/share/share.php?url=#{url}&type=3&pic=#{img}&title=#{title}&appkey=#{appkey}", 620, 370)
|
31
|
+
when "twitter"
|
32
|
+
hashtags = encodeURIComponent($(el).data(site + '-hashtags') || $parent.data('hashtags') || '')
|
33
|
+
via_str = ''
|
34
|
+
via_str = "&via=#{via}" if via.length > 0
|
35
|
+
ShareButton.openUrl("https://twitter.com/intent/tweet?url=#{url}&text=#{title}&hashtags=#{hashtags}#{via_str}", 650, 300)
|
36
|
+
when "douban"
|
37
|
+
ShareButton.openUrl("http://shuo.douban.com/!service/share?href=#{url}&name=#{title}&image=#{img}&sel=#{desc}", 770, 470)
|
38
|
+
when "facebook"
|
39
|
+
ShareButton.openUrl("http://www.facebook.com/sharer/sharer.php?u=#{url}&display=popup"e=#{desc}", 555, 400)
|
40
|
+
when "qq"
|
41
|
+
ShareButton.openUrl("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=#{url}&title=#{title}&pics=#{img}&summary=#{desc}&site=#{appkey}")
|
42
|
+
when "google_plus"
|
43
|
+
ShareButton.openUrl("https://plus.google.com/share?url=#{url}")
|
44
|
+
when "google_bookmark"
|
45
|
+
ShareButton.openUrl("https://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=#{url}&title=#{title}")
|
46
|
+
when "delicious"
|
47
|
+
ShareButton.openUrl("https://del.icio.us/save?url=#{url}&title=#{title}&jump=yes&pic=#{img}")
|
48
|
+
when "pinterest"
|
49
|
+
ShareButton.openUrl("http://www.pinterest.com/pin/create/button/?url=#{url}&media=#{img}&description=#{title}")
|
50
|
+
when "linkedin"
|
51
|
+
ShareButton.openUrl("https://www.linkedin.com/shareArticle?mini=true&url=#{url}&title=#{title}&summary=#{desc}")
|
52
|
+
when "xing"
|
53
|
+
ShareButton.openUrl("https://www.xing.com/spi/shares/new?url=#{url}")
|
54
|
+
when "vkontakte"
|
55
|
+
ShareButton.openUrl("http://vk.com/share.php?url=#{url}&title=#{title}&image=#{img}")
|
56
|
+
when "odnoklassniki"
|
57
|
+
ShareButton.openUrl("https://connect.ok.ru/offer?url=#{url}&title=#{title}&description=#{desc}&imageUrl=#{img}")
|
58
|
+
when "wechat"
|
59
|
+
throw new Error("You should require social-share-button/wechat to your application.js") unless window.SocialShareWeChatButton
|
60
|
+
window.SocialShareWeChatButton.qrcode
|
61
|
+
url: decodeURIComponent(url)
|
62
|
+
header: $(el).attr('title')
|
63
|
+
footer: $(el).data('wechat-footer')
|
64
|
+
|
65
|
+
when "tumblr"
|
66
|
+
get_tumblr_extra = (param) ->
|
67
|
+
cutom_data = $(el).attr("data-#{param}")
|
68
|
+
encodeURIComponent(cutom_data) if cutom_data
|
69
|
+
|
70
|
+
tumblr_params = ->
|
71
|
+
path = get_tumblr_extra('type') || 'link'
|
72
|
+
|
73
|
+
params = switch path
|
74
|
+
when 'text'
|
75
|
+
title = get_tumblr_extra('title') || title
|
76
|
+
"title=#{title}"
|
77
|
+
when 'photo'
|
78
|
+
title = get_tumblr_extra('caption') || title
|
79
|
+
source = get_tumblr_extra('source') || img
|
80
|
+
"caption=#{title}&source=#{source}"
|
81
|
+
when 'quote'
|
82
|
+
quote = get_tumblr_extra('quote') || title
|
83
|
+
source = get_tumblr_extra('source') || ''
|
84
|
+
"quote=#{quote}&source=#{source}"
|
85
|
+
else # actually, it's a link clause
|
86
|
+
title = get_tumblr_extra('title') || title
|
87
|
+
url = get_tumblr_extra('url') || url
|
88
|
+
"name=#{title}&url=#{url}"
|
89
|
+
|
90
|
+
|
91
|
+
"/#{path}?#{params}"
|
92
|
+
|
93
|
+
ShareButton.openUrl("http://www.tumblr.com/share#{tumblr_params()}")
|
94
|
+
|
95
|
+
when "reddit"
|
96
|
+
ShareButton.openUrl("http://www.reddit.com/submit?url=#{url}&newwindow=1", 555, 400)
|
97
|
+
when "hacker_news"
|
98
|
+
ShareButton.openUrl("http://news.ycombinator.com/submitlink?u=#{url}&t=#{title}", 770, 500)
|
99
|
+
when "telegram"
|
100
|
+
ShareButton.openUrl("https://telegram.me/share/url?text=#{title}&url=#{url}")
|
101
|
+
when "whatsapp_app"
|
102
|
+
whatsapp_app_url = "whatsapp://send?text=#{title}&url=#{url}"
|
103
|
+
window.open(whatsapp_app_url, '_top')
|
104
|
+
when "whatsapp_web"
|
105
|
+
ShareButton.openUrl("https://web.whatsapp.com/send?text=#{title}&url=#{url}")
|
106
|
+
false
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#= require jquery.qrcode.min
|
2
|
+
|
3
|
+
window.SocialShareWeChatButton =
|
4
|
+
init: (opts={}) ->
|
5
|
+
$wDialog = "<div id='ss-wechat-dialog' class='ss-wechat-dialog'>
|
6
|
+
<div class='wechat-popup-header'>
|
7
|
+
<span>#{opts.header}</span>
|
8
|
+
<a href='#' onclick='return false;' class='wechat-popup-close'>×</a>
|
9
|
+
</div>
|
10
|
+
<div id='ss-wechat-dialog-qr' class='wechat-dialog-qr'></div>
|
11
|
+
<div class='wechat-popup-footer'>
|
12
|
+
#{opts.footer}
|
13
|
+
</div>
|
14
|
+
</div>"
|
15
|
+
|
16
|
+
$("body").append($wDialog)
|
17
|
+
|
18
|
+
bindEvents: ()->
|
19
|
+
$wContainer = $("#ss-wechat-dialog")
|
20
|
+
$wContainer.find(".wechat-popup-close").on "click", (e) ->
|
21
|
+
$wContainer.hide()
|
22
|
+
|
23
|
+
qrcode: (opts={}) ->
|
24
|
+
unless $("#ss-wechat-dialog").length
|
25
|
+
@init(opts)
|
26
|
+
@bindEvents()
|
27
|
+
|
28
|
+
$wBody = $('#ss-wechat-dialog-qr')
|
29
|
+
$wBody.empty()
|
30
|
+
$wBody.qrcode
|
31
|
+
width: 200
|
32
|
+
height: 200
|
33
|
+
text: opts.url
|
34
|
+
|
35
|
+
$wContainer = $("#ss-wechat-dialog")
|
36
|
+
top = ($(window).height() - $wContainer.height()) / 2
|
37
|
+
top = 100 if top < 100
|
38
|
+
left = ($(window).width() - $wContainer.width()) / 2
|
39
|
+
|
40
|
+
$wContainer.css
|
41
|
+
top: top
|
42
|
+
left: left
|
43
|
+
|
44
|
+
$wContainer.show()
|
@@ -0,0 +1,127 @@
|
|
1
|
+
.share-button .ssb-icon {
|
2
|
+
background-position: center center;
|
3
|
+
background-repeat: no-repeat;
|
4
|
+
background-size: 18px 18px;
|
5
|
+
display: inline-block;
|
6
|
+
height: 18px;
|
7
|
+
width: 18px;
|
8
|
+
}
|
9
|
+
|
10
|
+
.share-button .ssb-twitter {
|
11
|
+
/*background-image: url(<%#= asset_path('share-button/twitter.svg') %>);*/
|
12
|
+
}
|
13
|
+
|
14
|
+
.share-button .ssb-facebook {
|
15
|
+
/*background-image: url(<%#= asset_path('share-button/facebook.svg') %>);*/
|
16
|
+
}
|
17
|
+
|
18
|
+
.share-button .ssb-google_bookmark {
|
19
|
+
/*background-image: url(<%#= asset_path('share-button/google_bookmark.svg') %>);*/
|
20
|
+
}
|
21
|
+
|
22
|
+
.share-button .ssb-google_plus {
|
23
|
+
/*background-image: url(<%#= asset_path('share-button/google_plus.svg') %>);*/
|
24
|
+
}
|
25
|
+
|
26
|
+
.share-button .ssb-weibo {
|
27
|
+
/*background-image: url(<%#= asset_path('share-button/weibo.svg') %>);*/
|
28
|
+
}
|
29
|
+
|
30
|
+
.share-button .ssb-qq {
|
31
|
+
/*background-image: url(<%#= asset_path('share-button/qq.svg') %>);*/
|
32
|
+
}
|
33
|
+
|
34
|
+
.share-button .ssb-delicious {
|
35
|
+
/*background-image: url(<%#= asset_path('share-button/delicious.svg') %>);*/
|
36
|
+
}
|
37
|
+
|
38
|
+
.share-button .ssb-linkedin {
|
39
|
+
/*background-image: url(<%#= asset_path('share-button/linkedin.svg') %>);*/
|
40
|
+
}
|
41
|
+
|
42
|
+
.share-button .ssb-tumblr {
|
43
|
+
/*background-image: url(<%#= asset_path('share-button/tumblr.svg') %>);*/
|
44
|
+
}
|
45
|
+
|
46
|
+
.share-button .ssb-pinterest {
|
47
|
+
/*background-image: url(<%#= asset_path('share-button/pinterest.svg') %>);*/
|
48
|
+
}
|
49
|
+
|
50
|
+
.share-button .ssb-douban {
|
51
|
+
/*background-image: url(<%#= asset_path('share-button/douban.svg') %>);*/
|
52
|
+
}
|
53
|
+
|
54
|
+
.share-button .ssb-wechat {
|
55
|
+
/*background-image: url(<%#= asset_path('share-button/wechat.svg') %>);*/
|
56
|
+
}
|
57
|
+
|
58
|
+
.share-button .ssb-vkontakte {
|
59
|
+
/*background-image: url(<%#= asset_path('share-button/vkontakte.svg') %>);*/
|
60
|
+
}
|
61
|
+
|
62
|
+
.share-button .ssb-odnoklassniki {
|
63
|
+
/*background-image: url(<%#= asset_path('share-button/odnoklassniki.svg') %>);*/
|
64
|
+
}
|
65
|
+
|
66
|
+
.share-button .ssb-xing {
|
67
|
+
/*background-image: url(<%#= asset_path('share-button/xing.svg') %>);*/
|
68
|
+
}
|
69
|
+
|
70
|
+
.share-button .ssb-email {
|
71
|
+
/*background-image: url(<%#= asset_path('share-button/email.svg') %>);*/
|
72
|
+
}
|
73
|
+
|
74
|
+
.share-button .ssb-reddit {
|
75
|
+
/*background-image: url(<%#= asset_path('share-button/reddit.svg') %>);*/
|
76
|
+
}
|
77
|
+
|
78
|
+
.share-button .ssb-hacker_news {
|
79
|
+
/*background-image: url(<%#= asset_path('share-button/hacker_news.svg') %>);*/
|
80
|
+
}
|
81
|
+
|
82
|
+
.share-button .ssb-telegram {
|
83
|
+
/*background-image: url(<%#= asset_path('share-button/telegram.svg') %>);*/
|
84
|
+
}
|
85
|
+
|
86
|
+
.share-button .ssb-whatsapp_app,
|
87
|
+
.share-button .ssb-whatsapp_web {
|
88
|
+
/*background-image: url(<%#= asset_path('share-button/whatsapp.svg') %>);*/
|
89
|
+
}
|
90
|
+
|
91
|
+
.ss-wechat-dialog {
|
92
|
+
width: 300px;
|
93
|
+
position: fixed;
|
94
|
+
background: #fff;
|
95
|
+
padding: 15px;
|
96
|
+
border-radius: 3px;
|
97
|
+
box-shadow: 0 2px 15px rgba(0, 0, 0, 0.15);
|
98
|
+
z-index: 11001;
|
99
|
+
font-size: 14px;
|
100
|
+
line-height: 1.2em;
|
101
|
+
}
|
102
|
+
|
103
|
+
.ss-wechat-dialog .wechat-popup-header {
|
104
|
+
font-weight: bold;
|
105
|
+
}
|
106
|
+
|
107
|
+
.ss-wechat-dialog .wechat-dialog-qr {
|
108
|
+
text-align: center;
|
109
|
+
margin: 25px 0;
|
110
|
+
}
|
111
|
+
|
112
|
+
.ss-wechat-dialog .wechat-popup-close {
|
113
|
+
width: 16px;
|
114
|
+
height: 16px;
|
115
|
+
position: absolute;
|
116
|
+
right: 10px;
|
117
|
+
top: 10px;
|
118
|
+
color: #999;
|
119
|
+
text-decoration: none;
|
120
|
+
font-size: 16px;
|
121
|
+
}
|
122
|
+
|
123
|
+
.ss-wechat-dialog .wechat-popup-footer {
|
124
|
+
text-align: left;
|
125
|
+
line-height: 22px;
|
126
|
+
color: #666;
|
127
|
+
}
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "SocialShareFeature"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SocialShareFeature
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Avdhesh
|
@@ -102,6 +102,15 @@ executables: []
|
|
102
102
|
extensions: []
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
|
+
- CHANGELOG.md
|
106
|
+
- LICENSE.txt
|
107
|
+
- README.md
|
108
|
+
- app/assets/javascripts/jquery.qrcode.min.js
|
109
|
+
- app/assets/javascripts/share_button.coffee
|
110
|
+
- app/assets/javascripts/share_button/wechat.coffee
|
111
|
+
- app/assets/stylesheets/share_button.css.erb
|
112
|
+
- bin/console
|
113
|
+
- bin/setup
|
105
114
|
- lib/SocialShareFeature.rb
|
106
115
|
- lib/SocialShareFeature/version.rb
|
107
116
|
- lib/generators/share_button/install_generator.rb
|
@@ -126,8 +135,8 @@ licenses:
|
|
126
135
|
metadata:
|
127
136
|
allowed_push_host: https://rubygems.org/
|
128
137
|
homepage_uri: https://github.com/Avdhesh51000/SocialShareFeature
|
129
|
-
documentation_uri: https://www.rubydoc.info/gems/SocialShareFeature/0.1.
|
130
|
-
source_code_uri: https://github.com/Avdhesh51000/SocialShareFeature/releases/tag/V0.1.
|
138
|
+
documentation_uri: https://www.rubydoc.info/gems/SocialShareFeature/0.1.4
|
139
|
+
source_code_uri: https://github.com/Avdhesh51000/SocialShareFeature/releases/tag/V0.1.4
|
131
140
|
post_install_message:
|
132
141
|
rdoc_options: []
|
133
142
|
require_paths:
|