Jump to content

User:Jnothman/automod.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
//<pre>

/* Edits a page according to parameters passed in the URL.
   e.g. http://en.wikipedia.org/w/index.php?title=Foo&action=edit&amaddbefore=My+text&amsummary=Adding+My+text
        will add the words "My text" at the start of the Foo article (on a new line),
        with the given edit summary.
   Other parameters include:
    - amaddafter - adds text at the end of the article
    - amatstring - makes amaddafter/before add after/before the first occurrence of the given string
    - amclear    - clears the article before adding text
    - amfind and amreplace - replaces all occurrences of the find string by the replace string
*/

if ((typeof auto_mod_loaded == 'undefined')
    || !auto_mod_loaded) {
auto_mod_loaded = true;
auto_mod_exectd = false;

function am_make_url(title, before, after, summary) {
    return 'http://en.wikipedia.org/w/index.php?title='+escape(title)+
        '&action=edit'+
        '&amaddbefore='+escape(before)+'&amaddafter='+escape(after)+
        '&amsummary='+escape(summary);
}

function am_get_title() {
    //Avoids problems with &amp; etc, but will also include ' - edit this page', etc
    return document.title.substr(0, document.title.lastIndexOf(' - Wikipedia, the free'));
}

function am_tidy_title()
{
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));
  return unescape(editlk);
}

function am_get_query_vars(){ 
     var res = new Array();
     var pairs = location.search.substring(1).split("&"); 
     for(var i=0; i < pairs.length; i++){ 
         var pair = pairs[i].split("=");
         res[unescape(pair[0])] = unescape(pair[1]).replace(/\+/g, ' ');
     } 
     return  res; 
}

function am_add_li(portlet, url, text, id, title) {
    var tabs = document.getElementById('p-'+portlet).getElementsByTagName('ul')[0]
    var na = document.createElement('a');
    na.href = url;
    na.id = id;
    na.appendChild(document.createTextNode(text));
    if (title)
       na.title = title;
    var li = document.createElement('li');
    if (id)
       li.id = id;
    li.appendChild(na);
    tabs.appendChild(li);
    return li;
}

function am_guess_date() {
    var monthnames = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    var today = new Date();
    return today.getUTCFullYear() + ' ' + monthnames[today.getUTCMonth()] + ' ' + today.getUTCDate();
}

function am_edit_string(s, insertion, loc) {
    return s.substring(0, loc) + insertion + s.substring(loc);
}

function auto_mod() {
    if (auto_mod_exectd)
        return false;
    auto_mod_exectd = true;
    qvars = am_get_query_vars();
    if (qvars['action']=='edit') {
      if (qvars['amnull']) {
        document.getElementById('editform').submit();
        return true;
      }
      if (qvars['amaddafter'] || qvars['amaddbefore'] || qvars['amreplace']) {
        var summ_el = document.getElementById('wpSummary');
        if (summ_el.value != '' && summ_el.value.substr(summ_el.value.length - 3, 3) != '*/ ') {
            // have already added summary
            return true;
        }
        var text = document.getElementById('wpTextbox1');
        if (qvars['amclear'])
            text.value = '';
        if (qvars['amfind'] && qvars['amreplace'])
            text.value = text.value.replace(new RegExp(qvars['amfind'], "g"), qvars['amreplace']);
        if (qvars['amaddafter']) {
            var loc = text.value.length;
            if (qvars['amatstring']) {
                var newloc = text.value.indexOf(qvars['amatstring']);
                if (newloc > -1) {
                    loc = newloc + qvars['amatstring'].length;
                }
            }

            var toadd = qvars['amaddafter'];
            if ((loc == text.value.length && text.value.charAt(loc - 1) != '\n') || '\n\r'.indexOf(text.value.charAt(loc)) > -1)
                toadd = '\n' + toadd;
            text.value = am_edit_string(text.value, toadd, loc);
        }
        if (qvars['amaddbefore']) {
            var loc = 0;
            if (qvars['amatstring']) {
                var newloc = text.value.indexOf(qvars['amatstring']);
                if (newloc > -1) {
                    loc = newloc;
                }
            }

            var toadd = qvars['amaddbefore'];
            if ((loc == 0 && text.value.charAt(loc) != '\n') || '\n\r'.indexOf(text.value.charAt(loc - 1)) > -1)
                toadd += '\n';
            text.value = am_edit_string(text.value, toadd, loc);
        }
        summ_el.value += (qvars['amsummary'] || ' ');
        document.getElementById('editform').submit();
      }
      return true;
    }
    return false;
}

function am_add_onload(f) {
  // borrowed from [[WP:US]]
  if (window.addEventListener) window.addEventListener("load",f,false);
  else if (window.attachEvent) window.attachEvent("onload",f);
}


} // end if auto_mod_loaded

//</pre>