사용자:정안영민/monobook.js

위키백과, 우리 모두의 백과사전.

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.

//By Dr pda(enwp).
 
function loadXMLDocPassingTemplate(url,handler, page)
{
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        var req = new XMLHttpRequest();
    }
    // branch for IE/Windows ActiveX version
    else if (window.ActiveXObject) {
        var req = new ActiveXObject("Microsoft.XMLHTTP");
   }
   if (req) {
     req.onreadystatechange = function () {handler(req, page)};
     req.open("GET", url, true);
     req.send("");
   }
}
 
function getWikiText(req, page) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
	 response = req.responseXML.documentElement;
         var rev = response.getElementsByTagName('rev');
	 if(rev.length > 0){
	   result = rev[0].getAttribute('size');
           if(result > 10240){
             result = (result/1024).toFixed(0)+' kB';
           }
           else{
             result = result+' B';
           }
           wiki_value = document.createElement("li");
	   wiki_value.id = "wiki-size";
	   wiki_value.innerHTML = '<b>Wiki text: </b>'+result;
	   var output = document.getElementById("document-size-stats");
	   prose_value = document.getElementById("prose-size");
	   output.insertBefore(wiki_value,prose_value);
	 }
	 else{
	  //alert("There was a problem using the Wikipedia Search to find the wiki text size\nEither the search is not working or the correct article did not appear on the first page of results");
           wiki_value = document.createElement("li");
	   wiki_value.id = "wiki-size";
	   wiki_value.innerHTML = '<b>Wiki text: </b>Problem getting wiki text size';
	   var output = document.getElementById("document-size-stats");
	   prose_value = document.getElementById("prose-size");
	   output.insertBefore(wiki_value,prose_value);
	 }
        } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText);
        }
    }
}
 
function getFileSize(req, page) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
	  var fsize = req.responseText.length;
	  window.status = fsize;
	  var total_value = document.createElement("li");
	  total_value.id = "total-size";
	  total_value.innerHTML='<b>File size: </b>'+(fsize/1024).toFixed(0)+'&nbsp;kB';
	  var output = document.getElementById("document-size-stats");
	  var prose_html_value = document.getElementById("prose-size-html");
	  output.insertBefore(total_value,prose_html_value);
         } else {
            alert("There was a problem retrieving the XML data:\n" +
                req.statusText + "\n(" + url + ")");
        }
    }
}
 
function getLength(id){
 var textLength = 0;
 for(var i=0;i<id.childNodes.length; i++){
  if(id.childNodes[i].nodeName == '#text'){
   textLength += id.childNodes[i].nodeValue.length;
  }
  else if(id.childNodes[i].id == 'coordinates'){
    //special case for {{coord}} template
  }
  else{
    textLength += getLength(id.childNodes[i]);
  }
 }
 return textLength;
}
 
function getRefMarkLength(id,html){
 var textLength = 0;
 for(var i=0;i<id.childNodes.length; i++){
  if(id.childNodes[i].className == 'reference'){
   textLength += (html)? id.childNodes[i].innerHTML.length : getLength(id.childNodes[i]);
  }
 }
 return textLength;
}
 
