MediaWiki:Common.js

From Encyclopedia of Scientonomy
Revision as of 02:38, 2 March 2018 by Hakob Barseghyan (talk | contribs) (Created page with "→‎Any JavaScript here will be loaded for all users on every page load.: function setSFDefaults() { if (document.getElementById('sfdefaults') != null) { // detect span...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* Any JavaScript here will be loaded for all users on every page load. */

function setSFDefaults() {
 
  if (document.getElementById('sfdefaults') != null) {  // detect span 
 
    var divs = document.getElementById('sfdefaults').getElementsByTagName('div');
 
    var inputs = document.getElementsByTagName('input');
    var selects = document.getElementsByTagName('select');
    var textareas = document.getElementsByTagName('textarea');
 
    var dates = new Array();
 
    for (i = 0; i < divs.length; ++i) {
 
      if (divs[i].className.match(/sfdefault/i) != null) {
 
        var defName = divs[i].title;
        var defValue = divs[i].innerHTML;
        var defPreserve = (divs[i].className.match(/preserve/i) != null);
 
        for (k = 0; k < inputs.length; ++k) {
 
          if ( inputs[k].type.toLowerCase()=='radio' ) {
 
            if (inputs[k].name == defName && inputs[k].value == defValue)  // radiobutton
              inputs[k].checked = (inputs[k].value == defValue);
 
          } else if ( inputs[k].type.toLowerCase()=='checkbox' ) {
 
            if ((inputs[k].name.indexOf( defName ) == 0 && inputs[k].value == defValue) ||  // checkboxes
                (inputs[k].name == defName + "[value]") ||                                  // checkbox
                (inputs[k].name == defName) )                        // std:minor, std:watch
              inputs[k].checked = true;
 
          } else if ( inputs[k].name == defName ) {
 
            var isPartOfDate = (inputs[k].name.match(/.+\[.+\]\[(year|hour|minute|second|timezone)\]/) != null)
            var isDateToSet = false;
 
            if (isPartOfDate) {  
              var toFind = inputs[k].name.replace(/(.+\[.+\])\[(year|hour|minute|second|timezone)\]/,'$1');
              for (l=0; l < dates.length; ++l)
                isDateToSet = (isDateToSet || (dates[l] == toFind));
              //alert(inputs[k].name + " is part of date: " + isDateToSet + "; to find: " + toFind);
            }
 
            if ( (isPartOfDate && isDateToSet) || (!isPartOfDate && (inputs[k].value == "" || !defPreserve))) {
 
              inputs[k].value = defValue;
 
              if (inputs[k].name.match(/.+\[.+\]\[day\]$/)) {
                dates.push(inputs[k].name.replace(/(.+\[.+\])\[day\]$/, '$1'));
                //alert("Pushed " + inputs[k].name.replace(/(.+\[.+\])\[day\]$/, '$1'));
              }
            }
 
          }
 
        }
 
        for (k = 0; k < selects.length; ++k) {
 
          if ( selects[k].name == defName ) {    // text w/ values
 
            var isPartOfDate = (selects[k].name.match(/.+\[.+\]\[(month|ampm24h)\]/) != null)
            var isDateToSet = false;
 
            if (isPartOfDate) {  
              var toFind = selects[k].name.replace(/(.+\[.+\])\[(month|ampm24h)\]/,'$1')
              for (l=0; l < dates.length; ++l)
                isDateToSet = (isDateToSet || (dates[l] == toFind));
              //alert(selects[k].name + " is part of date: " + isDateToSet);
            }
 
            var defSelected = false;
            defSelected = false;
 
            if (!isDateToSet && defPreserve ) {
              var options = selects[k].getElementsByTagName('option');
              for (l = 0; ((l < options.length) && !defSelected); ++l)
                defSelected = (defSelected || options[l].defaultSelected);
            }
 
            if ((isPartOfDate && isDateToSet) || (!isPartOfDate && !defSelected))
              for (l = 0; l < selects[k].options.length; ++l)
                if (selects[k].options[l].value==defValue) selects[k].options[l].selected = true;
 
          } else if (selects[k].name == defName + "[]" && selects[k].multiple) {  // listbox
 
            for (l = 0; l < selects[k].options.length; ++l)
              if (selects[k].options[l].value==defValue) selects[k].options[l].selected = true;
 
          }
        }
 
        for (k = 0; k < textareas.length; ++k)
          if ( textareas[k].name==defName  && ( textareas[k].innerHTML == "" || !defPreserve) ) // textarea, std:free text
            textareas[k].innerHTML=defValue;
 
      }
    }
  }
}
 
if (wgPageName == 'Special:AddData') addOnloadHook(setSFDefaults);