User:Earth KING/myskin.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. |
Documentation for this user script can be added at User:Earth KING/myskin. This user script seems to have an accompanying .css page at User:Earth KING/myskin.css. |
/**
* jQuery cookie plugin
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
*/
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+options.path:'';var domain=options.domain?'; domain='+options.domain:'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};
/***
* Auto-complete: http://en.wiki.x.io/wiki/User:Zocky/AutoComplete.js
* Link to stylesheet removed and integrated into myskin.css
*/
String.prototype.parseJSON=function(){try{return!(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(this.replace(/"(\\.|[^"\\])*"/g,'')))&&eval('('+this+')')}catch(e){return false}};function ac$query(cb,what){if(ac$query.arguments.length>1&&ac$x){var i=2;var url="/w/query.php?format=json&what="+what;while(i<ac$query.arguments.length){url=url+"&"+ac$query.arguments[i]+"="+ac$query.arguments[i+1];i+=2}ac$x.onreadystatechange=function(){if(ac$x.readyState==4)return ac$x.status==200?cb(ac$x.responseText.parseJSON()):cb(false)};ac$x.open("GET",url,true);ac$x.setRequestHeader('Accept','text/*');ac$x.send(null)}else return false}function ac$$e(id){return document.getElementById(id)}function ac$$c(name,id){var el=document.createElement(name);el.id=id;return el};function ac$$ia(node,newnode){return node.parentNode.insertBefore(newnode,node.nextSibling)}function ac$$uc(s){return s.substring(0,1).toUpperCase()+s.substring(1)};function ac$inputKeyDown(e){if(e.which==40&&ac$b.style.visibility=="visible"){ac$b.focus()}else{try{clearTimeout(ac$t)}catch(e){};ac$t=setTimeout("ac$timeOut()",500)}}function ac$boxKeyPress(e){if(e.which==13){ac$s.value=ac$b.options[ac$b.selectedIndex].value;ac$b.style.visibility="hidden";ac$b.selectedIndex=-1;ac$s.focus()}else if(e.which==27){ac$b.style.visibility="hidden";ac$b.selectedIndex=-1;ac$s.focus()}else if(e.which){ac$s.value+=String.fromCharCode(e.which);ac$s.focus();ac$b.selectedIndex=-1;ac$s.selectionStart=ac$s.selectionEnd=ac$s.value.length;try{clearTimeout(ac$t)}catch(e){};ac$t=setTimeout("ac$timeOut()",500)}}function ac$boxClick(e){ac$s.value=ac$b.options[ac$b.selectedIndex].value;ac$b.style.visibility="hidden";ac$b.selectedIndex=-1;ac$s.focus()}function ac$blur(e){if(e.target==ac$b){if(ac$b.style.visibility=="hidden")ac$b.blur()}else if(e.target!=ac$s&&e.target!=document&&e.target!=window){ac$b.style.visibility="hidden";ac$b.selectedIndex=-1}}function ac$timeOut(){if(ac$s.value.length>0){try{ac$x.abort()}catch(e){};cb=function(obj){ac$b.innerHTML='';for(var i in obj.meta.namespaces){try{var ns=obj.meta.namespaces[i]['*'];ac$n[ns]=i;if(ac$s.value.toUpperCase()==ns.substring(0,ac$s.value.length).toUpperCase()){ac$b.innerHTML+='<option style="font-weight:bold">'+ns+':</option>'}}catch(e){}}for(var i in obj.pages){if(ac$s.value.toUpperCase()==obj.pages[i].title.substring(0,ac$s.value.length).toUpperCase())ac$b.innerHTML+=(obj.pages[i].redirect!=""?'<option>':'<option style="color:#775240;font-style:italic;">')+obj.pages[i].title+'</option>'}ac$b.options.length||(ac$b.innerHTML='<option value="'+ac$s.value+'" style="color:silver">(no pages found)</option>');ac$b.style.visibility="visible"};var ns=ac$s.value.match(/^.*?(?=:)/);if(ns in ac$n){var apns=ac$n[ns];var apfrom=ac$s.value.replace(/^.*?:/,'')}else{var apns=0;var apfrom=ac$s.value}ac$query(cb,"allpages|namespaces","apfrom",ac$$uc(apfrom.replace(/ /g,'_')),"aplimit","50","apnamespace",apns)}else{ac$b.style.visibility="hidden"}}var ac$s;var ac$b;var ac$t;var ac$n=[];var ac$x=window.XMLHttpRequest?new XMLHttpRequest():window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):false;function ac$init(){ac$s=ac$$e("searchInput");if(ac$s){ac$b=ac$$c('select','autocompletebox');ac$b.size=8;ac$b.style.visibility="hidden";ac$$ia(ac$s,ac$b);ac$s.setAttribute('autocomplete','off');ac$s.addEventListener('keydown',ac$inputKeyDown,true);ac$b.addEventListener('keypress',ac$boxKeyPress,true);ac$b.addEventListener('click',ac$boxClick,true);document.addEventListener('focus',ac$blur,true)}}addOnloadHook(ac$init);
/***
* Own code starts here
*/
$(document).ready(function(){
/***
* Reorganize the content
*/
$("#column-one").prependTo("body"); // Switch the columns
$("body").prepend("<h1 id=\"header\">Wikipedia, the free encyclopedia</h1>"); // Add a new header
$("#column-one").prepend("<p>Wikipedia:</p>"); $("#p-tb").before("<p>This page:</p>"); // Add explanations for the menu
$("#p-interaction h5").replaceWith("<h5>Interaction</h5>"); // interaction -> Interaction
$("#column-content").prepend("<div id=\"sidebar\"></div>"); // Add the sidebar
$("#p-personal").prependTo("#sidebar"); // Add the personal menu to the sidebar
$("#p-search").prependTo("#sidebar"); // Add the search to the sidebar
$("#p-cactions").prependTo("#sidebar"); // Add the view menu to the sidebar
$("#column-content").append("<div style=\"clear: both\"></div>"); // Clear the float of the sidebar
$("#p-personal").after("<div id=\"p-tb2\" class=\"portlet\"><h5>Toolbox</h5><div class=\"pBody\"><ul></ul></div>");
$("#t-upload").appendTo("#p-tb2 ul");
$("#t-specialpages").appendTo("#p-tb2 ul");
$("#p-logo").remove(); // Remove the old logo
$("#p-cactions > h5").remove(); // Remove the views header
$("#p-search > h5").remove(); // Remove the search header
/***
* Making the top drop-down menu
*/
$("#column-one .portlet").hover(
function () {
$(this).find(".pBody").fadeIn();
},
function () {
$(this).find(".pBody").fadeOut();
}
);
/***
* If two adjacent items in the sidebar are selected, assign new classes for styling
*/
$("li.selected + li.selected").prev().addClass("selected-first");
$("li.selected + li.selected").addClass("selected-second");
/***
* Favorites
*/
$("#p-cactions ul").append("<li id=\"ca-favorites\"><a href=\"#\">Add to favorites</a></li>"); // Add the link to the views menu
$("#p-search").after("<div id=\"p-favorites\" class=\"portlet\"><h5>Favorites</h5><div class=\"pBody\"><ul></ul></div></div>"); // Add the portlet to the sidebar
/*
* A function to make list items and links for favorites
*/
function makeFavoriteLink(pageTitle, pageLink) {
var pageTitle = (pageTitle == null) ? wgTitle : pageTitle; // Default pageTitle is the current page title
var pageLink = (pageLink == null) ? wgScript + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) : pageLink; // Default link is the current page link
return "<li class=\"favorite\"><a href=\"" + pageLink + "\">" + pageTitle + "</a> <a href=\"#\" class=\"remove-favorite\"><img src=\"http://home.planet.nl/~merri033/delete.png\" alt=\"-\" /></a></li>";
}
/*
* A function to remove the favorite from the sidebar and also from the cookie
*/
function removeFavorite(pageTitle, removeLink) {
removeLink.parent().remove(); // Remove the link from the sidebar
if($("#p-favorites ul").is(":empty")) { // If there are no more favorites...
$("#p-favorites ul").append("<li id=\"no-favorites\">No favorites</li>");
}
var favorites = $.cookie('wikipedia-favorites').split("\n"); // All the cookie lines in a variable
var cookie = '';
// Now we add all the lines back to the cookie, except the one we want removed
for(var i = 0; i < (favorites.length - 1); i++) { // -1 because we don't want the last line
if(favorites[i].split("|")[0] != pageTitle) {
cookie += (favorites[i] + "\n");
}
}
$.cookie('wikipedia-favorites', cookie, { expires: 30 });
}
/*
* Add favorites that were already in the cookie
*/
if(!$.cookie('wikipedia-favorites') || $.cookie('wikipedia-favorites') == '') {
$("#p-favorites ul").append("<li id=\"no-favorites\">No favorites</li>"); // There is no cookie
}
else {
var favorites = $.cookie('wikipedia-favorites').split("\n");
for(var i = 0; i < (favorites.length - 1); i++) { // -1 because we don't want the last line
$("#p-favorites ul").append(makeFavoriteLink(favorites[i].split("|")[0],favorites[i].split("|")[1])); // Make links of the cookie
}
$("a.remove-favorite").click(function () { // The remove links of the cookie favorites are enabled
removeFavorite($(this).prev().text(),$(this));
return false; // So the page doesn't scroll to the top
});
}
/*
* A favorite is added...
*/
$("#ca-favorites a").click(function () {
$("#no-favorites").remove(); // Remove the 'no favorites' text (if it is there)
var j = 0;
if($.cookie('wikipedia-favorites')) { // If there is a cookie...
var favorites = $.cookie('wikipedia-favorites').split("\n");
for(var i = 0; i < (favorites.length - 1); i++) { // -1 because we don't want the last line
if(favorites[i].split("|")[0] == wgTitle) {
j++; // If the page is already in the cookie, and thus a favorite, j becomes greater than 0
}
}
}
if(j == 0) { // If j > 0 then the page was already a favorite
$("#p-favorites ul").append(makeFavoriteLink()); // Add the page to the list, no arguments for makeFavoriteLink() because the defaults are used
$.cookie('wikipedia-favorites', (($.cookie('wikipedia-favorites')) ? $.cookie('wikipedia-favorites') : '') + wgTitle + '|' + wgScript + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "\n", { expires: 30 }); // Add the link to the cookie
$("a.remove-favorite").click(function () { // Call this event again because new links were added
removeFavorite($(this).prev().text(),$(this));
return false; // So the page doesn't scroll to the top
});
}
return false;
});
/***
* Making the sidebar portlets tools collapsible
*/
$("#sidebar .portlet h5").append(" [<a href=\"#\">-</a><a href=\"#\" style=\"display: none\">+</a>]");
$("#sidebar .portlet h5 a").click(function () {
$(this).parent().next().slideToggle();
$(this).siblings().addBack().toggle();
return false;
});
});