सदस्य:Shubhamkanodia/editrefs.js

मुक्त ज्ञानकोश विकिपीडिया से

सूचना: यह पृष्ठ सुरक्षित करने बाद, परिवर्तनों को देखने लिए ब्राउज़र का कैश ख़ाली करने की आवश्यकता हो सकती है।

  • मोज़िला / फ़ायरफ़ॉक्स / सफ़ारी: shift hold करें जब आप reload क्लिक करते है, या Ctrl-Shift-R (अपल मैक में Cmd-Shift-R) दबाएँ;
  • गूगल क्रोम: Ctrl-shift-R (मैक में Cmd-Shift-R) दबाएँ
  • इंटरनेट एक्सप्लोरर: Ctrl hold करें जब आप refresh क्लिक करते हैं, या Ctrl-F5 क्लिक करते हैं;
  • कॉङ्करर: सिर्फ़ Reload बटन पर क्लिक करें, या F5 क्लिक करें;
  • ऑपरा सदस्य को Tools→Preferences में सम्पूर्ण कैश ख़ाली करने की ज़रूरत हो सकती है।
//Author: [[en:User:Dr pda]]
//This function adds a link to the toolbox which, when clicked, searches the article for <ref></ref>
//tags and presents them in textboxes for ease of editing
//To use this function add importScript('User:Dr pda/editrefs.js'); //[[User:Dr pda/editrefs.js]] to your monobook.js
//
 function editRefs(){
  //Hide edit window
  var editform = document.getElementById('editform');
  editform.style.cssText += 'display:none';
 
  text = document.getElementById('wpTextbox1').value;
 
  //Hack to cope with HTML comments
  text = text.replace(/-->/g,"--@#%");
 
  // var refs = text.match(/<ref[^/]*\/ref>|<ref[^/]*\/>/g);
  refs = text.match(/<[Rr]ef(\s*name=[^\>]*)?>[^>]*<\/[Rr]ef>/g);
  text = text.replace(/--@#%/g,"-->");
 
  var output = document.createElement("ol");
  output.id = 'ref-edit-ol';
 
  if(refs != null){
    for (x=0; x<refs.length;x++){
      //Hack to cope with HTML comments
      refs[x] = refs[x].replace(/--@#%/g,"-->");
      var ref_textbox = document.createElement("textarea");
      ref_textbox.id = 'ref-box-'+x;
      var ref_li = document.createElement("li");
      ref_li.id = 'ref-li-'+x;
      ref_textbox.value = refs[x];
      var newlines = refs[x].match(/\n/g);
      var lines = (newlines == null) ? 1 : newlines.length+1;
      ref_textbox.rows = (lines > refs[x].length/70) ? lines : refs[x].length/70;
      ref_textbox.cols = 70;
      ref_textbox.style.cssText = 'display:block;';
      ref_li.appendChild(ref_textbox);
      output.appendChild(ref_li);
    }
  }
  else{
   var ref_li = document.createElement("li");
   ref_li.id = 'ref-li';
   ref_li.innerHTML = 'This article contains no &lt;ref&gt;&lt;/ref&gt; tags';
   output.appendChild(ref_li);
 }
  var dummy = document.getElementById("editform");
  dummy.parentNode.insertBefore(output, dummy);
 
  //Add buttons
  var update = document.createElement("input");
  update.id = 'ref-edit-update';
  update.value = 'Apply changes and preview';
  update.title = 'Apply changes and preview';
  update.type = 'button';
  update.onclick = updateRefs;
 
  var cancel = document.createElement("input");
  cancel.id = 'ref-edit-cancel';
  cancel.value = 'Cancel and return to edit';
  cancel.title = 'Cancel and return to edit';
  cancel.type = 'button';
  cancel.onclick = returnToEdit;
 
  var reset = document.createElement("input");
  reset.id = 'ref-edit-reset';
  reset.value = 'Reset fields';
  reset.title = 'Reset fields';
  reset.type = 'button';
  reset.onclick = resetRefs;
 
  if(refs != null){
    output.parentNode.insertBefore(update, output.nextSibling);
    update.parentNode.insertBefore(cancel, update.nextSibling);
    cancel.parentNode.insertBefore(reset,  cancel.nextSibling);
  }
  else{
    output.parentNode.insertBefore(cancel, output.nextSibling);
  }
 }
 
 function updateRefs(){
  var startIndex = -1;
 
  for (x=0; x<refs.length;x++){
    var newref = document.getElementById('ref-box-'+x).value;
 
    startIndex = text.indexOf(refs[x],startIndex);
    //Only update if changed
    if(refs[x] != newref){
     text = text.substring(-1,startIndex) + newref + text.substring(startIndex + refs[x].length);
    }
    startIndex = startIndex + newref.length;
  }
 
  var textbox = document.getElementById('wpTextbox1');
  textbox.value = text;
 
  //returnToEdit();
  document.getElementById('wpPreview').click();
 }
 
 function returnToEdit(){
 
  //Hide textboxes and buttons
  var output = document.getElementById('ref-edit-ol');
  output.parentNode.removeChild(output);
  var update = document.getElementById('ref-edit-update');
  if(update) update.parentNode.removeChild(update);
  var cancel = document.getElementById('ref-edit-cancel');
  if(cancel) cancel.parentNode.removeChild(cancel);
  var reset = document.getElementById('ref-edit-reset');
  if(reset) reset.parentNode.removeChild(reset);
 
  //Show edit window
  var editform = document.getElementById('editform');
  editform.style.cssText = '';
 
 }
 
 function resetRefs(){
  for (x=0; x<refs.length;x++){
    var ref_textbox = document.getElementById('ref-box-'+x);
    ref_textbox.value = refs[x];
   }
   function ER_addLink() {
        mw.util.addPortletLink('p-tb', 'javascript:editRefs()', 'Edit references', 't-edit-refs', 'Edit <ref></ref> tags', '', '');
    }
 if(document.forms.editform){
 	jQuery(document).ready(ER_addLink);
 }
   
 }