User:Saruoh/monobook.js

From Wikipedia, the free encyclopedia

If a message on your talk page led you here, please be wary of who left it. The code below could contain malicious content capable of compromising your account; if your account appears to be compromised, it will be blocked. If you are unsure whether the code is safe, you can ask at the appropriate village pump.
Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.
// 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);