미디어위키:Common.js
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
- 오페라: Ctrl-F5를 입력.
/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */
/*<source lang="javascript"><nowiki>*/
/** [[틀:USERNAME]]에서 사용하는 바꿔치기 함수
* 작성자: [[사용자:Peremen]]
*/
function UserNameReplace() {
if (typeof(disableUsernameReplace) != 'undefined' && disableUsernameReplace) return;
if (!document.getElementById('pt-userpage')) return;
$("span.insertusername").each(function(i) {
$(this).text(mw.config.get("wgUserName"))
})
};
$(UserNameReplace);
/** 플러그인이 작동하지 않을 때 나타나는 내용
* js: noPlugin('(이름)');
* html: class="noplugin-(이름)"
* 작성자: [[사용자:Gustmd7410|Gustmd7410]] */
function noPlugin(name) {
$('.noplugin-' + name).each(function() {
$(this).remove();
});
}
// [[미디어위키:common.js]] 미작동시: class="noplugin"
$('.noplugin').each(function() {
$(this).remove();
});
/* window.location.search를 객체 형태로 반환
@param {object} location 획득할 로케이션 객체, 비어있으면 window.location을 참조
원작성자: [[사용자:BANIP|BANIP]]
*/
function geturlSearch(location) {
location = location || window.location;
var result = {};
if(location.search) decodeURIComponent(location.search)
.substring(1)
.split("&")
.map(function(v) { return v.split("=") })
.forEach(function(v) { result[v[0]] = v[1] });
return result;url.hash = encodeURIComponent(hash);
}
/* 객체형태로 된 SearchParam을 받아 string형태로 반환
원작성자: [[사용자:BANIP|BANIP]]
*/
function searchParamToString(searchParamsObj){
return "?" + Object.entries(searchParamsObj).map(function(v){
return v.map(function(v) {
return encodeURIComponent(v);
}).join("=");
}).join("&");
}
/** [[백괴게임:연습장]] 문서 내용 비우기
* 작성자: [[사용자:*devunt]]
*/
$(function() {
if (mw.config.get("wgPageName") != "리버티게임:연습장")
return;
if (document.URL.lastIndexOf("action=edit") != -1) {
if (document.URL.lastIndexOf("fakeaction=clean") == -1)
return;
var dbindex = document.editform.wpTextbox1;
dbindex.value = "<!-- 이 줄은 지우지 마세요 -->{{리버티게임:연습장/안내문}}[["+"분류:리버티게임 도움말]]";
document.editform.wpSummary.value = "연습장 비움";
document.editform.wpSave.click();
return;
}
});
/* userAgent */
/** source: http://www.gregoryvarghese.com/how-to-get-browser-name-and-version-via-javascript/ **/
function get_browser_info() {
var ua = navigator.userAgent,
tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
return {
name: 'IE ',
version: (tem[1] || '')
};
}
if (M[1] === 'Chrome') {
tem = ua.match(/\bOPR\/(\d+)/)
if (tem != null) {
return {
name: 'Opera',
version: tem[1]
};
}
}
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
if ((tem = ua.match(/version\/(\d+)/i)) != null) {
M.splice(1, 1, tem[1]);
}
return {
name: M[0],
version: M[1]
};
}
/** paramtest 함수
* [[틀:CGI2|CGI2]] 등에 적용되는 searchParams 메소드 지원 여부를 판단하는 함수
* 작성자: [[사용자:Manymaster|manymaster]]
*/
function paramtest() {
var test_code;
var Params = new URL(document.location).searchParams;
if (Params === undefined) {
test_code = 0;
} else {
test_code = 1;
}
return test_code;
}
/** paraminfo 함수
* paramtest의 부속 함수로 searchParams 메소드 지원시 지정한 메시지를 숨길 수 있게 해주는 함수
* 메시지는 searchparam_test 클래스로 지정하여 숨길 수 있습니다. */
function paraminfo() {
var test_code = paramtest();
if (test_code == 0) {
return;
} else {
for (var i = 0; i < document.getElementsByClassName("searchparam_test").length; i++) {
document.getElementsByClassName("searchparam_test")[i].style.display = "none";
}
}
}
$(paraminfo);
/* paramtest 및 부속 함수 끝 */
/** 스크립트의 함수를 실행시키는 링크 만들기
* $('(객체)').each(function() {
scriptLink(this);
$(this).click(function () {
(함수)
});
});
* 작성자: [[사용자:Gustmd7410|Gustmd7410]] */
function scriptLink(element) {
$(element).html('<a>' + $(element).html() + '</a>');
}
/**
* [[백괴게임:댸문]]문서의 일부 링크를 낚시문서로 바꿔치기
* 원작성자: [[사용자:BANIP|BANIP]]
*/
$(function(){
var gate = document.getElementsByClassName("fakegate");
if (gate[0] === undefined || gate[0] === null) {
return;
} else{
var targetLink = "https://libertygame.miraheze.org/wiki/"+gate[0].innerHTML;
$("#bodyContent a").attr("href",targetLink);
}
})
/* [[백괴게임:댸문]]문서의 일부 링크를 낚시문서로 바꿔치기 끝 */
/** 편집 저장시 다른 문서나 CGI로 넘겨주기
* ?action=edit&redirectquery=(params)
* 작성자: [[사용자:Gustmd7410|Gustmd7410]]
**/
$(function() {
// 현재 URL 파라미터
var params;
// URLSearchParams 호환시
if(URLSearchParams) params = new URLSearchParams(location.search);
// 비호환시 geturlSearch() 사용
else {
// Map 호환시
if(Map) params = new Map(Object.entries(geturlSearch()));
// 비호환시 mw.Map 사용
else {
params = new mw.Map();
params.values = geturlSearch();
params.has = params.exists;
}
}
// 편집창에서 redirectquery 파라미터가 있을때
if(params.has('redirectquery')) {
// 편집 폼에 wpExtraQueryRedirect 파라미터 input 요소 추가
$('#editform').append($('<input />', {
type: 'hidden',
name: 'wpExtraQueryRedirect',
value: params.get('redirectquery')
}));
}
});
/* 편집 저장시 다른 문서나 CGI로 넘겨주기 끝 */
/** 기여 확인용 플러그인
* 작성자: [[사:Bd3076|Bd3076]]
*/
function enoughEdit(){
function compareEditCount(number, id1, id2){
var editCount = mw.config.get('wgUserEditCount');
if(editCount < number){
document.getElementById(id1).style.display = "block";
}
else{
document.getElementById(id2).style.display = "block";
}
}
$('.editCompare').each(function(){
var num = $(this).attr("data-num");
var enough = $(this).attr("data-id1");
var nenough = $(this).attr("data-id2");
compareEditCount(num, enough, nenough);
});
}
$(enoughEdit);
/* 기여 확인용 플러그인 끝 */
/** 상위 문서 링크 바꿔치기
* id="setsub"
* 작성자: [[사용자:Gustmd7410|Gustmd7410]]
**/
function changeContentSub() {
var newsub = document.getElementById('setsub');
if(newsub) {
document.querySelector('#contentSub').innerHTML = newsub.innerHTML;
newsub.remove();
}
}
$(changeContentSub);
/* 상위 문서 링크 바꿔치기 끝 */
/** [[틀:자동저장]]용 문서 미리 비워놓기
* 원출처: [[틀:자동저장/플러그인]]
* 비 자동 인증된 사용자가 자동저장 겸용 문서에서 복붙을 할 때
* 문서를 덮어씌우지 않고 밑에 복붙을 하는 상황을 막기 위한 플러그인입니다.
*/
function nonautosaveready() {
/* autosave 편집모드가 아닐 경우 플러그인 종료 */
var searchParams = geturlSearch(location);
var isEditMode = searchParams.action === "edit";
var isAutosaveMode = searchParams.autosave === "1";
if (!(isEditMode && isAutosaveMode)) return "";
/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
var safeNameSpace = [""];
var thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
var nameSpaceIds = mw.config.get("wgNamespaceIds");
var isSafeNameSpace = safeNameSpace
.map(function (namespace) { return nameSpaceIds[namespace]; })
.some(function (nsNumber) { return nsNumber == thisNamespaceNumber; });
if (!(isSafeNameSpace)) return "";
/* 자동 인증된 사용자가 일 경우 플러그인 종료 */
var userGroups = mw.config.get('wgUserGroups');
var autocheck = 0;
if (userGroups) {
for (var i = 0; i < userGroups.length; i++) {
if (userGroups[i] === 'autoconfirmed') {
autocheck++;
}
}
}
if (autocheck != 0) return "";
/* 미리 비워놓기 */
var savetemp = document.editform.wpTextbox1;
savetemp.value = "";
return;
}
$(nonautosaveready);
/* [[틀:자동저장]]용 문서 미리 비워놓기 끝 */
/** 임베드 플래시 무비
* 문서에 플래시 파일을 넣을 수 있게 합니다. [[틀:플래시]]를 참고하십시오.
* 원작성자: [[:en:User:Olipro|Olipro]]
*/
// 플래시 사용 중지에 따라 이 기능은 비활성화됩니다.
/*
function useFlash() {
var flashOk;
var contentTempHolder;
$(embedFlashCheck);
}
function embedFlashMovie(flashOk) {
mainbody = document.getElementById('bodyContent');
mainbody.innerHTML = contentTempHolder;
spancheck = document.getElementsByTagName('span');
for (i = 0; i < spancheck.length; i++) {
if (spancheck[i].getAttribute('id') != 'embedFlashDoc') {
continue;
}
obj = spancheck[i].innerHTML.split('@');
flwidth = obj[0];
flheight = obj[1];
flfile = obj[2].replace('fullurl://', 'https://');
showFlash = ' ';
if (flashOk) {
showFlash = '<object width="' + flwidth + '" height="' + flheight + '"';
showFlash += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
showFlash += 'codebase="http://fpdownload.macromedia.com/pub/';
showFlash += 'shockwave/cabs/flash/swflash.cab#version=8,0,0,0">';
showFlash += '<param name="movie" value="' + flfile + '" />';
showFlash += '<embed src="' + flfile + '" width="' + flwidth + '" height=';
showFlash += '"' + flheight + '" type="application/x-shockwave-flash" ';
showFlash += 'pluginspage="http://www.macromedia.com/go/getflashplayer" />';
showFlash += '</object>';
} else {
showFlash = '<a class="plainlinks" href="javascript:embedFlashMovie(true)" onClick="embedFlashMovie(true)">' + flfile + '</a> (신뢰하는 경우 보려면 클릭하십시오.)';
}
spancheck[i].innerHTML = showFlash;
spancheck[i].style.display = 'inline';
}
}
function embedFlashCheck() {
if (!document.getElementById('embedFlashDoc')) {
return;
}
mainbody = document.getElementById('bodyContent');
contentTempHolder = mainbody.innerHTML;
if (typeof displayFlashOverride != 'undefined') {
embedFlashMovie(displayFlashOverride);
return;
}
askmessage = '<div align="center" id="askflash">이 게임에는 ';
askmessage += '<a href="/wiki/백괴:플래시" class="plainlinks">플래시</a>가 들어있습니다.<br />';
askmessage += '컴퓨터에 해를 끼칠 수 있으므로 신뢰하는 경우에만 여십시오.<br />';
askmessage += '플래시가 포함된 게임을 보시겠습니까?<br><b> ';
askmessage += '<a href="javascript:embedFlashMovie(true)" ';
askmessage += 'onClick="embedFlashMovie(true)">예</a> | <a ';
askmessage += 'href="https://libertygame.miraheze.org/">아니오</a>';
mainbody.innerHTML = askmessage;
}
$(useFlash);
*/