function getDocumentSize(){
 contentDivName = '';
 if(skin == 'monobook' || skin == 'chick' || skin == 'myskin' || skin == 'simple'){
   contentDivName = 'bodyContent';
 }
 else if (skin == 'modern'){
   contentDivName = 'mw_contentholder';
 }
 else if (skin == 'standard' || skin == 'cologneblue' || skin == 'nostalgia'){
   contentDivName = 'article';
 }
 else{
   //fallback case; the above covers all currently existing skins
   contentDivName = 'bodyContent';
 }
 //Same for all skins if previewing page
 if(wgAction == 'submit') contentDivName = 'wikiPreview';
 
 var bodyContent = document.getElementById(contentDivName);
 if(document.getElementById("document-size-stats")){
   //if statistics already exist, turn them off and remove highlighting
   var output = document.getElementById("document-size-stats");
   var oldStyle = output.className;
   var pList = bodyContent.getElementsByTagName("p");
   for(var i=0;i<pList.length; i++){
     if(pList[i].parentNode.id == contentDivName) pList[i].style.cssText = oldStyle;
   }
   output.parentNode.removeChild(output);
   var header = document.getElementById("document-size-header");
   header.parentNode.removeChild(header);
 }
 else{
 var output = document.createElement("ul");
 output.id = "document-size-stats";
 
 var prose_html_value = document.createElement("li");
 prose_html_value.id = "prose-size-html";
 output.appendChild(prose_html_value);
 
 var ref_html_value = document.createElement("li");
 ref_html_value.id = "ref-size-html";
 output.appendChild(ref_html_value);
 
 var prose_value = document.createElement("li");
 prose_value.id = "prose-size";
 output.appendChild(prose_value);
 output.className = bodyContent.getElementsByTagName("p").item(0).style.cssText;
 
 var ref_value = document.createElement("li");
 ref_value.id = "ref-size";
 output.appendChild(ref_value);
 
 var dummy = document.getElementById("siteSub");
 dummy.parentNode.insertBefore(output, dummy.nextSibling);
 
 var header = document.createElement("span");
 header.id = "document-size-header";
 header.innerHTML = '<br/>Document statistics: <small><i>(See <a href="http://en.wikipedia.org/wiki/User_talk:Dr_pda/prosesize.js">here</a> for details.)<i></small>';
 dummy.parentNode.insertBefore(header,output);
 
 //File size not well defined for preview mode or section edit
 if(wgAction != 'submit'){
   //If browser supports document.fileSize property (IE)
   if(document.fileSize){
     var total_value = document.createElement("li");
     total_value.id = "total-size";
     total_value.innerHTML='<b>File size: </b>'+(document.fileSize/1024).toFixed(0)+'&nbsp;kB';
     output.insertBefore(total_value,prose_html_value);
   }
   else{
    loadXMLDocPassingTemplate(location.pathname,getFileSize,'')
   }
 }
 
 //Get size of images only if browser supports filesize property (IE)
 var iList = bodyContent.getElementsByTagName("img");
 if(iList.length >0 && iList[0].fileSize){
 //Get size of images included in document
   var image_size = 0;
   var first_magnify = true;
 
   for (var i=0;i<iList.length; i++){
    var im = iList[i];
    if(im.getAttribute("src").indexOf("magnify-clip.png") != -1){
      if(first_magnify){
        image_size += im.fileSize*1;
        first_magnify = false;
      }
    }
    else{
      image_size += im.fileSize*1;
    }
   }
   var image_value = document.createElement("li");
   image_value.id = "image-size";
   image_value.innerHTML='<b>Images: </b>'+(image_size/1024).toFixed(0)+'&nbsp;kB';
   output.appendChild(image_value);
 
  }
 //Calculate prose size and size of reference markers ([1] etc)
 var pList = bodyContent.getElementsByTagName("p");
 
 prose_size = 0;
 prose_size_html = 0;
 refmark_size = 0;
 refmark_size_html = 0;
 word_count = 0;
 for(var i=0;i<pList.length; i++){
   var para = pList[i];
   if(para.parentNode.id == contentDivName){
    prose_size += getLength(para);
    prose_size_html += para.innerHTML.length;
    refmark_size += getRefMarkLength(para,false);
    refmark_size_html += getRefMarkLength(para,true);
    word_count += para.innerHTML.replace(/(<([^>]+)>)/ig,"").split(' ').length
    para.style.cssText = "background-color:yellow";
   }
 }
 
 if((prose_size-refmark_size)>10240){
   prose_value.innerHTML='<b>Prose size (text only): </b>'+((prose_size-refmark_size)/1024).toFixed(0)+'&nbsp;kB ('+word_count+' words) "readable prose size"';
 }
 else{
   prose_value.innerHTML='<b>Prose size (text only): </b>'+(prose_size-refmark_size)+'&nbsp;B ('+word_count+' words) "readable prose size"';
 }
 
 if((prose_size_html-refmark_size_html)>10240){
   prose_html_value.innerHTML='<b>Prose size (including all HTML code): </b>'+((prose_size_html-refmark_size_html)/1024).toFixed(0)+'&nbsp;kB';
 }
 else{
   prose_html_value.innerHTML='<b>Prose size (including all HTML code): </b>'+(prose_size_html-refmark_size_html)+'&nbsp;B';
 }
 
 //Calculate size of references (i.e. output of <references/>)
 var rList = bodyContent.getElementsByTagName("ol");
 var ref_size = 0;
 var ref_size_html = 0;
 for (var i=0; i<rList.length; i++){
   if(rList[i].className == "references"){
     ref_size = getLength(rList[i]);
     ref_size_html = rList[i].innerHTML.length;
   }
 }
 
 if((ref_size+refmark_size)>10240){
   ref_value.innerHTML='<b>References (text only): </b>'+((ref_size+refmark_size)/1024).toFixed(0)+'&nbsp;kB';
 }
 else{
   ref_value.innerHTML='<b>References (text only): </b>'+(ref_size+refmark_size)+'&nbsp;B';
 }
 
 if((ref_size_html+refmark_size_html)>10240){
   ref_html_value.innerHTML='<b>References (including all HTML code): </b>'+((ref_size_html+refmark_size_html)/1024).toFixed(0)+'&nbsp;kB';
 }
 else{
   ref_html_value.innerHTML='<b>References (including all HTML code): </b>'+(ref_size_html+refmark_size_html)+'&nbsp;B';
 }
 
 //get correct name of article from wikipedia-defined global variables
 var pageNameUnderscores = wgPageName;
 var pageNameSpaces = pageNameUnderscores.replace(/_/g,' ')
 
 //if page is a permalink, diff, etc don't try to search
 if(!location.pathname.match('/w/index.php')){ 
  //Get revision size from API
  var searchURL = wgScriptPath + '/api.php?action=query&prop=revisions&rvprop=size&format=xml&revids=' + wgCurRevisionId;
  loadXMLDocPassingTemplate(searchURL,getWikiText,pageNameSpaces);
 }
 else if(wgAction == 'submit'){
   //Get size of text in edit box
   result = document.getElementById('wpTextbox1').value.length;
   if(result > 10240){
     result = (result/1024).toFixed(0)+'&nbsp;kB';
   }
   else{
     result = result+'&nbsp;B';
   }
   wiki_value = document.createElement("li");
   wiki_value.id = "wiki-size";
   wiki_value.innerHTML = '<b>Wiki text: </b>'+result;
   var output = document.getElementById("document-size-stats");
   prose_value = document.getElementById("prose-size");
   output.insertBefore(wiki_value,prose_value);
 }
}
}
 
