사용자:RedMosQ/monobook.js

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

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

/* 메타박스 (탭 지원 기능) */
/* 메타박스 기본 설정 시작 */
 
function MetaBoxInit(){
 
var i=0
for (i=0;i<=9;i++){
var vMb = document.getElementById("mb"+i);
if (!vMb) break;
 
var j=1
var vTabIni = 0 
for (j=1;j<=9;j++){
var vBt = document.getElementById("mb"+i+"bt"+j);
if (!vBt) break;
vBt.onclick = MetaBoxShowTab;
if (vBt.className=="mbButtonSel") vTabIni=j;
}
if (vTabIni == 0) {
vTabIni = 1+Math.floor((j-1)*Math.random()) ;
document.getElementById("mb"+i+"ps"+vTabIni).style.display = "block";
document.getElementById("mb"+i+"ps"+vTabIni).style.visibility = "visible";
document.getElementById("mb"+i+"bt"+vTabIni).className="mbButtonSel";
} 
}
}
 
function MetaBoxShowTab(){
var vMbName = this.id.substr(0,3);
var vIndex = this.id.substr(5,1);
 
var i=1
for (i=1;i<=9;i++){
var vTabItem = document.getElementById(vMbName+"ps"+i);
if (!vTabItem) break;
if (vIndex==i){
vTabItem.style.display = "block";
vTabItem.style.visibility = "visible";
document.getElementById(vMbName+"bt"+i).className="mbButtonSel";
} else {
vTabItem.style.display = "none";
vTabItem.style.visibility = "hidden";
document.getElementById(vMbName+"bt"+i).className="mbButton";
}
}
return false;
}
 
$(MetaBoxInit);
 
/* 메타박스 기본 설정 끝 */


/*편집요약 상용구 설정 시작*/
/*
== [[위키백과:도구/편집요약 상용구]] ==
*/
esEditSummaries = new Array(
/*
new Array('버튼 이름', '입력될 편집 요약', '툴팁으로 뜨는 설명(생략 가능)', '사소한 편집 여부(0/1 혹은 true/false, 생략 가능)', '상용구 넣기 전에 요약 지우기(0/1 혹은 true/false, 생략 가능)')
위와 같은 형식으로 새로운 버튼을 추가할 수 있습니다.
마지막 줄을 제외한 줄 끝에 쉼표가 들어가 있는지 확인해 주세요.
*/
    new Array('넘겨', '넘겨주기', '다른 문서로의 넘겨주기로 바꿈'),
    new Array('넘나', '넘나들기', '다른 문서로의 넘나들기로 바꿈'),
    new Array('동음', '동음이의', '동음이의 문서로 바꿈'),
    new Array('뜻', '다른 뜻', '다른 뜻 틀을 담'),
    new Array('분류', '분류', '분류 추가, 삭제 및 정리'),
    new Array('분할', '문서 분할', '다른 문서와의 병합을 제안하거나 실행함'),
    new Array('삭신', '삭제 신청', '삭제 신청 틀을 담'),
    new Array('삭토', '삭제 토론', '삭제 토론 틀을 담'),
    new Array('인터', '인터위키', '인터위키 추가, 삭제 및 정리'),
    new Array('정리', '문서 정리', '문서의 모양 및 구성을 정리함'),
    new Array('중립', '중립적 시각', '중립적 시각 틀을 담'),
    new Array('토막', '토막글', '토막글 틀을 담'),
    new Array('합병', '문서 병합', '다른 문서와의 병합을 제안하거나 실행함')
);

// install the Korean translation for [[:en:User:Cacycle/wikEd]]
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Ilovesabbath/wikEd_international_ko.js'
+ '&action=raw&ctype=text/javascript"></script>');
// install [[:en:User:Cacycle/wikEd]] in-browser text editor
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js'
+ '&action=raw&ctype=text/javascript"></script>');

/* Special:Contributions Wildcard/CIDR lookup, version [0.2.5]
Originally from: http://en.wikipedia.org/wiki/User:Splarka/contribsrange.js
 
Notes:
* Uses the API which is faster than most CIDR contrib tools.
** Needs 1.14 r42198+ for advanced continue.
* Currently uses a GET json via <script src=""> to avoid ajax problems.
* Only currently works if submitted (or called by URL parameter, eg Special:Contributions/User).
** Checks namespace and date options in form.
* Uses: Submit any IP CIDR range /16 or from /24 to /32. Submit any string (at least 3 characters) with a suffixed asterisk.
** eg: [123.123.123.0/24 ] or [123.123.123.* ] or [Willy* ].
* Now keeps searching until it finds crMax (or forever with crshowall=true URI parameter).
** Puts them in a nice collapsed div stack, like enhanced recent changes.
 
To do:
* use ajax (let sysops/bots = 5000)?
* /25 ranges _might_ be losing some results... verify?
*/
 
