User:Jnothman/automod.js

//

/* 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

//