「利用者:Dragoniez/scripts/WatchAll.js」の版間の差分
表示
削除された内容 追加された内容
WatchAll v1.0 |
v1.1: 登録可能なページがない場合のメッセージを追加 |
||
2行目: | 2行目: | ||
* WatchAll |
* WatchAll |
||
* Author: Dragoniez |
* Author: Dragoniez |
||
* Version: 1. |
* Version: 1.1 |
||
**********************/ |
**********************/ |
||
//<nowiki> |
//<nowiki> |
||
29行目: | 29行目: | ||
}); |
}); |
||
let pagesCnt = pages.length; |
let pagesCnt = pages.length; |
||
if (pagesCnt === 0) { |
|||
alert('このページにはウォッチリストに登録可能なページへのリンクがありません'); |
|||
return; |
|||
} |
|||
console.log(pages); |
console.log(pages); |
||
2022年2月18日 (金) 04:22時点における版
/**********************
* WatchAll
* Author: Dragoniez
* Version: 1.1
**********************/
//<nowiki>
$(function(){
const SPN = mw.config.get('wgCanonicalSpecialPageName');
if (SPN === 'Contributions' || SPN === 'Log') {
$(mw.util.addPortletLink('p-cactions', '#', 'ウォッチ', 'ca-wa', '(投稿)記録にあるページを全てウォッチリストに追加', null, '#ca-move'))
.click(function(e){
e.preventDefault();
let $pageLinkSelector;
if (SPN === 'Contributions') {
$pageLinkSelector = $('.mw-contributions-title');
} else if (SPN === 'Log') {
$pageLinkSelector = $('.mw-changeslist-links').nextAll('a');
}
let pages = [];
$pageLinkSelector.each(function(index, obj) {
if ($.inArray($(obj).text(), pages) === -1) {
pages.push($(obj).text().replace(/\({1}(管|ビ|ス|CU|OS|オ|削|巻|イ|フ)\){1}/g, ''));
}
});
let pagesCnt = pages.length;
if (pagesCnt === 0) {
alert('このページにはウォッチリストに登録可能なページへのリンクがありません');
return;
}
console.log(pages);
async function getWatchToken() {
return new Promise(function(resolve, reject) {
new mw.Api().get({
'action': 'query',
'format': 'json',
'meta': 'tokens',
'type': 'watch'
}).then(function(res){
if (res && res.query && res.query.tokens) {
resolve(res.query.tokens.watchtoken);
} else {
resolve(undefined);
}
}).catch(function(){
resolve(undefined);
});
});
}
function addToWatchlist(token) {
$.ajax({
'url': mw.util.wikiScript('api'),
'data': {
'format': 'json',
'action': 'watch',
'titles': pages.slice(0, 49).join('|'),
'token': token
},
'dataType': 'json',
'type': 'POST',
success: function() {
if (pages.length > 50) {
pages.splice(0, 50);
addToWatchlist(token);
} else {
alert(pagesCnt + 'ページをウォッチリストに追加しました');
}
}
});
}
async function execute() {
let token = await getWatchToken();
addToWatchlist(token);
}
execute();
});
}
});
//</nowiki>