MediaWiki:Gadget-renamereasons.js
Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.
- Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
- Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
- Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
- Opera: Nyomj Ctrl–F5-öt
/*
* [[hu:user:Bináris/Renamereasons.js]] – Please don't remove comments upon copying! / Másoláskor, kérlek, hagyd benne a megjegyzéseket!
* Derived from: [[hu:MediaWiki:Gadget-defaultsummaries.js]]
* Original credits:
*
* Betölti a gyakori átnevezések listáját a Szerkesztő:<én>/renamereasons.list
* lapról; ha az nem létezik, akkor a MediaWiki:Gadget-renamereasons.list
* lapról. (Egy csillag: kategória, két csillag: választható opció.)
*
* Importálva az angol Wikipédiából:
* https://en.wikipedia.org/wiki/MediaWiki:Gadget-defaultsummaries.js
*
* Imported as of 09/06/2011 from [[User:ErrantX/defaultsummaries.js]]
* Edited version from [[User:MC10/defaultsummaries.js]]
* Implements default edit summary dropdown boxes
*/
if (mw.config.get('wgCanonicalSpecialPageName') === 'Movepage') {
var $summaryBox = $('[name="wpReason"]');
function editsummAddOptionToDropdown(dropdown, optionText) {
var option = document.createElement("option");
var optionTextNode = document.createTextNode(optionText);
option.appendChild(optionTextNode);
dropdown.appendChild(option);
}
function editsummAddCatToDropdown(dropdown, catText) {
var option = document.createElement("option");
option.disabled = true;
option.selected = true;
var optionTextNode = document.createTextNode(catText);
option.appendChild(optionTextNode);
dropdown.appendChild(option);
}
function editsummOnCannedSummarySelected() {
var idx = this.selectedIndex;
var canned = this.options[idx].text;
$summaryBox.val(canned).trigger('change');
}
/**
* Gets the content of the given pages via API, returns a promise that
* on success resolves with the content of the first one (in the given
* order) that exists.
*/
function getListPromise(titles) {
var formattedTitles,
api = new mw.Api();
formattedTitles = $.map(titles, function(title) {
return new mw.Title(title).getPrefixedText()
});
return api.get({
formatversion: 2,
action: 'query',
titles: formattedTitles.join('|'),
prop: 'revisions|info',
rvprop: 'content',
rvslots: 'main',
inprop: 'displaytitle',
redirects: 1
}).fail(function (err) {
console.log(err)
}).then(function (data) {
var pages = {};
$.each(data.query.pages, function (i, page) {
if (page.revisions && page.revisions[0]) {
pages[page.displaytitle] = page.revisions[0].slots.main.content;
}
});
for (var i = 0; i < formattedTitles.length; i++) {
if (pages[formattedTitles[i]]) {
return pages[formattedTitles[i]];
}
}
return false;
});
}
/**
* Takes wikitext in the same format as MediaWiki:Movepage-reason-dropdown
* (one star for category, two for selectable option).
* Returns a list of [isCat, text] pairs.
*/
function parseList(listText) {
return $.map(listText.split('\n'), function (line) {
if (line[0] !== '*') return [];
var isCat = line[1] !== '*',
text = line.substr(isCat ? 1 : 2).replace(/^\s+|\s+$/, '');
return [[isCat, text]];
});
}
function insertSummaryOptions(list, $insertBeforeThis, dropdownWidth) {
// For convenience, add a dropdown box with some canned
// rename reasons to the form.
if ($('#defaultsummaries').length || !list.length) {
return;
}
var $div = $('<div id="defaultsummaries" />');
var dropdown = document.createElement("select");
dropdown.style.width = dropdownWidth;
dropdown.style.margin = "0 4px 0 0";
dropdown.onchange = editsummOnCannedSummarySelected;
$.each(list, function (i, pair) {
if (pair[0]) {
editsummAddCatToDropdown(dropdown, pair[1]);
} else {
editsummAddOptionToDropdown(dropdown, pair[1]);
}
});
$div.append(dropdown);
$insertBeforeThis.before($div);
}
/**
* Gets the content of the following two pages via API:
* - Special:MyPage/renamereasons.list
* - MediaWiki:Gadget-renamereasons.list
* Returns a promise that on success resolves with the content of the
* first one (in the order above) that exists.
*/
$(function() {
var $insertBeforeThis = $('#wpReason');
// If we failed to find the wpReason id
if (!$insertBeforeThis.length) {
return;
}
var pages = [
'User:' + mw.user.getName() + '/renamereasons.list',
'MediaWiki:Gadget-renamereasons.list'
];
getListPromise(pages)
.then(parseList)
.then(function (options) {
insertSummaryOptions(options, $insertBeforeThis, "100%");
});
});
}