کاربر:محمد/urlStatusFixer.js
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
$(function() {
var bool = {
'dead': 'yes',
'live': 'no'
};
var conf = {
page: mw.config.get('wgPageName'),
action: mw.config.get('wgAction'),
ns: mw.config.get('wgNamespaceNumber'),
ad: ' ([[کاربر:محمد/urlStatusFixer|با اسکریپت]])'
};
if (['history', 'view'].indexOf(conf.action) == -1 || conf.ns != 0) {
return;
}
function loadPage(title) {
return new mw.Api().get({
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'content',
format: 'json'
}).then(function(data) {
return Object.values(data.query.pages)[0].revisions[0]['*'];
});
}
function savePage(title, text, summary, count) {
return new mw.Api().postWithToken('csrf', {
action: 'edit',
title: title,
text: text,
summary: summary,
minor: true
}).done(function(result) {
console.log(result)
mw.notify(
'تعداد ' + mw.language.convertNumber(count) + ' پارامتر ناشناخته اصلاح شد' +
(count > 1 ? 'ند' : ''), {
type: 'success',
title: 'انجام شد!'
}
);
setTimeout(function() {
window.location.href = '/wiki/ویژه:تفاوت/' + result.edit.newrevid;
}, 2000);
});
}
$(mw.util.addPortletLink('p-tb', '#', 'وضعیت پیوند*', 't-url-status', 'اصلاح پارامتر url-status')).on('click', function(e) {
e.preventDefault();
loadPage(conf.page).then(function(content) {
var urlStatusRe = /\|\s*url\-status\s*=\s*(dead|live)/;
var urlStatusReGlobal = /\|\s*url\-status\s*=\s*(dead|live)/g;
var allMatches = content.match(urlStatusReGlobal),
i,
error = false;
if (!allMatches) {
error = true;
} else {
for (i = 0; i < allMatches.length; i++) {
value = content.match(urlStatusRe)[1];
content = content.replace(urlStatusRe, '| dead-url = ' + bool[value]);
}
}
return [content, allMatches ? allMatches.length : null, error];
}).then(function(result) {
if (result[2]) {
mw.notify('پارامتر ناشناخته در صفحه یافت نشد', {
type: 'error',
title: 'انجام نشد!'
});
return;
} else {
return savePage(
conf.page,
result[0],
'جایگزینی ' + mw.language.convertNumber(result[1]) +
' مورد پارامتر «url-status» با «dead-url»' + conf.ad,
result[1]
);
}
});
});
});