Jump to content

User:Saruoh/monobook.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// This javascript prevents carelessly submission (hitting Enter at summary field).
// To enable, copy and paste this script to a subpage of your user page.
// 2004-07-30: New feature: Replace Fullwidth comma (U+FF0C) to Ideographic comma (U+3001)
//                          and Fullwidth full stop (U+FF0E) to Ideographic full stop (U+3002)
//             If you don't need this feature, use the past version.

// This script is under public domain, and comes with ABSOLUTELY NO WARRANTY.
// You can use/modify/redistribute without any permission.

var submitchecker_buttonclicked = false;
var confirm_prompt = "Textarea contains “\uFF0C”(U+FF0C) and/or “\uFF0E”(U+FF0E).\nReplace them?";
var confirm_result = null;

function install_submitchecker() {
  var f = document.getElementById("editform");
  if(f) {
    var inputs = f.getElementsByTagName("input");
    for(var i = 0; i < inputs.length; ++i)
      if(inputs[i].type == "submit")
        inputs[i].onclick = submitchecker_nocheck;
    f.onsubmit = submitchecker;
  }
}
function submitchecker() {
  var edit = document.getElementById("editform").getElementsByTagName("textarea")[0];
  if(edit && /[\uFF0C\uFF0E]/.test(edit.value)) {
    var r;
    if(window.execScript) {
      window.execScript(
        "confirm_result = MsgBox(confirm_prompt,vbYesNoCancel)",
        "VBScript");
      if(confirm_result == 2) return false;
      r = (confirm_result == 6);
    } else {
      r = prompt(confirm_prompt, "yes");
      if(!r) return false;
      r = /^[yY]/.test(r);
    }
    if(r) {
      edit.value = edit.value.replace(/\uFF0C/g, '\u3001').replace(/\uFF0E/g, '\u3002');
    }
  }
  if(submitchecker_buttonclicked) return true;
  return confirm("Are you sure you want to submit your changes?");
}
function submitchecker_nocheck(e) {
  if(e && e.target) {
    var name = e.target.name;
    if(name != "wpSave" && name != "wpPreview") return true;
  }
  submitchecker_buttonclicked = true;
  return true;
}
if(window.attachEvent) window.attachEvent("onload", install_submitchecker);
else if(window.addEventListener) window.addEventListener("load", install_submitchecker, false);

// restore helper
function install_restore_helper() {
  var e, t, p, b;
  if(!(e = document.getElementById('undelete'))) return;
  if(!(t = e.getElementsByTagName('h2')[1])) return;
  p = document.createElement('p');
  b = document.createElement('button');
  b.setAttribute('type', 'button');
  b.onclick = restore_select_all;
  b.appendChild(document.createTextNode('Check all'));
  p.appendChild(b);
  p.appendChild(document.createTextNode(' '));
  b = document.createElement('button');
  b.setAttribute('type', 'button');
  b.onclick = restore_select_reverse;
  b.appendChild(document.createTextNode('Reverse checks'));
  p.appendChild(b);
  e.insertBefore(p, t.nextSibling);
}
function restore_select_all() {
  var e, i;
  if(!(e = document.getElementById('undelete'))) return;
  e = e.getElementsByTagName('input');
  for(i = 0; i < e.length; ++i)
    if(e[i].type == 'checkbox') e[i].checked = true;
  return false;
}
function restore_select_reverse() {
  var e, i;
  if(!(e = document.getElementById('undelete'))) return;
  e = e.getElementsByTagName('input');
  for(i = 0; i < e.length; ++i)
    if(e[i].type == 'checkbox') e[i].checked = !e[i].checked;
  return false;
}
if(window.attachEvent) window.attachEvent("onload", install_restore_helper);
else if(window.addEventListener) window.addEventListener("load", install_restore_helper, false);