$(function () {
  if(wgAction == 'edit' || (wgAction == 'submit' && document.getElementById('wikiDiff')) ){
    mw.util.addPortletLink('p-tb', 'javascript:alert("You need to preview the text for the prose size script to work in edit mode.")', 'Page size', 't-page-size', 'Calculate page and prose size', '', '');
    document.getElementById("t-page-size").firstChild.style.cssText = "color:black;"
  }
  else if(wgAction == 'view' || wgAction == 'submit' || wgAction == 'purge'){
    mw.util.addPortletLink('p-tb', 'javascript:getDocumentSize()', 'Page size', 't-page-size', 'Calculate page and prose size', '', '');
  }
});
 
 //</pre>

// 정안영민의 관리도구
addOnloadHook(
function() {
  if (wgCanonicalSpecialPageName == "Recentchanges" || (wgAction=="delete" && wgArticleId==0)) {
     mw.util.addPortletLink("p-cactions", wgServer + "/wiki/Category:%EC%82%AD%EC%A0%9C_%EC%8B%A0%EC%B2%AD_%EB%AC%B8%EC%84%9C", "삭제 신청", "ca-cat-del", "처리 바람");
  }
});

addOnloadHook(
function() {
  if (wgNamespaceNumber != 3) return;
  if (document.getElementById( "t-emailuser" )) return;
  mw.util.addPortletLink("p-cactions", "http://openrbl.org/query?" + wgTitle, "RDNS", "ca-RDNS", "RDNS");
});

// from dewp

$(function() {
   var form        = document.forms["undelete"];
   if (!form)  return;
   var elements    = form.elements;
   var resetBtn   = elements["mw-undelete-reset"];
   if (!resetBtn) return;
   var toggleBtn   = document.createElement("input");
   toggleBtn.type  = "button";
   toggleBtn.value ="Auswahl umkehren";
   toggleBtn.onclick   = function() {
       for (var i=0; i<elements.length; i++) {
           var input   = elements[i];
           if (input.type != "checkbox")   continue;
           input.checked   = !input.checked;
       }
   }
   resetBtn.parentNode.insertBefore(toggleBtn, resetBtn);
});


// section0 지우기 테스트

addOnloadHook(

  function (){
   var test = document.getElementById('ca-edit-0');
   if (test) test.style.display = 'none';

});


// [[:en:User:Lupin/popups.js]]
 
mw.loader.load(
             'https://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js'
             + '&action=raw&ctype=text/javascript&dontcountme=s');
 
popupDelay=0.7;
popupHideDelay=0.2;
popupUseQueryInterface=false;


// en, wp:WikiProject User scripts/Scripts/Changes since I last edited

function addSinceTab() {

    // Default number of revisions to check. Set to 0 to use your usual default for a history page.
    // Sensible options might be 300, 500 or 750. Values up to 5000 are valid, but will be quite slow.

    if (!window.defaultdiffs) defaultdiffs=0;

    if (window.location.href.indexOf("&action=history&gotosince=true")!=-1) {
       do_since_I_last_edited()
    }
    else if (wgCanonicalNamespace != "Special") {
       mw.util.addPortletLink("p-cactions", "/w/index.php?title="+wgPageName+"&action=history&gotosince=true" + ((defaultdiffs <= 0) ? "" : "&limit=" + defaultdiffs ), 'since', '', "all changes since your last edit");
    }
}
function do_since_I_last_edited() {
        var csub=document.getElementById("contentSub");
        var msg=document.createElement("p");
        msg.appendChild(document.createTextNode
                        ("Parsing history... please wait..."));
        msg.className="error";
        csub.insertBefore(msg, csub.firstChild)

        var hists=document.getElementById("pagehistory").getElementsByTagName('li');
        for (n=0;n<hists.length;n++) {
            if (hists[n].getElementsByTagName("span")[0].getElementsByTagName('a')[0].innerHTML==wgUserName) {
                document.location=hists[n].childNodes[1].href; 
                return;
            }
        }

        msg.replaceChild(document.createTextNode
                         ("You have not edited this page! (recently).  Look at more edits? "),
                         msg.firstChild);

        var lookharderA = document.createElement("A");
        lookharderA.href = wgServer + '/w/index.php?title='+wgPageName+'&action=history&gotosince=true&limit=1000';
        lookharderA.innerHTML = '1000';

        msg.appendChild(lookharderA);

        msg.appendChild(document.createTextNode
                         (" "));

        lookharderA = document.createElement("A");
        lookharderA.href = wgServer + '/w/index.php?title='+wgPageName+'&action=history&gotosince=true&limit=2500';
        lookharderA.innerHTML = '2500';

        msg.appendChild(lookharderA);

        msg.appendChild(document.createTextNode
                         (" "));

        lookharderA = document.createElement("A");
        lookharderA.href = wgServer + '/w/index.php?title='+wgPageName+'&action=history&gotosince=true&limit=5000';
        lookharderA.innerHTML = '5000';

        msg.appendChild(lookharderA);

}

$(addSinceTab);

//