“MediaWiki:Gadget-Share-btn.js”的版本间的差异
来自小鱼君和他的朋友们
([InPageEdit] 没有编辑摘要) |
([InPageEdit] 没有编辑摘要) |
||
(未显示同一用户的14个中间版本) | |||
第1行: | 第1行: | ||
− | + | mw.loader.using('jquery.cookie', function () { | |
+ | var config = mw.config.get(); | ||
+ | |||
/* 分享按钮 */ | /* 分享按钮 */ | ||
$('.action-view .firstHeading').after( | $('.action-view .firstHeading').after( | ||
'<div id="share-this-page">' + | '<div id="share-this-page">' + | ||
− | |||
'<button id="QR-btn">分享二维码</button>' + | '<button id="QR-btn">分享二维码</button>' + | ||
'<button id="purge-btn" title="强刷新(purge)">强刷新页面</button>' + | '<button id="purge-btn" title="强刷新(purge)">强刷新页面</button>' + | ||
第11行: | 第12行: | ||
$('#purge-btn').click(function () { | $('#purge-btn').click(function () { | ||
var $this = $(this); | var $this = $(this); | ||
− | if ($.cookie(' | + | if ($.cookie('wasPurged') > 0) { |
− | $this.html('请求频率过高 (<span id="purge-btn_countdown">' + Math.floor(($.cookie(' | + | $this.html('请求频率过高 (<span id="purge-btn_countdown">' + Math.floor(($.cookie('wasPurged') - new Date().getTime()) / 1000) + '</span>)').attr('disabled', 'disabled'); |
− | var endTime = $.cookie(' | + | var endTime = $.cookie('wasPurged'); |
setInterval(function () { | setInterval(function () { | ||
var timeleft = Math.floor((endTime - new Date().getTime()) / 1000); | var timeleft = Math.floor((endTime - new Date().getTime()) / 1000); | ||
第24行: | 第25行: | ||
}, 1000); | }, 1000); | ||
} else { | } else { | ||
− | $this.html('正在刷新 <img src="https:// | + | $this.html('正在刷新 <img src="https://vignette.wikia.nocookie.net/dftest/images/8/8c/Ms-loading-spinner.svg" style="height:14px;width:auto" />').attr('disabled', 'disabled'); |
// 设置30秒cd | // 设置30秒cd | ||
第30行: | 第31行: | ||
var timeLeft = new Date(); | var timeLeft = new Date(); | ||
timeLeft.setTime(timeLeft.getTime() + 30 * 1000); | timeLeft.setTime(timeLeft.getTime() + 30 * 1000); | ||
− | $.cookie(' | + | $.cookie('wasPurged', new Date().getTime() + (30 * 1000), { |
expires: timeLeft | expires: timeLeft | ||
}); | }); | ||
第37行: | 第38行: | ||
new mw.Api().post({ | new mw.Api().post({ | ||
action: 'purge', | action: 'purge', | ||
− | titles: wgPageName, | + | titles: config.wgPageName, |
}).done(function () { | }).done(function () { | ||
$this.html('刷新成功!'); | $this.html('刷新成功!'); | ||
第45行: | 第46行: | ||
}); | }); | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}); | }); | ||
/* 二维码 */ | /* 二维码 */ | ||
$('#QR-btn').click(function () { | $('#QR-btn').click(function () { | ||
− | var QRurl = 'https://api.qrserver.com/v1/create-qr-code/?color=Fl000000&bgcolor=FFFFFF&data=https://wjghj.cn/' + | + | var QRurl = 'https://api.qrserver.com/v1/create-qr-code/?color=Fl000000&bgcolor=FFFFFF&data=https://wjghj.cn/' + config.wgPageName + '&qzone=1&margin=0&size=150x150'; |
var QRimg = '<img id="QR-code" src="' + QRurl + '" alt="二维码服务检索失败!" style="width:150px;height:150px"/>'; | var QRimg = '<img id="QR-code" src="' + QRurl + '" alt="二维码服务检索失败!" style="width:150px;height:150px"/>'; | ||
ssi_modal.show({ | ssi_modal.show({ | ||
sizeClass: 'dialog', | sizeClass: 'dialog', | ||
+ | className: 'centerbox', | ||
+ | center: 1, | ||
content: | content: | ||
'<center>' + | '<center>' + | ||
第82行: | 第65行: | ||
}); | }); | ||
}); | }); | ||
+ | |||
+ | /** | ||
+ | * @name Short URL | ||
+ | * @author 机智的小鱼君 | ||
+ | * | ||
+ | * @description Get the "fake" short link provided by MediaWiki. | ||
+ | * Solve the very long link of the pages that name contain non-ASCII words. | ||
+ | */ | ||
+ | !(function () { | ||
+ | window.shortUrl = window.shortUrl || ''; | ||
+ | // 缓存 mw 变量 | ||
+ | var config = mw.config.get(); | ||
+ | // 判断是否存在文章ID | ||
+ | if (config.wgArticleId > 0) { | ||
+ | shortUrl = config.wgServer + '/-/' + config.wgArticleId; | ||
+ | // 在文章后插入段落 | ||
+ | $('#firstHeading').after( | ||
+ | $('<div>', { class: 'shortUrl-block' }).append( | ||
+ | $('<span>', { class: 'shortUrl-description' }).append( | ||
+ | $('<span>', { text: '您还可以通过此链接分享页面:' }), | ||
+ | $('<strong>', { text: shortUrl + ' ' }), | ||
+ | $('<a>', { text: '复制', href: 'javascript:;' }).click(function () { | ||
+ | // 创建 input 元素,选中复制,然后销毁 | ||
+ | var $this = $(this), | ||
+ | surlInput = $('<input>', { id: 'shortUrl-copy', value: shortUrl, style: 'z-index: -1; opacity: 0; position: absolute; left: -200vw;', readonly: 'readonly' }); | ||
+ | $this.append(surlInput); | ||
+ | surlInput.select(); | ||
+ | document.execCommand('copy'); | ||
+ | surlInput.remove(); | ||
+ | $this.text('已复制!'); | ||
+ | setTimeout(function () { | ||
+ | $this.text('复制'); | ||
+ | }, 1500); | ||
+ | }) | ||
+ | ) | ||
+ | ) | ||
+ | ); | ||
+ | } | ||
+ | // 将短链接替换进文章 | ||
+ | $('.shortUrl').text(shortUrl); | ||
+ | $('.shortUrl-link').html( | ||
+ | $('<a>', { href: shortUrl, text: shortUrl }) | ||
+ | ); | ||
+ | }()); |
2021年1月29日 (五) 19:34的最新版本
mw.loader.using('jquery.cookie', function () { var config = mw.config.get(); /* 分享按钮 */ $('.action-view .firstHeading').after( '<div id="share-this-page">' + '<button id="QR-btn">分享二维码</button>' + '<button id="purge-btn" title="强刷新(purge)">强刷新页面</button>' + '</div>' ); /* 刷新按钮 */ $('#purge-btn').click(function () { var $this = $(this); if ($.cookie('wasPurged') > 0) { $this.html('请求频率过高 (<span id="purge-btn_countdown">' + Math.floor(($.cookie('wasPurged') - new Date().getTime()) / 1000) + '</span>)').attr('disabled', 'disabled'); var endTime = $.cookie('wasPurged'); setInterval(function () { var timeleft = Math.floor((endTime - new Date().getTime()) / 1000); if (timeleft < 1) { $this.html('强刷新页面').attr('disabled', false); clearInterval(); } else { $('#purge-btn_countdown').html(timeleft); } }, 1000); } else { $this.html('正在刷新 <img src="https://vignette.wikia.nocookie.net/dftest/images/8/8c/Ms-loading-spinner.svg" style="height:14px;width:auto" />').attr('disabled', 'disabled'); // 设置30秒cd mw.loader.using(['jquery.cookie'], function () { var timeLeft = new Date(); timeLeft.setTime(timeLeft.getTime() + 30 * 1000); $.cookie('wasPurged', new Date().getTime() + (30 * 1000), { expires: timeLeft }); }); new mw.Api().post({ action: 'purge', titles: config.wgPageName, }).done(function () { $this.html('刷新成功!'); window.location.reload(); }).fail(function () { $this.html('刷新失败,请重试').attr('disabled', false); }); } }); /* 二维码 */ $('#QR-btn').click(function () { var QRurl = 'https://api.qrserver.com/v1/create-qr-code/?color=Fl000000&bgcolor=FFFFFF&data=https://wjghj.cn/' + config.wgPageName + '&qzone=1&margin=0&size=150x150'; var QRimg = '<img id="QR-code" src="' + QRurl + '" alt="二维码服务检索失败!" style="width:150px;height:150px"/>'; ssi_modal.show({ sizeClass: 'dialog', className: 'centerbox', center: 1, content: '<center>' + QRimg + '<div>扫描或长按保存,然后分享给你的小伙伴吧!<br/><span style="color:gray;font-size:70%;">你也可以<a href="' + QRurl + '" target="_blank">直接下载</a>二维码</span></div>' + '</center>', title: '分享本页二维码' }); }); }); /** * @name Short URL * @author 机智的小鱼君 * * @description Get the "fake" short link provided by MediaWiki. * Solve the very long link of the pages that name contain non-ASCII words. */ !(function () { window.shortUrl = window.shortUrl || ''; // 缓存 mw 变量 var config = mw.config.get(); // 判断是否存在文章ID if (config.wgArticleId > 0) { shortUrl = config.wgServer + '/-/' + config.wgArticleId; // 在文章后插入段落 $('#firstHeading').after( $('<div>', { class: 'shortUrl-block' }).append( $('<span>', { class: 'shortUrl-description' }).append( $('<span>', { text: '您还可以通过此链接分享页面:' }), $('<strong>', { text: shortUrl + ' ' }), $('<a>', { text: '复制', href: 'javascript:;' }).click(function () { // 创建 input 元素,选中复制,然后销毁 var $this = $(this), surlInput = $('<input>', { id: 'shortUrl-copy', value: shortUrl, style: 'z-index: -1; opacity: 0; position: absolute; left: -200vw;', readonly: 'readonly' }); $this.append(surlInput); surlInput.select(); document.execCommand('copy'); surlInput.remove(); $this.text('已复制!'); setTimeout(function () { $this.text('复制'); }, 1500); }) ) ) ); } // 将短链接替换进文章 $('.shortUrl').text(shortUrl); $('.shortUrl-link').html( $('<a>', { href: shortUrl, text: shortUrl }) ); }());