if(wgCanonicalSpecialPageName == 'Contributions' && true) { 
  addOnloadHook(prefixContribsInit);
  var crContURI = ''; //query URI for continuing later
  var crLimit = 500;
  var crMax = 10000; //bypass with &crshowall=true URI parameter
  var crImgHid = stylepath + '/common/images/Arr_r.png';
  var crImgSho = stylepath + '/common/images/Arr_d.png';
  mw.util.addCSS('.cr-list {padding-left:5px;}\n.cr-toggle-hidden {padding-left:16px;background: transparent no-repeat center left url("' + crImgHid + '")}' 
  + '\n.cr-toggle-shown {padding-left:16px;background: transparent no-repeat center left url("' + crImgSho + '")}\n.mw-mightexist {font-style:italic;}'
  + '\n#results-from-CIDR {border:1px solid black;padding:.5em}\n#prefixcontribs-tog {float:right;border:1px solid black;text-decoration:none;color:black;padding:0 5px;}');
}
 
function prefixContribsInit() {
  var show = document.getElementById('contentSub') || document.getElementById('topbar')
  if(show) show.appendChild(document.createTextNode(' \u2022 Javascript-enhanced contributions lookup 0.2 enabled. You may enter a CIDR range or append an asterisk to do a prefix search.'));
  var ucfrm = document.getElementsByTagName('form')[0];
  if(!ucfrm.target) return;
 
  //general optionlets independent of type of search.
  var opt_ns = (parseInt(ucfrm.namespace[ucfrm.namespace.selectedIndex].value) > -1) ? '&ucnamespace=' + ucfrm.namespace[ucfrm.namespace.selectedIndex].value : '';
  var opt_ts = '';
  var m = '' + ucfrm.month.selectedIndex; 
  var y = ucfrm.year.value;
  if(m.length == 1) m = '0' + m
  if(y > 2000 && y < 2100) opt_ts = '&ucstart=' + y + '-' + m + '-01T00:00:00Z'
  var options = opt_ns + opt_ts;
 
  var patternCIDR = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(2[4-9]|3[0-2]|16)/i ;
  var patternWild = /^.{3,}\*$/i ;
  var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&format=json&callback=prefixContribs&list=usercontribs' + options + '&uclimit=' + parseInt(crLimit);
  if(ucfrm.target.value.search(patternCIDR) == 0) {
    prefixContribsStartbox(ucfrm.parentNode);
    var cidr = ucfrm.target.value.match(patternCIDR)[0];
    var range = cidr.match(/[^\/]\d{1,2}$/i)[0];
    if(range == 24 || range == 16) {
      //prefixable CIDR, lets do-er
      if(range == 24) {
        cidr = cidr.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\./)[0];
      } else {
        cidr = cidr.match(/\d{1,3}\.\d{1,3}\./)[0];
      }
      url += '&ucuserprefix=' + cidr;
    } else {
      //complex CIDR, lets figure it out
      var oct3 = cidr.match(/\.\d{1,3}\//i)[0].replace(/(\.|\/)/g,'');
      cidr = cidr.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\./)[0];
      var num = Math.pow(2,32 - range);
      var start = oct3 - oct3 % num;
      url += '&ucuser=';
      for(var i=start;i<=start + num;i++) {
        url += '' + cidr + i;
        if(i != start + num) url += '|'
      }
    }
  } else if(ucfrm.target.value.search(patternWild) == 0) {
    //very simple wildcard, lets do-er
    prefixContribsStartbox(ucfrm.parentNode);
    var prefix = ucfrm.target.value.replace(/\*$/,'');
    prefix = prefix.substr(0,1).toUpperCase() + prefix.substr(1);
    url += '&ucuserprefix=' + prefix;
  }
  mw.loader.load(url);
  crContURI = url;
}
 
function prefixContribsStartbox(parent) {
  var res = document.createElement('div');
  res.setAttribute('id','results-from-CIDR');
  addlinkchild(res,'javascript:prefixContribsToggleDiv();','expand all','prefixcontribs-tog');
  var spin = document.createElement('span');
   spin.setAttribute('id','prefixcontribs-prog')
   spin.appendChild(document.createTextNode('Searching.'));
  res.appendChild(spin);
  injectSpinner(spin,'prefixcontribs-spin');
  parent.appendChild(res);
}
 
function prefixContribs(obj) {
  if(!obj['query'] || !obj['query']['usercontribs']) return
  cidr = obj['query']['usercontribs'];
  var res = document.getElementById('results-from-CIDR');
  if(cidr.length == 0) {
    res.appendChild(document.createTextNode(' No changes were found for this wildcard/CIDR range.'));
    removeSpinner('prefixcontribs-spin');
    return;
  }
  for(var i=0;i<cidr.length;i++) {
    var id = 'cr-' + escapeID(cidr[i].user);
    // group each result set based on the user name, create new div for new names
    if(!document.getElementById(id)) {
      var hdiv = document.createElement('div');
      hdiv.setAttribute('id','d-' + id)
      addlinkchild(hdiv,'javascript:prefixContribsToggleDiv("' + id +'")',cidr[i].user,'m-' + id,'cr-toggle-hidden');
      res.appendChild(hdiv);
      res.appendChild(document.createTextNode('\n'));
      var rul = document.createElement('ul');
       rul.setAttribute('id',id);
       rul.setAttribute('class','cr-list');
       rul.style.display = 'none';
      res.appendChild(rul);
      res.appendChild(document.createTextNode('\n'));
    }
    var ul = document.getElementById(id);
    ul.appendChild(document.createTextNode('\n'));
    var li = document.createElement('li');
     li.appendChild(document.createTextNode(cidr[i].timestamp.replace(/T[\d:]*Z/,' ')));
     addlinkchild(li, wgScript + '?title=Special:Contributions/' + cidr[i].user, cidr[i].user);
     li.appendChild(document.createTextNode(' ('));
     addlinkchild(li, wgScript + '?title=User_talk:' + cidr[i].user, 'talk','','mw-mightexist');
     li.appendChild(document.createTextNode(') edited ('));
     addlinkchild(li, wgScript + '?title=-&curid=' + cidr[i].pageid + '&diff=' + cidr[i].revid , 'diff');
     li.appendChild(document.createTextNode(') '));
     addlinkchild(li, wgScript + '?title=-&curid=' + cidr[i].pageid, cidr[i].title);
     if(cidr[i].comment) li.appendChild(document.createTextNode(' (' + cidr[i].comment + ')'))
    ul.appendChild(li);
  }
 
  //continue?
  crMax = crMax - cidr.length;
  var prog = document.getElementById('prefixcontribs-prog');
  if(!obj['query-continue'] || !obj['query-continue']['usercontribs'] || !obj['query-continue']['usercontribs']['uccontinue']) {
    removeSpinner('prefixcontribs-spin');  
    prog.parentNode.removeChild(prog);
    prefixContribsNumerate();
    return;
  }
  var url = crContURI + '&uccontinue='+ obj['query-continue']['usercontribs']['uccontinue'];
  if(crMax <= 0 && queryString('crshowall') != 'true') {
    prog.appendChild(document.createTextNode(' Whoa! Finding a lot. To see them all click '));
    var ga = document.createElement('a');
     var gaurl = document.location.href;
     if(gaurl.indexOf('#') != -1) gaurl = gaurl.substr(0,gaurl.indexOf('#'))
     if(gaurl.indexOf('?') == -1) gaurl += '?'
     gaurl += '&crshowall=true';
     ga.setAttribute('href',gaurl);
     ga.appendChild(document.createTextNode('here'));
    prog.appendChild(ga);
    prog.appendChild(document.createTextNode('. (Warning: May bog down browser!)'));
    removeSpinner('prefixcontribs-spin');
    prefixContribsNumerate();
  } else {
    prog.appendChild(document.createTextNode('.'));
    mw.loader.load(url);
  }
}
 
function prefixContribsNumerate() {
  var lsts = getElementsByClassName(document,'ul','cr-list');
  for(var i=0;i<lsts.length;i++) {
    var dv = document.getElementById('d-' + lsts[i].getAttribute('id'));
    dv.appendChild(document.createTextNode(' ' + lsts[i].getElementsByTagName('li').length + ' found'));
  }
  if(lsts.length == 1) prefixContribsToggleDiv(lsts[0].id)
}
 
function prefixContribsToggleDiv(id,force) {
  if(!id) {
    var lsts = getElementsByClassName(document,'ul','cr-list');
    for(var i=0;i<lsts.length;i++) prefixContribsToggleDiv(lsts[i].id,true)
    return;
  }
  var i = document.getElementById(id);
  var m = document.getElementById('m-' + id);
  if(!i || !m) return
  if(i.style.display == 'none' || force) {
    i.style.display = 'block';
    m.className = 'cr-toggle-shown'
  } else {
    i.style.display = 'none';
    m.className = 'cr-toggle-hidden'
  }
}
 
function addlinkchild(obj,href,text,id,classes) {
  if(!obj || !href || !text) return false;
  var a = document.createElement('a');
  a.setAttribute('href',href);
  a.appendChild(document.createTextNode(text));
  if(id) a.setAttribute('id',id);
  if(classes) a.setAttribute('class',classes);
  obj.appendChild(a);
  return a;
}
 
function escapeID(txt) {
  var id = txt;
  id = id.replace(/ /g,'_');
  id = encodeURIComponent(id);
  id = id.replace(/\%3A/g,':');
  id = id.replace(/\%/g,'.');
  return id;
}
 
function queryString(p) {
  var re = RegExp('[&?#]' + p + '=([^&#]*)');
  var matches;
  if (matches = re.exec(document.location)) {
    try { 
      return decodeURI(matches[1]);
    } catch (e) {
    }
  }
  return null;
}