Skip to content

Instantly share code, notes, and snippets.

@anwerashif
Last active May 9, 2018 11:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anwerashif/699b7eb07d0e253c32acf988fd71433e to your computer and use it in GitHub Desktop.
Save anwerashif/699b7eb07d0e253c32acf988fd71433e to your computer and use it in GitHub Desktop.
Add Custom Social Share Buttons with Counter
/*
* JumboShare jQuery Social Share Buttons
* @package StudioPlayer
* @link https://github.com/mycodingtricks/jumboShare
*/
(function($){
$.fn.jumboShare = function( options ) {
var cssId = 'fontawesomeCss'; // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.id = cssId;
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css';
link.media = 'all';
head.appendChild(link);
}
var rand = Math.floor((Math.random() * 1000) + 1);
var settings = $.extend({
// These are the defaults.
url:window.location.href,
text:document.title,
twitterUsername:"rainastudio",
id: rand,
total: 0,
position: 'append' //append|prepend
}, options );
// Greenify the collection based on the settings variable.
this.each(function(){
var elem = $(this);
switch(settings.position){
case 'append':
elem.append(init());
break;
default:
elem.prepend(init());
break;
}
$.getScript("//assets.pinterest.com/js/pinit.js");
getCount();
});
function init(){
var code = "<div class='mct_jumboShare' id='jumboShare_"+settings.id+"'>"+
"<div class='mct_jumboShare_container'>"+
"<div class='mct_jumboShare_counter' id='jumboShare_counter_"+settings.id+"'>"+
"0"+
"</div>"+
"<div class='mct_jumboShare_buttons' id='jumboShare_buttons_"+settings.id+"'>"+
"<a target=_blank rel=nofollow href='https://www.facebook.com/sharer.php?u="+encodeURIComponent(settings.url)+"&t="+encodeURI(settings.text)+"' class='jumboShare_btn facebook'><span class='jumboShare_btn_text'><span class='fa fa-facebook'></span><span class='ct_text'>Share</span></span></a>"+
"<a target=_blank rel=nofollow href='https://twitter.com/intent/tweet?via="+settings.twitterUsername+"&url="+encodeURIComponent(settings.url)+"&text="+encodeURI(settings.text)+"' class='jumboShare_btn twitter'><span class='jumboShare_btn_text'><span class='fa fa-twitter'></span><span class='ct_text'>Tweet</span></span></a>"+
"<a target=_blank rel=nofollow href='https://plus.google.com/share?url="+encodeURIComponent(settings.url)+"' class='jumboShare_btn google'><sapn class='jumboShare_btn_text'><span class='fa fa-google-plus'></span><span class='ct_text'>Share</span></span></a>"+
"<a target=_blank rel=nofollow href='https://www.linkedin.com/cws/share?token&isFramed=false&url="+encodeURIComponent(settings.url)+"' class='jumboShare_btn linkedin'><span class='jumboShare_btn_text'><span class='fa fa-linkedin'></span><span class='ct_text'>Share</span></span></a>"+
"<a rel=nofollow href='https://www.pinterest.com/pin/create/button' data-pin-custom='true' data-pin-do='buttonBookmark' class='jumboShare_btn pinterest'><sapn class='jumboShare_btn_text'><span class='fa fa-pinterest'></span><span class='ct_text'>Pin It</span></span></a>"+
"<a target=_blank rel=nofollow href='https://buffer.com/add?url="+encodeURIComponent(settings.url)+"&text="+encodeURIComponent(settings.text)+"' class='jumboShare_btn buffer'><span class='jumboShare_btn_text'><span class='fa fa-buffer'></span><span class='ct_text'>Buffer</span></span></a>"+
"</div></div>";
return code;
}
function convertNumber(n){
if(n>=1000000000) return (n/1000000000).toFixed(1)+'G';
if(n>=1000000) return (n/1000000).toFixed(1)+'M';
if(n>=1000) return (n/1000).toFixed(1)+'K';
return n;
}
function add(n){
settings.total = settings.total+n;
}
function updateCounter(){
$("#jumboShare_counter_"+settings.id).html(convertNumber(settings.total)+"<br><span class='total-text'>Shares</span>").fadeIn();
}
function getCount(){
var $this = this;
$.getJSON('https://count.donreach.com/?url='+encodeURIComponent(settings.url)+'&callback=?',function(d){
add(d.total);
updateCounter();
});
$.getJSON("https://api.bufferapp.com/1/links/shares.json?callback=?&url="+encodeURIComponent(settings.url),function(data){
add(data.shares);
updateCounter();
});
}
return this;
};
}(jQuery));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment