사용자:기나ㅏㄴ/redirectcreator.js
< 사용자:기나ㅏㄴ
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.
//한국어판 설명은 [[사용자:기나ㅏㄴ/redirectcreator]]을 참고하십시오.
$.when(mw.loader.using(['mediawiki.util'], $.ready)).done( function() {
mw.util.addPortletLink("p-tb", mw.config.get('wgArticlePath').replace('$1', "특수:빈문서/RedirectCreator"), '넘겨주기 문서 생성기' , "넘겨주기 생성" , "넘겨주기 생성");
});
if (mw.config.get('wgCanonicalNamespace')+':'+mw.config.get('wgTitle') === '특수:빈문서/RedirectCreator' && mw.config.get('wgAction') == 'view');
if (!RedirCreator && mw.config.get("wgPageName").toLowerCase().startsWith("특수:검색".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)">넘겨주기</a>)</span>')
$("#redirectcreator-" + i).click(function (e) {
e.preventDefault()
var target = $(this).parent().parent().find("a").eq(0).text()
RedirCreator.run = confirm("\"" + page + "\"→\"" + 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: "#넘겨주기 [[" + target + "]]",
summary: " [[User:기나ㅏㄴ/redirectcreator|redirect creator]]을 이용하여 [[" + page + "]]→[[" + target + "]] 넘겨주기를 생성함.",
token: result.query.tokens.csrftoken
}).done(function (result) {
if (result.error) {
alert(result.error.info)
} else {
mw.notify("넘겨주기 문서가 성공적으로 생성되었습니다!")
$(".redirectcreator").remove();
}
}).fail(function () {
location.reload()
})
}
}).fail(function () {
location.reload()
})
}
})
})
}
})
} else if (!RedirCreator && mw.config.get("wgPageName").toLowerCase() == "특수:빈문서/RedirectCreator".toLowerCase()) {
var RedirCreator = {}
$(document).ready(function () {
$("#firstHeading").text("넘겨주기 문서 생성기")
$("title").text("Redirect creator - " + mw.config.get("wgSiteName"))
$("#mw-content-text").html("<p>넘겨주기 문서 생성기는 여러 넘겨주기 문서를 만들 수 있습니다. 넘겨주기 문서와 자동화 도구 관련 지침을 숙지하고 이 도구를 지나치게 사용하지 마십시오. \"시작\"을 클릭하면 작업을 중단할 수 있는 기회는 한 번뿐입니다. 신중하게 사용하십시오.</p>")
$("#mw-content-text").append("<form id=\"redirectcreator-form\"></form>")
$("#redirectcreator-form").append('<h2>속도 제한</h2><p><input type="number" id="redirectcreator-rate" value="8" required="true">초마다 넘겨주기 문서 생성.</p>')
$("#redirectcreator-form").append('<h2>넘겨주기</h2>')
$("#redirectcreator-form").append('<p>동일한 대상에 대한 다중 넘겨주기 문서를 생성하려면 첫 번째 "넘겨주기 대상 문서" 칸에 넘겨주기 대상을 입력하고 "넘겨주기 문서" 열에 해당 대상으로 넘겨줄 모든 페이지를 입력합니다. 빈칸은 첫 번째 넘겨주기 대상으로 자동 채워집니다.</p>')
$("#redirectcreator-form").append('<table id="redirectcreator-table"><tr><th style="align:center">넘겨주기 문서</th><th style="align:center">넘겨주기 대상 문서</th><th>(<a id="redirectcreator-addanother">+</a>)</th></tr></table>')
$("#redirectcreator-table").append('<tr id="redirectcreator-row1"><td><input id="redirectcreator-page1" placeholder="넘겨주기 문서 제목 입력" required="true"></td><td><input id="redirectcreator-target1" placeholder="넘겨주기 대상 문서 제목 입력" 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="넘겨주기 문서 제목 입력" required="true"></td><td><input id="redirectcreator-target' + RedirCreator.i + '" placeholder="넘겨주기 대상 문서 제목 입력"></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>시작하기</h2><p>시작을 클릭하면 설정을 수정할 수 없지만 이 창을 닫으면 언제든지 중단할 수 있습니다.</p><button type="submit" id="redirectcreator-start" onclick="RedirCreator.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 = false
}
})
if (exit) {
alert("빈 넘겨주기 대상 문서 칸이 모두 첫 번째 넘겨주기 문서 대상으로 자동 채워졌습니다. 모든 작업이 올바르게 수행되었는지 확인하십시오.")
$("#redirectcreator-form").find("input").prop("disabled", false)
$("#redirectcreator-form").find("button").prop("disabled", false)
return
}
if (!confirm("정말로 작업을 시작할까요?")) {
$("#redirectcreator-form").find("input").prop("disabled", false)
$("#redirectcreator-form").find("button").prop("disabled", false)
return
}
if (!confirm("편집을 그만둘 수 있는 마지막 기회입니다. 이로 인해 발생하는 문제의 책임은 전적으로 귀하에게 있습니다.")) {
$("#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\">모두 완료</span>");
}
}
RedirCreator.createRedirect = function (page, target) {
output("> " + page + "→" + 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\">넘겨주기 대상 문서가 존재하지 않습니다. 건너뛰는 중...</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\">에러: " + result.error.info + " 건너뛰는 중...</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: "#넘겨주기 [[" + target + "]]",
summary: " [[User:기나ㅏㄴ/redirectcreator|redirect creator]]을 이용하여 [[" + page + "]]→[[" + target + "]] 넘겨주기를 생성함.",
token: result.query.tokens.csrftoken
}).done(function (result) {
if (result.error) {
output("<span style=\"color:orange\">에러: " + result.error.info + " 건너뛰는 중...</span><br>");
window.setTimeout(next, RedirCreator.delay * 1000);
} else {
output("<span style=\"color:green\">완료</span><br>");
window.setTimeout(next, RedirCreator.delay * 1000);
}
}).fail(function () {
throw "Fail"
})
}
}).fail(function () {
throw "Fail"
})
}
}).fail(function () {
throw "Fail"
})
} catch (Error) {
alert("연결이 끊겼습니다. 중단합니다.")
output("<br><span style=\"color:red\">실패.</span>");
}
}
next()
}
})
}