미디어위키:Gadget-defaultTemplate.js: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
>BANIP (틀:고급 넘겨주기용 스크립트 편입) |
>BANIP |
||
141번째 줄: | 141번째 줄: | ||
location.replace(location.origin + $(this).data('url')); | location.replace(location.origin + $(this).data('url')); | ||
}); | }); | ||
/** JSON 편집을 편리하게 해 주는 기능. | |||
* [[틀:JSON수정]]을 위한 플러그인입니다. | |||
* 작성자: [[사:Bd3076|Bd3076]] | |||
*/ | |||
function uncy_jsonEdit(){ | |||
var mp = new Map(); | |||
var api = MediaWikiAPI(); | |||
$('.uncy-jsonedit').each(function() { | |||
var jsonDoc = $(this).attr("data-title"); | |||
if (jsonDoc.indexOf("/pluginX.json") !== -1) { | |||
console.log("사용자의 pluginX JSON은 안돼요!"); | |||
return; | |||
} | |||
var jsonData; | |||
if(mp.get(jsonDoc) === undefined){ | |||
jsonData = JSON.parse(api.getDocument(jsonDoc)); | |||
} | |||
else{ | |||
jsonData = JSON.parse(mp.get(jsonDoc)); | |||
} | |||
var variable = $(this).attr("data-var"); | |||
var value = $(this).attr("data-val"); | |||
var reset = $(this).attr("data-reset"); | |||
if(reset === "1") jsonData = {}; | |||
else jsonData[variable] = value; | |||
mp.set(jsonDoc, JSON.stringify(jsonData)); | |||
console.log(jsonDoc); | |||
console.log(JSON.stringify(jsonData)); | |||
}); | |||
mp.forEach(function(value, key) { | |||
if(key === undefined){ | |||
console.log("error: document name is undefined"); | |||
return; | |||
} | |||
if(value === undefined){ | |||
console.log("error: variable or value is wrong"); | |||
return; | |||
} | |||
api.changeDocument(key, "JSON 데이터 수정", value, 1, 1); | |||
mw.loader.using( ['mediawiki.notify','mediawiki.Title'] ).then( function () { | |||
mw.notify('JSON 데이터가 수정되었습니다.'); | |||
}); | |||
}); | |||
} | |||
$(uncy_jsonEdit); | |||
/* JSON 편집을 편리하게 해 주는 기능 끝 */ |
2023년 7월 21일 (금) 10:21 판
/**
* [[틀:뒤로]], [[틀:새로고침]], [[틀:앞으로]]에서 사용하는 방문기록 이동 함수
* class="historygo" data-page="(이동 위치)"
* 작성자: [[사용자:hsl0|hsl0]]
**/
$(function historygo() {
$('.historygo').wrap('<a />').click(function() {
history.go(this.dataset.page);
});
});
/** [[틀:로고 바꾸기]]용 함수 V 1.1
* 작성자: [[사용자:Manymaster|manymaster]],
* 1.1 업데이트: [[사용자:BANIP|BANIP]]
*/
function logochange() {
// 허용 확장자 및 url 패턴
var allwedURLPattern = ["i.uncyclopedia.kr/game/","i.uncyclopedia.kr/pedia/","upload.wikimedia.org/wikipedia/commons/"];
var allowedExt = ["gif","png","jpg","jpeg","svg"];
var logoElement = document.getElementsByClassName("changelogo123");
/* .changelogo 요소가 없으면 종료 */
if (logoElement.length === 0) {
return;
}
var logoTest = logoElement[0].innerHTML.toLowerCase();
//이미지 url이 주어진 조건에 맞는지 검사
var isSafeURL = allwedURLPattern.some( function(middleURL){
var reg = new RegExp("//" + middleURL);
return ( logoTest.match(reg) !== null);
});
var isSafeExt = allowedExt.some( function(ext){
var reg = new RegExp("\." + ext + "$");
return ( logoTest.match(reg) !== null);
});
// URL패턴과 확장자의 조건이 맞지 않으면 종료
if ( !(isSafeURL && isSafeExt) ) {
return;
}
/* 로고 교체 */
var orglogoElement = document.querySelector("#p-logo a");
orglogoElement.style.backgroundImage = "url('" + logoElement[0].innerHTML + "')";
/* 사이즈 교체 */
var widthElement = document.querySelector(".changelogowidth");
widthElement.innerHTML = widthElement === null ? "160px" : widthElement.innerHTML;
var heightElement = document.querySelector(".changelogoheight");
heightElement.innerHTML = heightElement === null ? "160px" : heightElement.innerHTML;
orglogoElement.style.backgroundSize = widthElement.innerHTML + " " + heightElement.innerHTML;
}
$(logochange);
/* [[틀:로고 바꾸기]]용 함수 끝 */
/** [[틀:제목 바꾸기]]용 스크립트 */
function rewriteTitle() {
if (typeof(disableTitleRewrite) != 'undefined' && disableTitleRewrite) return;
if (!document.getElementById('title-meta')) return;
$('h1.firstHeading').each(function(i) {
$(this).html($("#title-meta").html()).css('text-align', $("#title-align").text());
});
}
$(rewriteTitle);
/** [[틀:복붙 상자]]용 함수
* [[틀:자동저장|자동저장 시스템]]이 자동 인증 사용자 전용인 관계로 자동저장 시스템을 사용하지 못하거나 안 하는 사용자를 위해 쉽게 내용을 복붙할 수 있도록 도와주는 함수입니다.
* 작성자: [[사용자:Manymaster|manymaster]]
*/
function cvbox() {
var i;
var cvdata = [];
var box = [];
var cvbox = [];
/* 틀 사용 여부 확인 */
for(i = 0;
document.getElementsByClassName("cvdata")[i] !== undefined &&
document.getElementsByClassName("box_locator")[i] !== undefined; i++)
{
/* 복붙 상자에 넣을 내용을 불러오고 문제가 되는 문자열 치환 */
cvdata.push(document.getElementsByClassName("cvdata")[i].innerHTML);
cvdata[i] = cvdata[i].replace(/(<([^>]+)>)/ig, "");
cvdata[i] = cvdata[i].replace(/\n+/gi, "\n");
/* 지정한 위치에 복붙 상자를 만들어 내용 넣기 */
box.push(document.getElementsByClassName("box_locator")[i]);
box[i].innerHTML = '<textarea class="ctrlcvbox" onclick="this.focus();this.select()" title="클릭 후 Ctrl+C 등으로 \'복사\'하시면 클립보드에 내용이 저장됩니다." readonly>' + cvdata[i] + '</textarea>';
/* 복붙 상자 크기 조정 */
cvbox.push(document.getElementsByClassName("ctrlcvbox")[i]);
cvbox[i].style.height = (2+cvbox[i].scrollHeight)+"px";
}
return;
}
$( cvbox );
/* [[틀:복붙 상자]]용 함수 끝 */
/** [[틀:편집불가]] 재 리뉴얼용 함수
* [[틀:편집불가]]의 브라우저 및 모니터 차별, 3대 원칙 위반 가능 요소 포함 등으로 리뉴얼을 했으나, 리뉴얼한 틀을 소화 못하는 게임이 많아보이는 관계로 재 리뉴얼 합니다.
* 작성자: [[사용자:Manymaster|manymaster]]
*/
function editprevent() {
var caprevent = document.getElementsByClassName("edit-prevent");
var cahisprevent = document.getElementsByClassName("history-prevent");
if (caprevent[0] === undefined || caprevent[0] === null) {
return;
} else {
if (cahisprevent[0] === undefined || cahisprevent[0] === null) {
cahisprevent = document.getElementsByClassName("edit-prevent");
}
var caedit = document.getElementById('ca-edit');
var cahistory = document.getElementById('ca-history');
var caviewsource = document.getElementById('ca-viewsource');
if (caedit !== null && caedit !== undefined){
caedit.innerHTML = caprevent[0].innerHTML;
cahistory.innerHTML = cahisprevent[0].innerHTML;
} else {
caviewsource.innerHTML = caprevent[0].innerHTML;
cahistory.innerHTML = cahisprevent[0].innerHTML;
}
}
return;
}
$( editprevent );
/* [[틀:편집불가]] 재 리뉴얼용 함수 끝 */
/** [[틀:고급 넘겨주기]]에서 사용하는 넘겨주기 함수
* id="advredirect" data-url="(문서명)"
* 작성자: [[사용자:Gustmd7410|Gustmd7410]] */
$('#advredirect').each(function() {
location.replace(location.origin + $(this).data('url'));
});
/** JSON 편집을 편리하게 해 주는 기능.
* [[틀:JSON수정]]을 위한 플러그인입니다.
* 작성자: [[사:Bd3076|Bd3076]]
*/
function uncy_jsonEdit(){
var mp = new Map();
var api = MediaWikiAPI();
$('.uncy-jsonedit').each(function() {
var jsonDoc = $(this).attr("data-title");
if (jsonDoc.indexOf("/pluginX.json") !== -1) {
console.log("사용자의 pluginX JSON은 안돼요!");
return;
}
var jsonData;
if(mp.get(jsonDoc) === undefined){
jsonData = JSON.parse(api.getDocument(jsonDoc));
}
else{
jsonData = JSON.parse(mp.get(jsonDoc));
}
var variable = $(this).attr("data-var");
var value = $(this).attr("data-val");
var reset = $(this).attr("data-reset");
if(reset === "1") jsonData = {};
else jsonData[variable] = value;
mp.set(jsonDoc, JSON.stringify(jsonData));
console.log(jsonDoc);
console.log(JSON.stringify(jsonData));
});
mp.forEach(function(value, key) {
if(key === undefined){
console.log("error: document name is undefined");
return;
}
if(value === undefined){
console.log("error: variable or value is wrong");
return;
}
api.changeDocument(key, "JSON 데이터 수정", value, 1, 1);
mw.loader.using( ['mediawiki.notify','mediawiki.Title'] ).then( function () {
mw.notify('JSON 데이터가 수정되었습니다.');
});
});
}
$(uncy_jsonEdit);
/* JSON 편집을 편리하게 해 주는 기능 끝 */