미디어위키:Gadget-CGI2.js: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
imported>Senouis (Senouis의 265258판 편집을 되돌림) |
imported>Senouis 편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
/** [[틀:CGI2|CGI2]]를 사용 가능하게 만드는 jquery 구문 | /** [[틀:CGI2|CGI2]]를 사용 가능하게 만드는 jquery 구문 | ||
* 원작성자: [[사용자:BANIP|BANIP]] | * 원작성자: [[사용자:BANIP|BANIP]] | ||
* 2차 작성자: [[사용자:Gustmd7410|Gustmd7410]] | * 2차 작성자: [[사용자:Gustmd7410|Gustmd7410]] | ||
**/ | **/ | ||
function | mw.loader.getScript( | ||
'https://libertygame.miraheze.org/wiki/미디어위키:Gadget-CGI2-parser.js' | |||
) | |||
.then( function () { | |||
// Script succeeded. You can use X now. | |||
$(".cgilink").each(function() { | |||
// CGI2의 page속성과 data속성을 가져옴 | |||
/* | |||
true = 항상 엄격모드 | |||
null = 디버그 모드 (debug=true) 에 엄격모드 자동 전환 | |||
false = 엄격모드 사용 안함 | |||
*/ | |||
var useStrict = null; | |||
var page = $(this).data("page").split('#'); | |||
var variables = $(this).data("var"); | |||
// 가져온 page데이터 속성을 조합해 url인스턴스 생성 | |||
var pagename = page.shift() || mw.config.get('wgPageName'); | |||
var hash = page.join('#'); | |||
var urlstr = window.location.origin; | |||
var url = new URL(urlstr); | |||
var searchParam = geturlSearch(); | |||
// 엄격모드 사용여부 결정 | |||
if(typeof useStrict !== "boolean") { | |||
useStrict = (searchParam.debug === "true" || searchParam.debug == 1)? true : false; | |||
} | |||
// 가져온 var속성으로 url 인스턴스의 searchparams를 씹고 뜯고 맛보고 즐기고 | |||
var enabledKey = null; | |||
try { | |||
searchParam = new CGI2Parser({ | |||
set: function(key, value) { | |||
this[key.trim()] = value.trim(); | |||
}, | |||
"default": function(key, value) { | |||
key = key.trim(); | |||
this[key] = this[key] || value.trim(); | |||
}, | |||
del: function(key) { | |||
delete this[key.trim()]; | |||
}, | |||
restrict: function(key) { | |||
if(!enabledKey) enabledKey = []; | |||
enabledKey.push(key); | |||
} | |||
}).parse(searchParam, variables, useStrict); | |||
if(enabledKey) Object.keys(searchParam).forEach(function(key) { | |||
if(!enabledKey.includes(key)) delete searchParam[key]; | |||
}); | |||
} catch(error) { | |||
$(this).html($("<span class='error' />").text(error.message)); | |||
return; | |||
} | |||
// url 경로 조정 | |||
} | if(Object.keys(searchParam).length > 0) { | ||
/ | url.pathname = "/w/index.php"; | ||
searchParam.title = pagename; | |||
} else url.pathname = "/wiki/" + mw.util.wikiUrlencode(pagename); | |||
url.search = searchParamToString(searchParam); | |||
url.hash = mw.util.escapeIdForLink(hash); | |||
// cgilink에 a태그 추가 | |||
var children = $(this).html(); | |||
$(this).html("<a href='" + url.href.replace("'", "'") + "'>" + children + "</a>"); | |||
}); | |||
}, function ( e ) { | |||
// Script failed. X is not avaiable | |||
mw.log.error( e.message ); // => "Failed to load script" | |||
} ); | |||
} ); | |||
/* [[틀:CGI2|CGI2]]를 사용 가능하게 만드는 jquery 구문 끝 */ | /* [[틀:CGI2|CGI2]]를 사용 가능하게 만드는 jquery 구문 끝 */ |
2020년 12월 29일 (화) 16:00 판
/** [[틀:CGI2|CGI2]]를 사용 가능하게 만드는 jquery 구문
* 원작성자: [[사용자:BANIP|BANIP]]
* 2차 작성자: [[사용자:Gustmd7410|Gustmd7410]]
**/
mw.loader.getScript(
'https://libertygame.miraheze.org/wiki/미디어위키:Gadget-CGI2-parser.js'
)
.then( function () {
// Script succeeded. You can use X now.
$(".cgilink").each(function() {
// CGI2의 page속성과 data속성을 가져옴
/*
true = 항상 엄격모드
null = 디버그 모드 (debug=true) 에 엄격모드 자동 전환
false = 엄격모드 사용 안함
*/
var useStrict = null;
var page = $(this).data("page").split('#');
var variables = $(this).data("var");
// 가져온 page데이터 속성을 조합해 url인스턴스 생성
var pagename = page.shift() || mw.config.get('wgPageName');
var hash = page.join('#');
var urlstr = window.location.origin;
var url = new URL(urlstr);
var searchParam = geturlSearch();
// 엄격모드 사용여부 결정
if(typeof useStrict !== "boolean") {
useStrict = (searchParam.debug === "true" || searchParam.debug == 1)? true : false;
}
// 가져온 var속성으로 url 인스턴스의 searchparams를 씹고 뜯고 맛보고 즐기고
var enabledKey = null;
try {
searchParam = new CGI2Parser({
set: function(key, value) {
this[key.trim()] = value.trim();
},
"default": function(key, value) {
key = key.trim();
this[key] = this[key] || value.trim();
},
del: function(key) {
delete this[key.trim()];
},
restrict: function(key) {
if(!enabledKey) enabledKey = [];
enabledKey.push(key);
}
}).parse(searchParam, variables, useStrict);
if(enabledKey) Object.keys(searchParam).forEach(function(key) {
if(!enabledKey.includes(key)) delete searchParam[key];
});
} catch(error) {
$(this).html($("<span class='error' />").text(error.message));
return;
}
// url 경로 조정
if(Object.keys(searchParam).length > 0) {
url.pathname = "/w/index.php";
searchParam.title = pagename;
} else url.pathname = "/wiki/" + mw.util.wikiUrlencode(pagename);
url.search = searchParamToString(searchParam);
url.hash = mw.util.escapeIdForLink(hash);
// cgilink에 a태그 추가
var children = $(this).html();
$(this).html("<a href='" + url.href.replace("'", "'") + "'>" + children + "</a>");
});
}, function ( e ) {
// Script failed. X is not avaiable
mw.log.error( e.message ); // => "Failed to load script"
} );
} );
/* [[틀:CGI2|CGI2]]를 사용 가능하게 만드는 jquery 구문 끝 */