mirror of https://github.com/IoTcat/ushio-img.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
5.0 KiB
115 lines
5.0 KiB
4 years ago
|
//// ==========================================================================
|
||
|
//
|
||
|
// Share
|
||
|
// Displays simple form for sharing current url
|
||
|
//
|
||
|
// ==========================================================================
|
||
|
(function(document, $) {
|
||
|
"use strict";
|
||
|
|
||
|
$.extend(true, $.fancybox.defaults, {
|
||
|
btnTpl: {
|
||
|
share:
|
||
|
'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}">' +
|
||
|
'<svg viewBox="0 0 40 40">' +
|
||
|
'<path d="M6,30 C8,18 19,16 23,16 L23,16 L23,10 L33,20 L23,29 L23,24 C19,24 8,27 6,30 Z">' +
|
||
|
"</svg>" +
|
||
|
"</button>"
|
||
|
},
|
||
|
share: {
|
||
|
url: function(instance, item) {
|
||
|
return (
|
||
|
(!instance.currentHash && !(item.type === "inline" || item.type === "html") ? item.origSrc || item.src : false) || window.location
|
||
|
);
|
||
|
},
|
||
|
tpl:
|
||
|
'<div class="fancybox-share">' +
|
||
|
"<h1>{{SHARE}}</h1>" +
|
||
|
"<p>" +
|
||
|
'<a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}">' +
|
||
|
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg>' +
|
||
|
"<span>Facebook</span>" +
|
||
|
"</a>" +
|
||
|
'<a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}">' +
|
||
|
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg>' +
|
||
|
"<span>Twitter</span>" +
|
||
|
"</a>" +
|
||
|
'<a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}">' +
|
||
|
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg>' +
|
||
|
"<span>Pinterest</span>" +
|
||
|
"</a>" +
|
||
|
"</p>" +
|
||
|
'<p> <input class="fancybox-share__input" type="text" value="{{url_raw}}" /></p>' +
|
||
|
'<p>This Page<input class="fancybox-share__input" type="text" value="{{url_url}}" /></p>' +
|
||
|
'<p>Url<input class="fancybox-share__input" type="text" value="{{url_html}}" /></p>' +
|
||
|
'<p>HTML<input class="fancybox-share__input" type="text" value="{{url_markdown}}" /></p>' +
|
||
|
'<p>Markdown</p>' +
|
||
|
"</div>"
|
||
|
}
|
||
|
});
|
||
|
|
||
|
function escapeHtml(string) {
|
||
|
var entityMap = {
|
||
|
"&": "&",
|
||
|
"<": "<",
|
||
|
">": ">",
|
||
|
'"': """,
|
||
|
"'": "'",
|
||
|
"/": "/",
|
||
|
"`": "`",
|
||
|
"=": "="
|
||
|
};
|
||
|
|
||
|
return String(string).replace(/[&<>"'`=\/]/g, function(s) {
|
||
|
return entityMap[s];
|
||
|
});
|
||
|
}
|
||
|
|
||
|
$(document).on("click", "[data-fancybox-share]", function() {
|
||
|
var instance = $.fancybox.getInstance(),
|
||
|
current = instance.current || null,
|
||
|
url,
|
||
|
tpl;
|
||
|
|
||
|
if (!current) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ($.type(current.opts.share.url) === "function") {
|
||
|
url = current.opts.share.url.apply(current, [instance, current]);
|
||
|
}
|
||
|
|
||
|
var share_url = current.src;
|
||
|
var share_alt = window.location.href.match(/xyz\/(\S*)?.html/)[1]+'_'+current.src.match(/img_(\S[^_]*)?_/)[1];
|
||
|
|
||
|
tpl = current.opts.share.tpl
|
||
|
.replace(/\{\{media\}\}/g, current.type === "image" ? encodeURIComponent(current.src) : "")
|
||
|
.replace(/\{\{url\}\}/g, encodeURIComponent(url))
|
||
|
.replace(/\{\{url_raw\}\}/g, escapeHtml(url))
|
||
|
.replace(/\{\{url_url\}\}/g, share_url)
|
||
|
.replace(/\{\{url_html\}\}/g, '<img src="'+share_url+'" alt="'+share_alt+'">')
|
||
|
.replace(/\{\{url_markdown\}\}/g, '!['+share_alt+']('+share_url+')')
|
||
|
.replace(/\{\{descr\}\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : "");
|
||
|
|
||
|
$.fancybox.open({
|
||
|
src: instance.translate(instance, tpl),
|
||
|
type: "html",
|
||
|
opts: {
|
||
|
animationEffect: false,
|
||
|
afterLoad: function(shareInstance, shareCurrent) {
|
||
|
// Close self if parent instance is closing
|
||
|
instance.$refs.container.one("beforeClose.fb", function() {
|
||
|
shareInstance.close(null, 0);
|
||
|
});
|
||
|
|
||
|
// Opening links in a popup window
|
||
|
shareCurrent.$content.find(".fancybox-share__links a").click(function() {
|
||
|
window.open(this.href, "Share", "width=550, height=450");
|
||
|
return false;
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
})(document, window.jQuery || jQuery);
|