if (!RedirCreator && mw.config.get("wgPageName").toLowerCase().startsWith("Special:Search".toLowerCase())) { var RedirCreator = {} $(document).ready(function () { if (!$(".mw-search-exists").text()) { var page = $("#ooui-php-1").val() $(".mw-search-result-heading").each(function (i) { $(this).append('<span class="redirectcreator">(<a id="redirectcreator-' + i + '" href="javascript:void(0)">redirect</a>)</span>') $("#redirectcreator-" + i).click(function (e) { e.preventDefault() var target = $(this).parent().parent().find("a").eq(0).text() RedirCreator.run = confirm("Create redirect from \"" + page + "\" to \"" + target + "\"?") if (RedirCreator.run) { $.get(mw.config.get("wgScriptPath") + "/api.php", { action: "query", format: "json", meta: "tokens", type: "csrf" }).done(function (result) { if (result.error) { alert(result.error.info) } else { $.post(mw.config.get("wgScriptPath") + "/api.php", { action: "edit", format: "json", createonly: "1", title: page, text: "#REDIRECT [[" + target + "]]", summary: "Created redirect from [[" + page + "]] to [[" + target + "]] using [[User:Awesome Aasim/redirectcreator|redirect creator]]", token: result.query.tokens.csrftoken }).done(function (result) { if (result.error) { alert(result.error.info) } else { mw.notify("Redirect successfully created.") $(".redirectcreator").remove(); } }).fail(function () { location.reload() }) } }).fail(function () { location.reload() }) } }) }) } })} else if (!RedirCreator && mw.config.get("wgPageName").toLowerCase() == "Special:BlankPage/RedirectCreator".toLowerCase()) { var RedirCreator = {} $(document).ready(function () { $("#firstHeading").text("Redirect creator") $("title").text("Redirect creator - " + mw.config.get("wgSiteName")) $("#mw-content-text").html("<p>The redirect creator can create multiple redirects. Please be aware of your wiki's policy on redirects and automated tools and do not use this tool excessively. Once you click \"Start\", you will only get one chance to abort the task.</p>") $("#mw-content-text").append("<form id=\"redirectcreator-form\"></form>") $("#redirectcreator-form").append('<h2>Rate limit</h2><p>Make one edit every <input type="number" id="redirectcreator-rate" value="8" required="true" min="0"> second(s).</p>') $("#redirectcreator-form").append('<h2>Redirects</h2>') $("#redirectcreator-form").append('<p>To create multiple redirects to the same target, enter the target in the first "target" field and all the pages to redirect to that target in the "pages" column. Any blank optional fields will be auto-filled with the first redirect target.</p>') $("#redirectcreator-form").append('<table id="redirectcreator-table"><tr><th style="align:center">Redirect page</th><th style="align:center">Redirect target</th><th>(<a id="redirectcreator-addanother">+</a>)</th></tr></table>') $("#redirectcreator-table").append('<tr id="redirectcreator-row1"><td><input id="redirectcreator-page1" placeholder="Please enter redirect title here" required="true"></td><td><input id="redirectcreator-target1" placeholder="Please enter redirect target here (sections supported)" required="true"></td><td></td></tr>') $('#redirectcreator-page1').keypress(function (e) { switch (e.which || e.keyCode) { case 35: e.preventDefault() break case 60: e.preventDefault() break case 62: e.preventDefault() break case 91: e.preventDefault() break case 93: e.preventDefault() break case 123: e.preventDefault() break case 125: e.preventDefault() break case 124: e.preventDefault() break } }) $('#redirectcreator-target1').keypress(function (e) { switch (e.which || e.keyCode) { case 60: e.preventDefault() break case 62: e.preventDefault() break case 91: e.preventDefault() break case 93: e.preventDefault() break case 123: e.preventDefault() break case 125: e.preventDefault() break case 124: e.preventDefault() break } }) RedirCreator.i = 2 RedirCreator.isEmpty = function (str) { return str.replace(/\s/g, '').length == 0; } RedirCreator.addanother = function () { $("#redirectcreator-form").find("input").keydown(function (e) { if (RedirCreator.isEmpty($(this).val()) && $(this).prop('required')) { $(this).css("background-color", "yellow"); exit = true } else { $(this).css("background-color", "white"); } }) $("#redirectcreator-table").append('<tr id="redirectcreator-row' + RedirCreator.i + '"><td><input id="redirectcreator-page' + RedirCreator.i + '" placeholder="Please enter redirect title here" required="true"></td><td><input id="redirectcreator-target' + RedirCreator.i + '" placeholder="Please enter redirect target here (sections supported)"></td><td>(<a id="redirectcreator-remove' + RedirCreator.i + '" data-redirect-number="' + RedirCreator.i + '">-</a>)</td></tr>') $("#redirectcreator-remove" + RedirCreator.i).click(function (e) { e.preventDefault() var removeid = $(this).data("redirect-number") $("#redirectcreator-row" + removeid).remove() }) $('#redirectcreator-page' + RedirCreator.i).keypress(function (e) { switch (e.which || e.keyCode) { case 35: e.preventDefault() break case 60: e.preventDefault() break case 62: e.preventDefault() break case 91: e.preventDefault() break case 93: e.preventDefault() break case 123: e.preventDefault() break case 125: e.preventDefault() break case 124: e.preventDefault() break } }) $('#redirectcreator-target' + RedirCreator.i).keypress(function (e) { switch (e.which || e.keyCode) { case 60: e.preventDefault() break case 62: e.preventDefault() break case 91: e.preventDefault() break case 93: e.preventDefault() break case 123: e.preventDefault() break case 125: e.preventDefault() break case 124: e.preventDefault() break } }) RedirCreator.i++; } $("#redirectcreator-addanother").click(RedirCreator.addanother); $("#redirectcreator-form").append('<h2>Start</h2><p>Once you click start, you will not be able to reconfigure these settings, but you can abort at any time by closing out this window.</p><button type="submit" id="redirectcreator-start" onclick="RedirCreator.start()">Start</button><div id="redirectcreator-output"></div>') RedirCreator.start = function () { $("#redirectcreator-form").find("input").prop("disabled", true) $("#redirectcreator-form").find("button").prop("disabled", true) var exit = false // check that all required fields are filled out correctly. If they are not, then immediately stop. $("#redirectcreator-form").find("input").each(function (i) { if (RedirCreator.isEmpty($(this).val()) && $(this).prop('required')) { $(this).css("background-color", "yellow"); exit = true } else { $(this).css("background-color", "white"); } }) if (exit) { $("#redirectcreator-form").find("input").prop("disabled", false) $("#redirectcreator-form").find("button").prop("disabled", false) return } // autofill non-required fields that are empty with the required target, exit, then wait until it is run again RedirCreator.singletarget = $("#redirectcreator-table").find("tr").eq(1).find("input").eq(1).val() $("#redirectcreator-table").find("tr").each(function (i) { if (i == 0) { return } if (RedirCreator.isEmpty($(this).find("input").eq(1).val())) { $(this).find("input").eq(1).val(RedirCreator.singletarget) exit = true } }) if (exit) { alert("All blank nonrequired fields have been autofilled with the first required redirect target. Please check that everything has been done correctly.") $("#redirectcreator-form").find("input").prop("disabled", false) $("#redirectcreator-form").find("button").prop("disabled", false) return } if (!confirm("Are you sure you want to start?")) { $("#redirectcreator-form").find("input").prop("disabled", false) $("#redirectcreator-form").find("button").prop("disabled", false) return } if (!confirm("LAST CHANCE TO BACK DOWN. ANY DISRUPTION YOU CAUSE WITH THIS MAY RESULT IN YOU BEING BLOCKED FROM EDITING.")) { $("#redirectcreator-form").find("input").prop("disabled", false) $("#redirectcreator-form").find("button").prop("disabled", false) return } // time to start RedirCreator.redirpairs = [] RedirCreator.delay = $("#redirectcreator-rate").val() $("#redirectcreator-table").find("tr").each(function (i) { if (i == 0) { return } RedirCreator.redirpairs.push([$(this).find("input").eq(0).val(), $(this).find("input").eq(1).val()]) }) var output = function (text) { $("#redirectcreator-output").append(text) } RedirCreator.j = -1 var next = function () { RedirCreator.j += 1 if (RedirCreator.j < RedirCreator.redirpairs.length) { RedirCreator.createRedirect(RedirCreator.redirpairs[RedirCreator.j][0], RedirCreator.redirpairs[RedirCreator.j][1]) } else { output("<span style=\"color:green\">Finished.</span>"); } } RedirCreator.createRedirect = function (page, target) { output("> Creating redirect between " + page + " and " + target + "..."); try { $.get(mw.config.get("wgScriptPath") + "/api.php", { action: "parse", prop: "wikitext", format: "json", page: target }).done(function (result) { if (result.error) { output("<span style=\"color:orange\">Target page does not exist. Skipping...</span><br>"); window.setTimeout(next, RedirCreator.delay * 1000); } else { $.get(mw.config.get("wgScriptPath") + "/api.php", { action: "query", format: "json", meta: "tokens", type: "csrf" }).done(function (result) { if (result.error) { output("<span style=\"color:orange\">Error: " + result.error.info + " Skipping...</span><br>"); window.setTimeout(next, RedirCreator.delay * 1000); } else { $.post(mw.config.get("wgScriptPath") + "/api.php", { action: "edit", format: "json", createonly: "1", title: page, text: "#REDIRECT [[" + target + "]]", summary: "Created redirect from [[" + page + "]] to [[" + target + "]] using [[User:Awesome Aasim/redirectcreator|redirect creator]]", token: result.query.tokens.csrftoken }).done(function (result) { if (result.error) { output("<span style=\"color:orange\">Error: " + result.error.info + " Skipping...</span><br>"); window.setTimeout(next, RedirCreator.delay * 1000); } else { output("<span style=\"color:green\">Done</span><br>"); window.setTimeout(next, RedirCreator.delay * 1000); } }).fail(function () { throw "Fail" }) } }).fail(function () { throw "Fail" }) } }).fail(function () { throw "Fail" }) } catch (Error) { alert("Lost connection. Aborting.") output("<br><span style=\"color:red\">Failed.</span>"); } } next() } })}
🔥 Top keywords: Main PageSpecial:SearchPage 3Wikipedia:Featured picturesHouse of the DragonUEFA Euro 2024Bryson DeChambeauJuneteenthInside Out 2Eid al-AdhaCleopatraDeaths in 2024Merrily We Roll Along (musical)Jonathan GroffJude Bellingham.xxx77th Tony AwardsBridgertonGary PlauchéKylian MbappéDaniel RadcliffeUEFA European Championship2024 ICC Men's T20 World CupUnit 731The Boys (TV series)Rory McIlroyN'Golo KantéUEFA Euro 2020YouTubeRomelu LukakuOpinion polling for the 2024 United Kingdom general electionThe Boys season 4Romania national football teamNicola CoughlanStereophonic (play)Gene WilderErin DarkeAntoine GriezmannProject 2025