미디어위키:Gadget-strikethroughTOC.js
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.
$(function () {
var arr_ids = [];
var tocname;
var levelname;
var fileUrl = "";
const waitImg = 'https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Pictogram_voting_wait_green.svg/14px-Pictogram_voting_wait_green.svg.png';
const validImgs = [
"/Yes_check.svg",
"/X_mark.svg",
"/Yellow_check.svg",
"/U2713.svg",
"/Red_x.svg",
"/Green_check.svg",
"/Check-green.svg"
];
function addImg(nTxt, fileUrl, lvl) {
var imgStyle = "margin-left: -22px; padding-right: 8px; padding-top: 3px;";
var imgTag = "<img src=" + fileUrl + " width='14' height='14'" + " style='" + imgStyle +
( tocname !== '#toc' ? "float: left;" : "" ) + "'>";
$(nTxt).prepend("<img width='14' height='14' src=" + fileUrl + ">");
if ( tocname === '#toc' ) {
$($($( levelname )[lvl]).find("a")[0]).prepend(imgTag);
} else {
$($($( levelname )[lvl]).find("a")[0]).find('.vector-toc-text').prepend(imgTag);
}
}
if (
mw.config.get('wgNamespaceNumber') !== 4 ||
mw.config.get('wgAction') !== "view" ||
! /[\s_]+(요청|신청)(\/|$)/.test(mw.config.get('wgTitle')) ||
/(의견|문서[\s_]+작성)[\s_]+요청(\/|$)/.test(mw.config.get('wgTitle'))
) {
return;
}
if ( $('#mw-panel-toc ul').length > 0 ) {
tocname = '#mw-panel-toc';
levelname = tocname + ' li.vector-toc-level-1';
} else if ( $('#toc ul').length > 0 ) {
tocname = '#toc';
levelname = tocname + ' li.toclevel-1';
} else {
return;
}
$( levelname ).each( function ( i, li ) {
if ( tocname !== '#toc' && i === 0 ) {
return true;
}
var cnt = 0;
var checked = false;
var txt;
var nTxt;
if ( tocname === '#toc' ) {
txt = '#' + $.escapeSelector($( li )
.find( 'span.toctext' ).text()
.replace(/+/g, "")
.replace(/\s+/g, "_"));
} else {
var itemNo = $( li ).find( '.vector-toc-text .vector-toc-numb' ).text();
var itemTxt = $( li ).find( '.vector-toc-text' ).text().replace(itemNo, "");
txt = '#' + $.escapeSelector(itemTxt
.replace(/+/g, "").trim()
.replace(/\s+/g, "_"));
}
arr_ids.forEach(function (item) {
if ( item === txt ) {
cnt++;
}
});
arr_ids.push(txt);
if ( cnt !== 0 ) {
cnt++;
txt = txt + "_" + cnt;
}
nTxt = txt.replace(/^#/, tocname + "-") + " .vector-toc-text";
if ( $(".mw-heading").length === 0 ) {
return;
}
var mwMainHead = $($(".mw-heading")[ tocname !== '#toc' ? i - 1 : i]);
var mwHead = mwMainHead.next();
while (true) {
if (mwHead[0] === undefined) {
break;
}
if ($(mwHead[0]).hasClass('mw-heading')) {
break;
}
var sibl = mwHead;
var imgTag = sibl.find('img');
var pp = sibl.clone().find('noscript').contents().unwrap();
if ( pp.length > 0 ) {
imgTag = pp;
}
if ( imgTag.length > 0 ) {
for ( var i2 = 0; i2 < imgTag.length; i2++ ) {
if ( pp.length > 0 ) {
fileUrl = $($(imgTag[i2]).text()).attr("src");
} else {
fileUrl = $(imgTag[i2]).attr("src");
}
for ( var i3 = 0; i3 < validImgs.length; i3++ ) {
if ( fileUrl.includes(validImgs[i3]) ) {
checked = true;
break;
}
}
}
if ( checked ) {
break;
}
}
mwHead = mwHead.next();
}
if ( !checked ) {
addImg(nTxt, waitImg, i);
return;
}
checked = false;
for ( var i4 = 0; i4 < validImgs.length; i4++ ) {
if ( fileUrl.includes(validImgs[i4]) ) {
addImg(nTxt, fileUrl, i);
checked = true;
break;
}
}
if ( !checked ) {
addImg(nTxt, waitImg, i);
return;
}
});
});