User:CuBaN VeRcEttI/common.js
Jump to navigation
Jump to search
In other languages: Русский
CSS and Javascript changes must comply with the wiki design rules.
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
window.SkinPropagation = {
skin: '',
init: function() {
if (window.location.href.indexOf('useskin=') == -1) return;
var url = SkinPropagation.parseURL(window.location.href);
if (url.query.useskin) {
SkinPropagation.skin = (url.query.propagateskin || url.query.useskin);
}
if (SkinPropagation.skin != '') {
$(document.body).bind('click.skinpropagation', SkinPropagation.clicEvent);
$('form').bind('submit.skinpropagation', SkinPropagation.submitEvent);
}
},
parseURL: function(url) {
var ret = {base:'',qs:'',query:{},hash:''};
var loc = url.indexOf('#');
if (loc != -1) {
ret.hash = url.substr(loc+1);
url = url.substr(0,loc);
}
loc = url.indexOf('?');
if (loc != -1) {
ret.qs = url.substr(loc+1);
url = url.substr(0,loc);
var paras = ret.qs.split('&');
for (var i = 0; i < paras.length; i++) {
var p = paras[i].split('=');
if (p.length == 2) {
ret.query[p[0]] = p[1];
}
}
}
ret.base = url;
return ret;
},
getURL: function(url) {
var nurl = url.base + '?';
for (var p in url.query) {
nurl += p + '=' + url.query[p] + '&';
}
nurl = nurl.substr(0,nurl.length-1);
if (url.hash != '') {
nurl += '#'+ url.hash;
}
return nurl;
},
clicEvent: function(e) {
if (e.target.tagName.toLowerCase() != 'a') return;
if (e.target.href.indexOf(window.wgServer) != 0) return;
var url = SkinPropagation.parseURL(e.target.href);
var thisloc = SkinPropagation.parseURL(window.location.href);
if (url.base == thisloc.base && url.qs == thisloc.qs && url.hash != '') {
return;
}
if (url.query.useskin && url.query.useskin != SkinPropagation.skin) {
url.query.propagateskin = SkinPropagation.skin;
} else {
url.query.useskin = SkinPropagation.skin;
}
e.target.href = SkinPropagation.getURL(url);
},
submitEvent: function(e) {
if (this.action.indexOf(window.wgServer) != 0) return;
if (this.method == 'post') {
var url = SkinPropagation.parseURL(this.action);
url.query.useskin = SkinPropagation.skin;
this.action = SkinPropagation.getURL(url);
} else {
$(this).append('<input type="hidden" name="useskin" value="'+SkinPropagation.skin+'"/>');
}
},
stop: function() {
$(document.body).unbind('click.skinpropagation');
$('form').unbind('submit.skinpropagation');
}
};
$(SkinPropagation.init);
$(function() {
if (mw.config.get('skin') !== 'fandomdesktop') return;
var theme = mw.util.getParamValue('usetheme');
if (['light','dark'].indexOf(theme) === -1) return;
$.get(mw.util.wikiScript('wikia')+'?controller=ThemeApi&method=themeVariables&variant='+theme).done(function(data){
var $s = $('#pcjThemeSwitch')[0] || $('<style>').attr('id','pcjThemeSwitch').appendTo('body');
$($s).text(data);
$('body').removeClass('theme-fandomdesktop-light theme-fandomdesktop-dark').addClass('theme-fandomdesktop-'+theme);
});
});