|
|
Line 1: |
Line 1: |
| /* <nowiki> */
| |
|
| |
|
| /**
| |
| * Extra tabs for monobook skin
| |
| * Forked from [[User:ABCD/monobook.js]] around April 2005
| |
| * Dual licensed under the GFDL and GPL
| |
| * See also: [[User:JesseW/monobook.js]]
| |
| */
| |
|
| |
| /**** Initialise on window load ****/
| |
|
| |
| if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);
| |
| else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);
| |
| else
| |
| {
| |
| window.previousLoadFunction = window.onload;
| |
| window.onload = function()
| |
| {
| |
| window.previousLoadFunction();
| |
| myLoadFuncs();
| |
| }
| |
| }
| |
|
| |
| /**** Load custom functions ****/
| |
|
| |
| function myLoadFuncs()
| |
| {
| |
| // &action=purge
| |
| addPurge();
| |
| // §ion=0
| |
| addEditSection0();
| |
| // cause the personal menu looks bad
| |
| changeLinks();
| |
| // because edit summaries are good
| |
| addForceSummary();
| |
| // if this is VFD, add the show/hide thingies
| |
| if(document.title.indexOf("Wikipedia:Votes for deletion") != -1 && document.title.indexOf("Editing ") != 0) vfdlinks();
| |
| // now add a million extra tabs
| |
| morelinks();
| |
| // and some stuff for the sidebar
| |
| addToolBoxLinks();
| |
| // for admins only...
| |
| // if(document.title.indexOf("Confirm delete - Delete") == 0) addVfdLink();
| |
| // change the title of the edit link
| |
| ta['ca-edit'] = ['e', 'Edit page'];
| |
| // re-render the title and accesskeys for stuff
| |
| akeytt();
| |
| }
| |
|
| |
| /**** Extra tab adding ****/
| |
|
| |
| function addEditSection0()
| |
| {
| |
| ta['ca-edit-0'] = ['', 'Edit the zeroth section of this page'];
| |
| if(!document.getElementById) return;
| |
| var x = document.getElementById('ca-edit');
| |
| if(!x) return;
| |
| var y = document.createElement('LI');
| |
| y.id = 'ca-edit-0';
| |
| if(x.className == 'selected'){
| |
| if(/&action=edit§ion=0$/.test(window.location.href)){
| |
| x.className = 'istalk';
| |
| y.className = 'selected';
| |
| } else {
| |
| x.className = 'selected istalk';
| |
| }
| |
| } else if(x.className == 'selected istalk'){
| |
| if(/&action=edit§ion=0$/.test(window.location.href)){
| |
| x.className = 'istalk';
| |
| y.className = 'selected istalk';
| |
| } else {
| |
| y.className = 'istalk';
| |
| }
| |
| } else {
| |
| y.className = x.className;
| |
| x.className = 'istalk';
| |
| }
| |
| var z = document.createElement('A');
| |
| if(x.children){
| |
| z.href = x.children[0].href + '§ion=0';
| |
| z.appendChild(document.createTextNode('0'));
| |
| y.appendChild(z);
| |
| document.getElementById('p-cactions').children[1].insertBefore(y,x.nextSibling);
| |
| }else{
| |
| z.href = x.childNodes[0].href + '§ion=0';
| |
| z.appendChild(document.createTextNode('0'));
| |
| y.appendChild(z);
| |
| document.getElementById('p-cactions').childNodes[3].insertBefore(y,x.nextSibling);
| |
| }
| |
| }
| |
|
| |
| function addlilink(tabs, url, name, id){
| |
| var na = document.createElement('a');
| |
| na.href = url;
| |
| na.appendChild(document.createTextNode(name));
| |
| var li = document.createElement('li');
| |
| li.id = id;
| |
| li.appendChild(na);
| |
| tabs.appendChild(li);
| |
| return li;
| |
| }
| |
|
| |
| function addlimenu(tabs, name, id)
| |
| {
| |
| var na = document.createElement('a');
| |
| na.href = '';
| |
| var mn = document.createElement('ul');
| |
| na.appendChild(document.createTextNode(name));
| |
| var li = document.createElement('li');
| |
| li.id = id;
| |
| li.className = 'tabmenu';
| |
| li.appendChild(na);
| |
| li.appendChild(mn);
| |
| tabs.appendChild(li);
| |
| return li;
| |
| }
| |
|
| |
| function addPurge()
| |
| {
| |
| ta['ca-purge'] = ['g', 'Purge the internal cache for this page'];
| |
| if(!document.getElementById) return;
| |
| var x = document.getElementById('ca-history');
| |
| var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
| |
| if(!x) return;
| |
| if(x.children) x = x.children[0];
| |
| else x = x.childNodes[0];
| |
| addlilink(tabs, x.href.replace(/=history/, "=purge"), 'purge', 'ca-purge');
| |
| }
| |
|
| |
| function closevfd(bold, notbold)
| |
| {
| |
| var txt = document.editform.wpTextbox1;
| |
| txt.value = "{{subst:vt}} '''" + bold + "'''" + notbold + ". – ~~~~\n" + txt.value + "\n{{subst:vb}}\n";
| |
| txt = document.editform.wpSummary;
| |
| txt.value = "close discussion: " + bold + notbold;
| |
| document.editform.wpWatchthis.checked = false;
| |
| }
| |
|
| |
| function editSummary()
| |
| {
| |
| var txt = document.editform.wpTextbox1;
| |
| document.editform.wpSummary.value = 'Edit summary';
| |
| if(txt.value.length > 0) txt.value += '\n';
| |
| txt.value += '{{subst:edit summary}} ~~~~';
| |
| txt.focus();
| |
| }
| |
|
| |
| function startThread()
| |
| {
| |
| var txt = document.editform.wpTextbox1;
| |
| var which = prompt("Thread number?");
| |
| var now = new Date();
| |
| if(which < 10) which = '0' + which;
| |
| var timestamp = now.getUTCFullYear() + '';
| |
| now.getUTCMonth() < 9 ? timestamp += '0' + (now.getUTCMonth() + 1) : timestamp += (now.getUTCMonth() + 1);
| |
| now.getUTCDate() < 10 ? timestamp += '0' + now.getUTCDate() : timestamp += now.getUTCDate();
| |
| txt.value += '\n{{User talk:Alphax/' + timestamp + '-' + which + '}}';
| |
| document.editform.wpSummary.value = 'new thread';
| |
| }
| |
|
| |
| function welcomeMessage()
| |
| {
| |
| document.editform.wpSummary.value = 'Welcome to Wikipedia!';
| |
| var txt = document.editform.wpTextbox1;
| |
| if(txt.value.length > 0) txt.value += '\n';
| |
| txt.value += '{{subst:User:Alphax/Welcome}} ~~~~';
| |
| txt.focus();
| |
| }
| |
|
| |
| function anonWelcome()
| |
| {
| |
| document.editform.wpSummary.value = 'Create an account!';
| |
| var txt = document.editform.wpTextbox1;
| |
| if(txt.value.length > 0) txt.value += '\n';
| |
| txt.value += '{{subst:anon}} Thanks, ~~~~';
| |
| txt.focus();
| |
| }
| |
|
| |
| function replace()
| |
| {
| |
| var s = prompt("Search regexp?");
| |
| if(s){
| |
| var r = prompt("Replace regexp?");
| |
| var txt = document.editform.wpTextbox1;
| |
| txt.value = txt.value.replace(new RegExp(s, "g"), r);
| |
| }
| |
| }
| |
|
| |
| function vfdresult()
| |
| {
| |
| var res = prompt("Result?");
| |
| var vfddate = prompt("Nomination date?");
| |
| if(!res) return;
| |
| document.editform.wpSummary.value = 'VFD result - ' + res.replace(/'/g, '');
| |
| var txt = document.editform.wpTextbox1;
| |
| if(txt.value.length > 0) txt.value += '\n';
| |
| txt.value += '==VFD==\nOn [[' + vfddate + ']] [[{{subst:CURRENTYEAR}}]], this article was nominated for deletion. The result was ' + res + '. See [[Wikipedia:Votes for deletion/{{subst:PAGENAME}}]] for a record of the discussion. – ~~~~';
| |
| txt.focus();
| |
| }
| |
|
| |
| function hidevfd()
| |
| {
| |
| var divs = document.getElementsByTagName("div");
| |
| for(var x = 0; x < divs.length; ++x)
| |
| if(divs[x].className.indexOf("vfd") != -1)
| |
| divs[x].style.display = "none";
| |
| document.getElementById('footer').style.display = 'none';
| |
| }
| |
|
| |
| function showvfd()
| |
| {
| |
| var divs = document.getElementsByTagName("div");
| |
| for(var x = 0; x < divs.length; ++x)
| |
| if(divs[x].className.indexOf("vfd") != -1)
| |
| divs[x].style.display = "";
| |
| document.getElementById('footer').style.display = '';
| |
| }
| |
|
| |
| function vfdlinks()
| |
| {
| |
| if(!document.getElementById) return;
| |
| var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
| |
| addlilink(tabs, 'javascript:hidevfd()', 'hide closed', 'ca-hide');
| |
| ta['ca-hide'] = ['', 'Hide closed VFDs'];
| |
| addlilink(tabs, 'javascript:showvfd()', 'show closed', 'ca-show');
| |
| ta['ca-show'] = ['', 'Show closed VFDs'];
| |
| }
| |
|
| |
| function changeLinks()
| |
| {
| |
| if(!document.getElementById) return;
| |
| // remove the "my" bits
| |
| document.getElementById('pt-mytalk').firstChild.innerHTML = 'talk';
| |
| document.getElementById('pt-watchlist').firstChild.innerHTML = 'watchlist';
| |
| document.getElementById('pt-mycontris').firstChild.innerHTML = 'contributions';
| |
| if(document.getElementById('ca-edit'))
| |
| document.getElementById('ca-edit').firstChild.innerHTML = 'Edit';
| |
| // add a clock
| |
| var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0];
| |
| addlilink(toplinks, '', '', 'utcdate');
| |
| showtime();
| |
| }
| |
|
| |
| function addForceSummary(){
| |
| if(!/&action=edit/.test(window.location.href)) return;
| |
| if(/§ion=new/.test(window.location.href)) return;
| |
| if(!document.forms.editform) return;
| |
| document.forms.editform.wpSave.onclick = forceSummary;
| |
| }
| |
|
| |
| function forceSummary(){
| |
| if(!document.forms.editform.wpSummary.value.replace(/^(?:\/\\*.*\\*\/)? *(.*) *$/,'$1')){
| |
| var r = prompt('Are you sure you want to submit without adding a summary?\nTo add a summary, type it in the box below:',document.forms.editform.wpSummary.value);
| |
| if(r == null) return false;
| |
| document.forms.editform.wpSummary.value = r;
| |
| }
| |
| return true;
| |
| }
| |
|
| |
| function vfddelete(){
| |
| var form = document.forms.deleteconfirm;
| |
| form.wpReason.value = '[[Wikipedia:Votes for deletion/' + unescape(window.location.href.replace(/^.*\?title=([^&]+)&action=delete.*$/, '$1').replace(/_/g, ' ')) + ']]';
| |
| form.wpConfirm.checked = true;
| |
| }
| |
|
| |
| function morelinks(){
| |
| var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
| |
| if(document.title.indexOf("Editing Wikipedia:Votes for deletion") == 0)
| |
| {
| |
| addlimenu(tabs, 'vfd actions', 'vfda');
| |
| var vfda = document.getElementById('vfda').getElementsByTagName('ul')[0];
| |
| addlilink(vfda, 'javascript:closevfd("keep", "")', 'keep', '');
| |
| addlilink(vfda, 'javascript:closevfd("merge and redirect", " to [[" + prompt("Merge and redirect to?") + "]]")', 'merge', '');
| |
| addlilink(vfda, 'javascript:closevfd("redirect", " to [[" + prompt("Redirect to?") + "]]")', 'redir', '');
| |
| addlilink(vfda, 'javascript:closevfd("transwiki", " to " + prompt("Transwiki to?"))', 'trans', '');
| |
| addlilink(vfda, 'javascript:closevfd("transwiki", " to Wiktionary")', 'wikt', '');
| |
| addlilink(vfda, 'javascript:closevfd("speedy delete", "")', 'speedy', '');
| |
| addlilink(vfda, 'javascript:closevfd("delete", "")', 'del', '');
| |
| addlilink(vfda, 'javascript:closevfd(prompt("Result?"), "")', 'other', '');
| |
| addlilink(tabs, 'javascript:replace()', 'replace', '');
| |
| }
| |
| else if(document.title.indexOf("Confirm delete - Delete") == 0)
| |
| {
| |
| addlilink(tabs, 'javascript:vfddelete()', 'vfd', '');
| |
| }
| |
| else if(document.title.indexOf("Editing User talk:") == 0)
| |
| {
| |
| addlilink(tabs, 'javascript:replace()', 'replace', '');
| |
| addlimenu(tabs, 'talk messages', 'talkm');
| |
| var talkm = document.getElementById('talkm').getElementsByTagName('ul')[0];
| |
| addlilink(talkm, 'javascript:welcomeMessage()', 'welcome', '');
| |
| addlilink(talkm, 'javascript:anonWelcome()', 'anon', '');
| |
| addlilink(talkm, 'javascript:startThread()', 'thread', '');
| |
| addlilink(talkm, 'javascript:editSummary()', 'summary', '');
| |
| }
| |
| else if(document.title.indexOf("Editing ") == 0)
| |
| {
| |
| addlilink(tabs, 'javascript:replace()', 'replace', '');
| |
| addlilink(tabs, 'javascript:vfdresult()', 'vfd result', '');
| |
| }
| |
|
| |
|
| |
| }
| |
|
| |
| function addToolBoxLinks()
| |
| {
| |
| var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];
| |
| addlilink(tb, '/wiki/Special:Newpages', 'New pages', '');
| |
| addlilink(tb, '/wiki/Special:Shortpages', 'Short pages', '');
| |
| addlilink(tb, '/wiki/Special:Log', 'Logs', '');
| |
| addlilink(tb, '/wiki/Template:Deletiontools', 'Deletion tools', '');
| |
| addlilink(tb, '/wiki/Wikipedia:Disambiguation_pages_with_links', 'Dab list', '');
| |
| addlilink(tb, '/wiki/Wikipedia:Template_messages/User_talk_namespace', 'Talk messages', '');
| |
| addlilink(tb, '/wiki/User_talk:Alphax/special', 'Special characters', '');
| |
| addlilink(tb, '/wiki/WP:ICT', 'Image Copyright tags', '');
| |
| }
| |
|
| |
| function showtime()
| |
| {
| |
| var timerID;
| |
| var now = new Date();
| |
| var timeValue = now.toUTCString().replace(/GMT/, "UTC");
| |
| document.getElementById('utcdate').firstChild.innerHTML = timeValue;
| |
| timerID = setTimeout('showtime()', 100);
| |
| }
| |
|
| |
|
| |
| // Returns <li><a href="url">name</a></li>
| |
| function addlilink(url, name)
| |
| {
| |
| var na = document.createElement('a');
| |
| na.setAttribute('href', url);
| |
|
| |
| var txt = document.createTextNode(name);
| |
| na.appendChild(txt);
| |
|
| |
| var li = document.createElement('li');
| |
| li.appendChild(na);
| |
| return li;
| |
| }
| |
|
| |
| // Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&faketarget=username" is present.
| |
| function do_blockip_stuff()
| |
| {
| |
| // focus on Reason field
| |
| document.getElementsByName('wpBlockReason')[0].focus();
| |
|
| |
| // Look for a &faketarget= for the username/ip
| |
| var l = location.search.substring(1).split('&');
| |
| var target = '';
| |
| for (var i = 0; i < l.length; ++i)
| |
| {
| |
| var n = l[i].indexOf('=');
| |
| if (l[i].substring(0, n) == 'faketarget')
| |
| {
| |
| target = l[i].substring(n + 1);
| |
| break;
| |
| }
| |
| }
| |
|
| |
| if (target == '')
| |
| return;
| |
|
| |
| // put account name in "IP Address/username" field
| |
| var addr = document.getElementsByName('wpBlockAddress')[0];
| |
| addr.value = unescape(target);
| |
|
| |
| // add "blocklog" tab
| |
| var c1 = document.getElementById('column-one');
| |
| var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
| |
| tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target, 'blocklog'));
| |
| }
| |
|
| |
| // Opens the block log in the current window, and Special:Blockip in a popup.
| |
| // Width, height, top, and left are chosen for a 1600x1200 display.
| |
| //function blockpage_and_log(target)
| |
| //{
| |
| // window.open('Special_Blockip.html?foo=blarg&faketarget=' + target, 'Block', 'width=1600,height=600,top=600,left=0');
| |
| // document.location.href = 'http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target;
| |
| //}
| |
|
| |
| // Adds "block" and "blocklog" tabs to User: and User talk: pages.
| |
| function add_block_tab()
| |
| {
| |
| var c1 = document.getElementById('column-one');
| |
| var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
| |
|
| |
| // use the "edit this page" tab to get already-tidied url
| |
| var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
| |
| // cut everything up to "title=" from the start and everything past "&action=edit" from the end
| |
| editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));
| |
| editlk = editlk.substring(editlk.indexOf(':') + 1);
| |
| var slloc = editlk.indexOf('/');
| |
| if (slloc > 0)
| |
| editlk = editlk.substring(0, slloc);
| |
|
| |
| // add "block" tab
| |
| tabs.appendChild(addlilink('/w/index.php?title=Special%3ABlockip&faketarget=' + editlk, 'block'));
| |
|
| |
| // To open the block page and block log simultaneously, replace the above line with:
| |
| // tabs.appendChild(addlilink('javascript:blockpage_and_log("' + editlk + '")', 'Block'));
| |
| // and uncomment the blockpage_and_log() function above.
| |
|
| |
| // add "blocklog" tab
| |
| tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + editlk, 'blocklog'));
| |
|
| |
| //add "contributions" tab
| |
| tabs.appendChild(addlilink('/w/wiki.phtml?title=Special:Contributions&target=User%3A' + editlk, 'contributions'));
| |
|
| |
| }
| |
|
| |
| function do_onload()
| |
| {
| |
| if (document.title.indexOf('User:') == 0
| |
| || document.title.indexOf('User talk:') == 0)
| |
| add_block_tab();
| |
| else if (document.title.indexOf('Block user') == 0) // could stand to be more robust
| |
| do_blockip_stuff();
| |
| }
| |
|
| |
| if (window.addEventListener)
| |
| window.addEventListener("load", do_onload, false);
| |
| else if (window.attachEvent)
| |
| window.attachEvent("onload", do_onload);
| |
|
| |
| if ( document.createElement && window.addEventListener )
| |
| {
| |
| function SoFixItInit() // pre-load, (don't want to slow down loading of article's content, though)
| |
| {
| |
|
| |
| }
| |
|
| |
| function SoFixItLoad() // post-load
| |
| {
| |
| UserMenu = new PortletMenu( 'p-personal' );
| |
| PageMenu = new PortletMenu( 'p-cactions' );
| |
| NavMenu = new PortletMenu( 'p-navigation' );
| |
| //ToolMenu = new PortletMenu( 'p-tb' );
| |
|
| |
| // This is inefficient and not particularly robust.
| |
| // This comes first, I want this link to come up as
| |
| // fast as possible.
| |
| //
| |
| function GetByClass( sElem, sClass )
| |
| { var i, a2 = [], a = document.getElementsByTagName( sElem );
| |
| for ( i = 0; i < a.length; i++ )
| |
| if ( a[ i ].className == sClass )
| |
| a2.push( a[ i ] );
| |
| return a2;
| |
| }
| |
| var a, td = GetByClass( 'td', 'diff-otitle' );
| |
| if ( ( td = td[ 0 ] ) && ( a = td.getElementsByTagName( 'a' )[ 0 ] ) )
| |
| a.href = a.href + '&action=edit'; // need to change text, later
| |
|
| |
| var userName = UserMenu.getText( 'pt-userpage' );
| |
|
| |
| // personal (top-most) menu
| |
| //
| |
| // Func Talk Prefs Watch List Edits Kate Logs #IRC Out
| |
| //
| |
| UserMenu.setText( 'pt-mytalk' , 'Talk' );
| |
| UserMenu.setText( 'pt-preferences', 'Prefs' );
| |
| UserMenu.setText( 'pt-watchlist' , 'Watch' );
| |
| UserMenu.setText( 'pt-mycontris' , 'Edits' );
| |
| UserMenu.setText( 'pt-logout' , 'Out' );
| |
| //
| |
| UserMenu.setHref( 'pt-mycontris',
| |
| 'http://en.wikipedia.org/w/index.php?title=Special:Contributions&target=' +
| |
| userName + '&offset=0&limit=500' );
| |
| //
| |
| //
| |
| // it seems there is a stylesheet that makes them lowercase
| |
| //
| |
| // ok, the lowercased menu items are starting to really bug me:
| |
| //
| |
| document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0].style.textTransform = 'none';
| |
| //
| |
| UserMenu.insertBefore( 'pt-mycontris', 'pt-list', 'List', '/wiki/Special:Watchlist/edit' );
| |
| UserMenu.insertBefore( 'pt-logout' , 'pt-logs', 'Logs',
| |
| '/w/index.php?title=Special%3ALog&user=' + userName );
| |
| UserMenu.insertBefore( 'pt-logout' , 'pt-irc' , '#IRC', 'irc://irc.freenode.net/wikipedia' );
| |
| UserMenu.insertBefore( 'pt-logs' , 'pt-kate', 'Kate',
| |
| 'javascript:void InlineKate( "' + userName + '" )' );
| |
|
| |
| // so I always know what time it is in UTC land:
| |
| //
| |
| UserMenu.append( 'pt-utc', UTCTime(), 'javascript:void UserMenu.setText("pt-utc",UTCTime())' );
| |
|
| |
| // article-actions menu, (the "tabs")
| |
| //
| |
| if ( PageMenu[ 'ca-history' ] ) // theory: if it has a history tab, then it's purgable
| |
| {
| |
| PageMenu.insertBefore( 'ca-history', 'ca-lastdiff', 'Last Diff',
| |
| PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'diff=0' ) );
| |
|
| |
| PageMenu.append( 'ca-purge', 'Purge',
| |
| PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'action=purge' ) );
| |
| }
| |
|
| |
| var x = 1;
| |
| NavMenu.append( 'n-' + x++, 'monobook.js', '/wiki/User:' + userName + '/monobook.js' );
| |
| NavMenu.append( 'n-' + x++, 'Cat:Wikipedia', '/wiki/Category:Wikipedia' );
| |
| NavMenu.append( 'n-' + x++, 'Cat:Policies', '/wiki/Category:Wikipedia_policies_and_guidelines' );
| |
| NavMenu.append( 'n-' + x++, 'Cat:Official', '/wiki/Category:Wikipedia_official_policy' );
| |
| NavMenu.append( 'n-' + x++, 'WP:Templates', '/wiki/Wikipedia:Template' );
| |
| NavMenu.append( 'n-' + x++, 'WP:Temp Tags', '/wiki/Wikipedia:Template_messages/Cleanup' );
| |
|
| |
|
| |
| }
| |
|
| |
| function PortletMenu( id ) // constructor
| |
| {
| |
| this.menu = document.getElementById( id );
| |
| this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass "<h5>Views</h5>", etc.
| |
|
| |
| // sigh...as far as I can figure, there is empty whitespace being treated
| |
| // as TextNodes....
| |
| //
| |
| var LIs = this.list.getElementsByTagName( 'li' );
| |
|
| |
| for ( var i = 0; i < LIs.length; i++ )
| |
| {
| |
| this[ LIs[ i ].id ] = LIs[ i ];
| |
| }
| |
|
| |
| this.newItem = function( id, txt, url )
| |
| { var li = document.createElement( 'li' ); li.id = id;
| |
| var a = document.createElement( 'a' ); a.href = url;
| |
|
| |
| a.appendChild( document.createTextNode( txt ) );
| |
| li.appendChild( a );
| |
|
| |
| this[ id ] = li; // watch this!!!
| |
|
| |
| return li;
| |
| }
| |
|
| |
| this.append = function( id, txt, url )
| |
| { this.list.appendChild( this.newItem( id, txt, url ) );
| |
| }
| |
|
| |
| this.insertBefore = function( old, id, txt, url )
| |
| { this.list.insertBefore( this.newItem( id, txt, url ), this[ old ] );
| |
| }
| |
|
| |
| // the ByTagName here is a bit annoying, but in Safari, I was picking
| |
| // up TextNodes by using this[ id ].firstChild.firstChild
| |
| //
| |
| this.getText = function( id ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data }
| |
| this.setText = function( id, txt ) { this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data = txt }
| |
|
| |
| this.getHref = function( id ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].href }
| |
| this.setHref = function( id, url ) { this[ id ].getElementsByTagName( 'a' )[ 0 ].href = url }
| |
|
| |
| // I add em as I need em....
| |
| }
| |
|
| |
| function InlineKate( user )
| |
| {
| |
| var kate =
| |
| 'http://kohl.wikimedia.org/~kate/cgi-bin/count_edits?dbname=enwiki&user=' + user;
| |
|
| |
| var div = document.createElement( 'div' );
| |
| div.id = 'inlineKateDiv';
| |
| div.style.position = 'absolute';
| |
| div.style.zIndex = 1000;
| |
| div.style.left = '20px';
| |
| div.style.top = '20px';
| |
| div.style.backgroundColor = '#FFFFFF';
| |
| div.style.borderStyle = 'solid';
| |
| div.style.borderWidth = ' medium';
| |
| div.style.borderColor = '#000000';
| |
|
| |
| var top = document.createElement( 'div' );
| |
| top.id = 'inlineKateTop';
| |
| top.style.textAlign = 'right';
| |
| top.style.margin = '8px';
| |
| top.style.backgroundColor = '#DDDDDD';
| |
|
| |
| var a = document.createElement( 'a' );
| |
| a.appendChild( document.createTextNode( "Go to Kate's" ) );
| |
| a.href = kate;
| |
| a.target = '_parent';
| |
| a.style.margin = '8px';
| |
|
| |
| top.appendChild( a );
| |
|
| |
| a = document.createElement( 'a' );
| |
| a.appendChild( document.createTextNode( 'Close' ) );
| |
| a.href = "javascript:void RemoveNode('inlineKateDiv')";
| |
| a.style.margin = '8px';
| |
|
| |
| top.appendChild( a );
| |
|
| |
| div.appendChild( top );
| |
|
| |
| var iframe = document.createElement( 'iframe' );
| |
| iframe.id = 'inlineKateBot';
| |
| iframe.style.width = '300px';
| |
| iframe.style.height = '400px';
| |
| iframe.style.margin = '8px';
| |
| iframe.style.borderStyle = 'solid';
| |
| iframe.style.borderWidth = 'thin';
| |
| iframe.style.borderColor = '#000000';
| |
| iframe.src = kate;
| |
|
| |
| div.appendChild( iframe );
| |
|
| |
| document.body.appendChild( div );
| |
| }
| |
|
| |
| function RemoveNode( id )
| |
| { var node = document.getElementById( id )
| |
| node.parentNode.removeChild( node );
| |
| }
| |
|
| |
| function UTCTime()
| |
| {
| |
| // Get a date stamp for the time in UTC-land.
| |
| //
| |
| // for the future: a format arg
| |
| //
| |
| var s = '',
| |
| d = new Date(),
| |
| a = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');
| |
| return d.getUTCDate() + ' ' +
| |
| a[ d.getUTCMonth() ] + ' ' +
| |
| d.getUTCFullYear() + ' ' +
| |
| ( '0' + d.getUTCHours() ).substr( -2 ) + ':' +
| |
| ( '0' + d.getUTCMinutes() ).substr( -2 ) + ' ' + 'UTC';
| |
| }
| |
|
| |
| SoFixItInit();
| |
| window.addEventListener( 'load', SoFixItLoad, false );
| |
| }
| |
| /* </nowiki> */
| |