User:Ilovesabbath/refToolbar ko.js

// en:User:Mr.Z-man/refToolbar (2009년 1월 9일 현재판) 의 한국어 번역판 // Korean translation of en:User:Mr.Z-man/refToolbar (2009-01-09)

var numforms = 0; var wikEdAutoUpdateUrl; function refbuttons { if (mwCustomEditButtons && document.getElementById('toolbar') ) { button = document.createElement('a'); button.href = "javascript:easyCiteMain"; button.title = "인용틀 넣기"; buttonimage = document.createElement('img'); buttonimage.src = "http://upload.wikimedia.org/wikipedia/commons/e/ea/Button_easy_cite.png"; buttonimage.alt = "인용틀 넣기"; button.appendChild(buttonimage); var toolbar = document.getElementById('toolbar'); if (navigator.userAgent.indexOf('MSIE') == -1) { if (toolbar.style != null) { toolbar.style.height = 'auto'; }     else { toolbar.setAttribute('style', 'margin-bottom: 6px; height: auto;'); }     toolbar.appendChild(button); citemain = document.createElement('div'); citemain.style.display = 'none'; citemain.style.margin = '0.2em 0 -0.2em 0'; citemain.setAttribute('Id', 'citeselect'); citemain.appendChild( addOption("citeWeb", "웹 인용") ); citemain.appendChild( addOption("citeNews", "뉴스 인용") ); citemain.appendChild( addOption("citeBook", "서적 인용") ); citemain.appendChild( addOption("citeJournal", "저널 인용") ); citemain.appendChild( addOption("citeNamedRef", "재인용") ); citemain.appendChild( addOption("dispErrors", "에러 체크") ); citemain.appendChild( addOption("hideInitial", "취소") ); toolbar.appendChild(citemain); }   else { toolbar.appendChild(button); selection = ' '+ ''+ ''+ ''+ ''+ ''+ ' '; document.getElementById('editform').innerHTML = selection + document.getElementById('editform').innerHTML; } } } function addOption(script, text) { option = document.createElement('input'); option.setAttribute('type', 'button'); option.setAttribute('onclick', script); option.setAttribute("value", text); return option; } function hideInitial { document.getElementById('citeselect').style.display = 'none'; oldFormHide; } function oldFormHide { if (numforms != 0) { document.getElementById('citediv'+numforms).style.display = 'none'; } if (document.getElementById('errorform') != null) { document.getElementById('citeselect').removeChild(document.getElementById('errorform')); } } function easyCiteMain { document.getElementById('citeselect').style.display = ''; } function getTime { var time = new Date; var nowdate = time.getUTCDate; if (nowdate<10) { nowdate = "0"+ nowdate.toString; } var nowmonth = time.getUTCMonth+1; if (nowmonth<10) { nowmonth = "0"+ nowmonth.toString; } var nowyear = time.getUTCFullYear; newtime = nowyear + '-' + nowmonth + '-' + nowdate; return (newtime); } function citeWeb { citeNewsWeb("웹 인용"); } function citeNews { citeNewsWeb("뉴스 인용"); } function citeNewsWeb(templatename) { oldFormHide; template = templatename; var legend; if (template == "웹 인용") { legend = "웹 인용 입력"; } else { legend = "뉴스 인용 입력"; } newtime = getTime; numforms++; form = ''+ ' '+legend+' '+ ' '+   ''+ ' ';  document.getElementById('citeselect').innerHTML += form; } function citeBook { oldFormHide; template = "서적 인용"; numforms++; form = ''+ ' 서적 인용 입력 '+ ' '+   ''+ ' ';  document.getElementById('citeselect').innerHTML += form; } function citeJournal { oldFormHide; template = "저널 인용"; numforms++; form = ''+ ' 저널 인용 입력 '+ ' '+   ''+ ' ';  document.getElementById('citeselect').innerHTML += form; } function addcites(template) { cites = document.getElementById('citediv'+numforms).getElementsByTagName('input'); var citebegin = '{{' + cites[i].value; } }  cite = citebegin + citename + citeinner + "}} "; insertTags(cite, , ); document.getElementById('citediv'+numforms).style.display = 'none'; } function getNamedRefs(calls) { if (typeof(wikEdUseWikEd) != 'undefined') { if (wikEdUseWikEd == true) { WikEdUpdateTextarea; } }  text = document.getElementById('wpTextbox1').value; var regex; if (calls) { regex = /< *?ref +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)) *?\/ *?>/gi //' } else { regex = /< *?ref +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)) *?>/gi //' } var namedrefs = new Array; var i=0; var nr=true; do { ref = regex.exec(text); if(ref != null){ if (ref[5]) { namedrefs[i] = ref[5]; } else if (ref[3]) { namedrefs[i] = ref[3]; } else { namedrefs[i] = ref[6]; }     i++; } else { nr=false; } } while (nr==true); return namedrefs; } function citeNamedRef { namedrefs = getNamedRefs(false); if (namedrefs == '') { oldFormHide; numforms++; out = ' '+ ' 재인용 입력 이 문서에는 이름 붙인 주석(&lt;ref name="Name"&gt;</tt>)이 없습니다 '; document.getElementById('citeselect').innerHTML += out; } else { oldFormHide; numforms++; form = '<div id="citediv'+numforms+'">'+ ' 재인용 입력 '+ ' '+     '<input type="button" value="Add citation" onClick="addnamedcite">'+ ' ';    document.getElementById('citeselect').innerHTML += form; } } function addnamedcite { name = document.getElementById('citediv'+numforms).getElementsByTagName('select')[0].value; ref = ' '; insertTags(ref, , ); document.getElementById('citediv'+numforms).style.display = 'none'; } function getAllRefs { if (typeof(wikEdUseWikEd) != 'undefined') { if (wikEdUseWikEd == true) { WikEdUpdateTextarea; } }  text = document.getElementById('wpTextbox1').value; regex = /< *?ref( +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)))? *?>((.|\n)*?)< *?\/? *?ref *?>/gim //" var allrefs = new Array;  var i=0;  var nr=true;  do {    ref = regex.exec(text);    if(ref != null){      if (ref[0].search(/[^\s]{150}/) != -1) {        ref[0] = ref[0].replace(/\|([^\s])/g, "| $1");      }      ref[0] = ref[0].replace(/</g, "&lt;");      ref[0] = ref[0].replace(/>/g, "&gt;");      allrefs[i] = ref[0];      i++;    } else {      nr=false;    }  } while (nr==true);  return allrefs; } function NRcallError(namedrefs, refname) {  for (var i=0; i<namedrefs.length; i++) {    if (namedrefs[i] == refname) {      return true;    }  }  return false; } function errorCheck {  var allrefs = getAllRefs;  var allrefscontent = new Array;  var samecontentexclude = new Array;  var sx=0;  var templateexclude = new Array;  var tx=0;  var skipcheck = false;  var namedrefcalls = getNamedRefs(true);  for (var i=0; i<allrefs.length; i++) {    allrefscontent[i] = allrefs[i].replace(/&lt; *?ref( +?name *?= *?(('([^']*?)')|("([^"]*?)")|([^'"\s]*?[^\/]\b)))? *?&gt;((.|\n)*?)&lt; *?\/? *?ref *?&gt;/gim, "$8"); //"  }  var namedrefs = getNamedRefs(false);  var errorlist = new Array;  var q=0;  unclosed = document.getElementById('unclosed').checked;  samecontent = document.getElementById('samecontent').checked;  templates = document.getElementById('templates').checked;  repeated = document.getElementById('repeated').checked;  undef = document.getElementById('undef').checked;  for (var i=0; i<allrefs.length; i++) {    if (allrefs[i].search(/&lt; *?\/ *?ref *?&gt;/) == -1 && unclosed) {      errorlist[q] = ' <td width="75%"><tt>'+allrefs[i]+'</tt> ';      errorlist[q] += '<td width="25%">닫혀있지 않은 <tt>&lt;ref&gt;</tt> 태그가 있습니다  ';      q++;    }    if (samecontent) {      for (var d=0; d<samecontentexclude.length; d++) {        if (allrefscontent[i] == samecontentexclude[d]) {          skipcheck = true;        }      }      var p=0;      while (p<allrefs.length && !skipcheck) { if (allrefscontent[i] == allrefscontent[p] && i != p) { errorlist[q] = ' <td width="75%"><tt>'+allrefscontent[i]+'</tt> '; errorlist[q] += '<td width="25%">같은 내용의 주석들은 같은 이름을 사용하여 재인용해야 합니다. <a href="http://ko.wikipedia.org/wiki/위키백과:출처_밝히기">출처 밝히기</a>를 참고하세요 '; q++; samecontentexclude[sx] = allrefscontent[i] sx++; break; }       p++; }    skipcheck=false; }   if (templates) { if (allrefscontent[i].search(/인용\|/i) == -1 && allrefscontent[i].search(/인용 \|/i) == -1 && allrefscontent[i].search(/\{\{citation/i) == -1 && allrefscontent[i].search(/\{\{Comic (book|strip) reference/i) == -1 && allrefscontent[i].search(/\{\{Editorial cartoon reference/i) == -1 && allrefscontent[i].search(/\{\{harv/i) == -1) { for (var x=0; x<templateexclude.length; x++) { if (allrefscontent[i] == templateexclude[x]) { skipcheck = true; }       }        if (!skipcheck) { errorlist[q] = ' <td width="75%"><tt>'+allrefs[i]+'</tt> '; errorlist[q] += '<td width="25%"><a href="http://ko.wikipedia.org/wiki/틀:인용">인용틀</a>을 사용하지 않은 주석이 있습니다 '; q++; templateexclude[tx] = allrefscontent[i]; tx++; }       skipcheck = false; }   }  }  if (repeated) { var repeatnameexclude = new Array; var rx=0; for (var k=0; k<namedrefs.length; k++) { for (var d=0; d<repeatnameexclude.length; d++) { if (namedrefs[k] == repeatnameexclude[d]) { skipcheck = true; }     }      var z=0; while (z<namedrefs.length && !skipcheck) { if (namedrefs[k] == namedrefs[z] && k != z) { errorlist[q] = ' <td width="75%"><tt>'+namedrefs[k]+'</tt> '; errorlist[q] += '<td width="25%">같은 이름을 갖고 있지만 서로 다른 내용의 주석이 있습니다. <a href="http://ko.wikipedia.org/wiki/위키백과:출처_밝히기">출처 밝히기</a>를 참고하세요 '; q++; repeatnameexclude[rx] = namedrefs[z]; rx++; break; }       z++; }    skipcheck = false; } }  if (undef) { var undefexclude = new Array; var ux=0; for (var p=0; p<namedrefcalls.length; p++) { for (var d=0; d<undefexclude.length; d++) { if (allrefscontent[i] == undefexclude[d]) { skipcheck = true; }     }      if (!skipcheck) { if (!NRcallError(namedrefs, namedrefcalls[p])) { errorlist[q] = ' <td width="75%"><tt>'+namedrefcalls[p]+'</tt> '; errorlist[q] += '<td width="25%">정의되지 않은 이름으로 재인용했습니다. <a href="http://ko.wikipedia.org/wiki/위키백과:출처_밝히기">출처 밝히기</a>를 참고하세요 '; q++; undefexclude[ux] = namedrefs[p]; ux++; }     }      skipcheck = false; } } if (q > 0) { return errorlist; } else { return 0; } } function dispErrors { oldFormHide; form = ' '+ ' 에러 체크 '+ '다음 사항을 체크합니다: '+ '<input type="checkbox" id="unclosed" /> 닫혀있지 않은 <tt>&lt;ref&gt;</tt> 태그 '+ '<input type="checkbox" id="samecontent" /> 같은 내용을 담고 있는 주석 '+ '<input type="checkbox" id="templates" /> <a href="http://ko.wikipedia.org/wiki/틀:인용">인용틀</a>을 사용하지 않은 주석 '+ '<input type="checkbox" id="repeated" /> 같은 이름의 다른 주석 '+ '<input type="checkbox" id="undef" /> 없는 이름으로 재인용한 주석 '+ '<input type="button" id="errorchecksubmit" value="체크 시작" onclick="doErrorCheck"/>'+ ' '; document.getElementById('citeselect').innerHTML += form; } function doErrorCheck { var errors = errorCheck; document.getElementById('citeselect').removeChild(document.getElementById('errorform')); if (errors == 0) { if (numforms != 0) { document.getElementById('citediv'+numforms).style.display = 'none'; }   numforms++; out = '<div id="citediv'+numforms+'"> '+ ' 에러 체크 에러가 발견되지 않았습니다 '; document.getElementById('citeselect').innerHTML += out; } else { if (numforms != 0) { document.getElementById('citediv'+numforms).style.display = 'none'; }   numforms++; form = '<div id="citediv'+numforms+'">'+ ' 에러 체크 '+ ' '+     ' ';     document.getElementById('citeselect').innerHTML += form; } } hookEvent("load", refbuttons);