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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9e1e61fc95051f7caee32776c65b5e7a6f9c4434ad75b095e9741d9b3dcdbfe5
4
- data.tar.gz: dacebfb7ef1c2ba146f8f96cf459d07ecfbc7df59c1133dd742ceefdcf2342a1
3
+ metadata.gz: '093940c3b4855d6974af83429a6437bfddc840f7b8b80e91a266cddac9f60428'
4
+ data.tar.gz: 937ac1e4e70450175cafd51f49eae0dc974c96088a9aa03f49ace930df3290dd
5
5
  SHA512:
6
- metadata.gz: 0b12978bb7144eaf57f69f85241d87ee1db8b1fb6710f7762ff7b2306c97aa330a32d652b9861b7be6dfd6f09037d941696c13336d4139f64e7d1eb43bd0c4d7
7
- data.tar.gz: d48a3b6d4133dade61b7df16234334d69cb17491b54f993ae01662f6b4079d36fe31365c546e2471bb21c425ab99b74e1559880a04876b47c476613f477c95c4
6
+ metadata.gz: ebed7b4467710f58ac86eeaccc7e9b1d2f2dbcf45a377a9ccccbfb06c0a5225055fd82d443b45a19e33d2606c1660d444430a4837c43259f57d7156d44dba927
7
+ data.tar.gz: 6d4fc296025775252f5c4e89df7f35e6d13004b4d2cfe3c7a320db3bdf8394430318da7cfa66dcb7800d877414b038ebd1e5dca0083889d8c4239705ef15fdd2
File without changes
@@ -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.
@@ -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&quote=#{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
+ }
@@ -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__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,3 +1,3 @@
1
1
  module SocialShareFeature
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
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.3
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.3
130
- source_code_uri: https://github.com/Avdhesh51000/SocialShareFeature/releases/tag/V0.1.3
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: