Jump to content

User:Nihiltres/vector.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Nihiltres (talk | contribs) at 22:50, 16 July 2009 (Setting some actions to be moved out of the menu, including an experimental hack to move "Delete" out if the page includes a deletion notice). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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.
// Tab name fixer (copied from User:Anomie/fix-tab-text.js, target content modified)
/* A simple javascript function to change the text in various tabs at the top of the
 * page. Only tested with the monobook skin.
 */
addOnloadHook(function(){
    var fix=function(id, text){
        var el=document.getElementById(id);
        if(!el) return;
        for(el=el.firstChild; el && el.nodeName!='A'; el=el.nextSibling);
        if(!el) return;
        while(el.firstChild) el.removeChild(el.firstChild);
        el.appendChild(document.createTextNode(text));
    }

    /* Add lines as necessary. Use the Firefox DOM inspector or some such to determine
     * the appropriate IDs.
     */
//(disabled via commenting)    fix('ca-talk', 'discussion');
//(disabled, not necessary in Vector)    fix('ca-edit', 'Edit');
    fix('pt-preferences', 'Preferences');
    fix('pt-watchlist', 'Watchlist');
    fix('pt-mytalk', 'Talk');
    fix('pt-mycontris', 'Contributions');
});
//end tab name fixer

//Special additions of tabs and personal links
//--personal links
addOnloadHook(function() {
//----link to log
addPortletLink('personal','/wiki/Special:Log?user=Nihiltres','Log','pt-log','Log of your non-edit actions','',document.getElementById('pt-mycontris'));
if (wgPageName == "Special:Log" && document.getElementById('mw-log-user').value == "Nihiltres") {document.getElementById('pt-log').className='active';}
//----link to sandbox
addPortletLink('personal','/wiki/User:Nihiltres/Sandbox','Sandbox','pt-sandbox','Your sandbox','',document.getElementById('pt-preferences'));
if (wgPageName == "User:Nihiltres/Sandbox") {document.getElementById('pt-sandbox').className='active';}
});
//--tabs
//----purge tab
addOnloadHook(function() {
  if (wgCanonicalNamespace != 'Special')
    {
addPortletLink('actions', wgServer + wgScript + '?title=' + escape(wgPageName) + '&action=purge', 'Purge', 'ca-purge', 'Purge the server cache of this page', null, (document.getElementById('ca-watch') ? document.getElementById('ca-watch') : document.getElementById('ca-unwatch')));
//and apply the "selected" class, so that one can confirm that the page has been purged. This subroutine is all my own, I'm so proud :p (disabled in Vector as the selected class might do funny things in the dropdown list.)
//    if (wgAction == "purge") {document.getElementById('ca-purge').className='selected';}
    }
});
//end special additions

//auto-check the "watch this page" tab when editing the MediaWiki namespace, my own code.
addOnloadHook(function() {
  if (wgCanonicalNamespace == 'MediaWiki' && wgAction == "edit") {document.getElementById('wpWatchthis').checked = true;}
});
//end auto-check for MediaWiki-space editing

//enable special user CSS and JS pages for while using my iPod Touch… somewhat experimental but should be quite useful. (disabled for now, as it'll need modification for use with Vector.)
//addOnloadHook(function() {
//  if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
//    importStylesheet('User:Nihiltres/iPod.css');
//    importScript('User:Nihiltres/iPod.js');
//}});

//moves actions out of the menu and into the action tabs, use 
//moveActionOutOfMenu("ID OF ELEMENT TO BE MOVED", "ID OF ELEMENT IT SHOULD BE PLACED TO THE LEFT OF");
addOnloadHook(function(){
    var moveActionOutOfMenu=function(id, followingElement) {
        var itemToBeMoved = document.getElementById(id);
        if(!itemToBeMoved) return;
        document.getElementById("views").lastChild.previousSibling.insertBefore(document.getElementById(id), document.getElementById(followingElement));
        itemToBeMoved.firstChild.innerHTML = "<span>" + itemToBeMoved.firstChild.innerHTML + "</span>"; //so that it looks pretty… :|
    }
    moveActionOutOfMenu("ca-addsection", "ca-history"); //new section should not be in the action menu!
    moveActionOutOfMenu("ca-unprotect", "ca-history") //if the page is protected, show the unprotect button; serves also as an indicator for protection
//the below snippet shows the delete tab if the page contains any of the standard class names for the deletion-template boxes.
//Yes, this makes for really ugly code. If you have a more elegant way to do this, I'd love to hear it.
    if (document.getElementsByClassName("ambox-speedy") || document.getElementsByClassName("ambox-delete") || document.getElementsByClassName("ombox-speedy") || document.getElementsByClassName("ombox-delete") || document.getElementsByClassName("imbox-speedy") || document.getElementsByClassName("imbox-delete") || document.getElementsByClassName("cmbox-speedy") || document.getElementsByClassName("cmbox-delete") || document.getElementsByClassName("tmbox-speedy") || document.getElementsByClassName("tmbox-delete") ) {
        moveActionOutOfMenu("ca-delete", "ca-history")
    }
});
//end element-out-of-menu bit