User:Splarka/timestamplocalizer.js

// var autoLocalTimeStamps = false; // importScript('User:Splarka/timestamplocalizer.js');

// -- // START Timestamp localizer by Splarka (experimental) // -- // This crazy script iterates over all text nodes in the // content area and attempts to switch signature-generated // UTC timestamps with a version in your local time.

addOnloadHook(function { if(mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') return //DO NOT WANT  if(window.autoLocalTimeStamps=='true') {    //autoload    localTimeStamps;  } else {    //give a button instead    mw.util.addPortletLink('p-cactions','javascript:localTimeStamps','Localize timestamps','ca-local','This will attempt to convert all timestamps on the page to your local time');  } });

function localTimeStamps { findTextNodes(changeTimeStamp,document.getElementById('bodyContent')); }

function changeTimeStamp(obj) { var pattern = /\d\d\:\d\d\, \d{1,2} \w{1,30} \d{4} \(UTC\)/; while(obj.nodeValue.search(pattern)!=-1) { var dat = ''+ obj.nodeValue.match(pattern); var hour = '' + dat.match(/\d\d\:\d\d\, /) hour = hour.replace(/\,/,''); dat = dat.replace(/\d\d\:\d\d\, /,''); dat = dat.replace(/ \(UTC\)/,' '+ hour + ' UTC'); var ts = new Date(dat); ts.setTime(ts.getTime); obj.nodeValue = obj.nodeValue.replace(pattern,ts.toString); } }

// General text-node finder/magic/functioner // * iterates over childnodes of obj // * if obj is text, perform func on it // * if obj has childnodes, call self recursively function findTextNodes(func,obj) { if (obj.nodeType == 3) { func(obj); } var i=0; while(obj.childNodes[i]) { findTextNodes(func,obj.childNodes[i]); i++; } }

// -- // END Timestamp localizer // --