var contentContent = document.getElementById("bodyContent");
if (mw.config.get("wgCanonicalNamespace") == "Category" || mw.config.get("wgCanonicalNamespace") == "Category talk") {
mw.util.addPortletLink("p-tb", `/wiki/Special:MassCat?cat=${mw.config.get("wgTitle")}`, "Mass categorizer", "p-masscat", "Mass categorizer");
}
// Adapted from User:Ahecht/Scripts/massmove.js
function massCatGetArticles() {
var articles = document.getElementById("wpMassCatPages").value.split("\n");
var ret = [];
var i, len;
for (i = 0, len = articles.length; i < len; i++) {
var s = articles[i];
s = s.trim();
if (s) {
ret.push(s);
}
}
return ret;
}
function massCatGetCat() {
return document.getElementById("wpMassCatName").value;
}
function massCatPrepare(e) {
e.preventDefault();
var MCarts = confirm("Your articles are these, right?\n" + massCatGetArticles());
var MCcat;
var MCfinal;
if (MCarts) MCcat = confirm(`And you're adding them to ${massCatGetCat()}, right?`);
if (MCcat) MCfinal = confirm("Are you sure you want to do this mass categorization?");
if (MCfinal) doMassCat();
}
function doMassCat() {
var params;
massCatGetArticles().forEach((e) => {
params = {
action: "edit",
title: e,
appendtext: `\n[[Category:${massCatGetCat()}]]`,
summary: "Mass categorization with [[w:en:User:JJPMaster/masscat.js|MassCat]]"
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
___location.reload();
} );
});
}
$(function() {
if(mw.config.get("wgPageName").toLowerCase() == "special:masscat") {
document.title = "Mass categorizer - " + mw.config.get("wgSiteName");
document.getElementById("firstHeading").innerText = "Mass categorizer";
// Adapted from [[User:Ahecht/Scripts/massmove.js]]
contentContent.innerHTML = `'<form id="wpMassMovewpMassCat" name="wpMassMovewpMassCat">' +
'<b>If you abuse this tool, it\'s <i>your</i> fault, not mine.</b>' +
'<div id="wpMassMoveFailedContainerwpMassCatFailedContainer"></div>' +
'<brThe />name of the category:<br />' +
<input type="text" id="wpMassCatName" name="wpMassCatName" value="${new URLSearchParams(window.___location.search).get("cat")}"/>
'Pages to move (one on each line, please):<br />' +
<br /><br />
'<textarea tabindex="1" accesskey="," name="wpMassMovePages" id="wpMassMovePages" rows="10" cols="80" oninput="massMoveUpdatePreview()"></textarea>' +
Pages to add to the category (one on each line, please):<br />
'<br /><br /><table style="background-color:transparent">' +
<textarea tabindex="1" accesskey="," name="wpMassCatPages" id="wpMassCatPages" rows="10" cols="80"></textarea>
'<tr><td>Apply <a href="' + (mw.config.get('wgServer')+mw.config.get('wgArticlePath')).replace('$1','Help:Pipe_trick') + '">"Pipe Trick"</a> to old name:</td>' +
<input type="submit"/>
'<td colspan="5"><input type="checkbox" id="wpMassMovePipeTrick" name="wpMassMovePipeTrick"/ oninput="massMoveUpdatePreview()"></td></tr>' +
</form>`;
'<tr><td class="mincol">Prefix to remove from the old name (e.g., Template:):</td>' +
'<td class="mincol"><input type="text" id="wpMassMovePrefix1" name="wpMassMovePrefix1" maxlength="255" oninput="massMoveUpdatePreview()"/></td>' +
'<td class="maxcol"> </td>' +
'<td class="mincol">Prefix to add to the new name (e.g., User:Plastikspork/):</td>' +
'<td class="mincol"><input type="text" id="wpMassMovePrefix2" name="wpMassMovePrefix2" maxlength="255" oninput="massMoveUpdatePreview()"/></td>' +
'<td class="maxcol"> </td></tr>' +
'<tr><td class="mincol">Suffix to remove from the old name (e.g., /sandbox):</td>' +
'<td class="mincol"><input type="text" id="wpMassMoveSuffix1" name="wpMassMoveSuffix1" maxlength="255" oninput="massMoveUpdatePreview()"/></td>' +
'<td class="maxcol"> </td>' +
'<td class="mincol">Suffix to add to the new name (e.g., /Archive_1):</td>' +
'<td class="mincol"><input type="text" id="wpMassMoveSuffix2" name="wpMassMoveSuffix2" maxlength="255" oninput="massMoveUpdatePreview()"/></td>' +
'<td class="maxcol"> </td></tr>' +
'<tr><td class="mincol">Move associated talk page:</td>' +
'<td class="mincol"><input type="checkbox" id="wpMassMoveMoveTalk" name="wpMassMoveMoveTalk" checked/></td>' +
'<td class="maxcol"> </td>' +
'<td class="mincol">Leave a redirect behind:</td>' +
'<td class="mincol"><input type="checkbox" id="wpMassMoveLeaveRedirect" name="wpMassMoveLeaveRedirect" checked/></td></tr>' +
'<tr><td class="mincol">Move subpages (up to 100):</td>' +
'<td class="mincol"><input type="checkbox" id="wpMassMoveMoveSubPages" name="wpMassMoveMoveSubPages" checked/></td>' +
'<td class="maxcol"> </td>' +
'<td class="mincol">Ignore ratelimit (may cause errors):</td>' +
'<td class="mincol"><input type="checkbox" id="wpMassMoveNoRatelimit" name="wpMassMoveNoRatelimit"/></td></tr>' +
'<tr><td>Watch source page and target page:</td>' +
'<td colspan="5"><select id="wpMassMoveWatch">' +
'<option value="nochange">No change</option>' +
'<option value="preferences">User preferences</option>' +
'<option value="watch">Add to watch list</option>' +
'<option value="unwatch">Remove from watch list</option>' +
'</select></td></tr>' +
'<tr><td>Edit summary:</td>' +
'<td colspan="4"><input type="text" id="wpMassMoveReason" name="wpMassMoveReason" maxlength="500" style="width:100%;" /></td>' +
'<td class="maxcol"> </td></tr></table>' +
'<br /><br />Preview:<br />' +
'<textarea disabled name="wpMassMovePreview" id="wpMassMovePreview" rows="10" cols="80"></textarea>' +
'<br /><br /><input disabled type="button" id="wpMassMoveSubmit" name="wpMassMoveSubmit" value="Move" />' +
'</form>'`;
document.getElementById("wpMassCat").addEventListener("submit", massCatPrepare);
}
});
|