User:Nihiltres/vector.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
![]() | The accompanying .css page for this skin is at User:Nihiltres/vector.css. |
// 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');
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('p-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('p-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('p-cactions', 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;
if (!document.getElementById("p-views").contains(document.getElementById(id))) {
document.getElementById("p-views").lastChild.previousSibling.insertBefore(document.getElementById(id), document.getElementById(followingElement));
itemToBeMoved.firstChild.innerHTML = "<span>" + itemToBeMoved.firstChild.innerHTML + "</span>"; //so that it looks pretty… :|
}
}
//if the page is protected, show the unprotect button; serves also as an indicator for protection, indicating the value in the title
if ( (wgRestrictionEdit.concat( wgRestrictionMove )).length > 0) {
moveActionOutOfMenu("ca-unprotect", "ca-history");
if ( wgRestrictionEdit.length > 0 ) {
var EditRestrictionString = "edit: [" + wgRestrictionEdit.join(", ") + "]";
}
else {
var EditRestrictionString = "";
}
if ( wgRestrictionMove.length > 0 ) {
var MoveRestrictionString = "move: [" + wgRestrictionMove.join(", ") + "]";
}
else {
var MoveRestrictionString = "";
}
var RestrictionStringsArray = new Array();
if (EditRestrictionString != "") {
RestrictionStringsArray.push(EditRestrictionString)
}
if (MoveRestrictionString != "") {
RestrictionStringsArray.push(MoveRestrictionString)
}
document.getElementById("ca-unprotect").firstChild.title = ("Unprotect this page (" + RestrictionStringsArray.join(", ") + ")");
}
//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").length >= 1 || document.getElementsByClassName("ambox-delete").length >= 1 || document.getElementsByClassName("ombox-speedy").length >= 1 || document.getElementsByClassName("ombox-delete").length >= 1 || document.getElementsByClassName("imbox-speedy").length >= 1 || document.getElementsByClassName("imbox-delete").length >= 1 || document.getElementsByClassName("cmbox-speedy").length >= 1 || document.getElementsByClassName("cmbox-delete").length >= 1 || document.getElementsByClassName("tmbox-speedy").length >= 1 || document.getElementsByClassName("tmbox-delete").length >= 1 ) {
moveActionOutOfMenu("ca-delete", "ca-history");
}
else {
if (document.getElementsByClassName("redirectText").length == false) return;
if (document.getElementsByClassName("redirectText").item(0).firstChild.href.search("redlink=1") != -1) {
moveActionOutOfMenu("ca-delete", "ca-history");
var cadeletelinks = document.getElementById("ca-delete").getElementsByTagName("a");
if (cadeletelinks.length != 1) return;
cadeletelinks.item(0).href = cadeletelinks.item(0).href + "&wpReason=%5B%5BWP%3ACSD%23G8%7CG8%5D%5D%3A%20Redirect%20to%20a%20deleted%20page";
}
}
//this little addendum detects redirects to redlinks (that is, non-existing pages) and both brings out the delete tab and gives it a decent automatic deletion reason.
});
//end element-out-of-menu bit