More actions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
//April Fools 4/1/2020 Code ======================================= | //April Fools 4/1/2020 Code ======================================= | ||
opts = { | opts = { | ||
pageSelector: ".page- | pageSelector: ".page-Main_Page", | ||
AprilFoolEnable: true, | AprilFoolEnable: true, | ||
className: 'april-fools', | className: 'april-fools', | ||
| Line 24: | Line 21: | ||
function startUpAprilFools(){ | function startUpAprilFools(){ | ||
opts.addStyleIntvl = setInterval(() | opts.addStyleIntvl = setInterval(function() {addStyleToRandomWordsInJQueryObject($(opts.pageSelector + ' .mw-parser-output'), opts)}, 2000); | ||
addStyleToRandomWordsInJQueryObject($(opts.pageSelector + " .mw-parser-output"), opts); | addStyleToRandomWordsInJQueryObject($(opts.pageSelector + " .mw-parser-output"), opts); | ||
opts.clearStyleIntvl = setInterval(() | opts.clearStyleIntvl = setInterval(function() {removeExpiredStyles(opts)}, 2000); | ||
opts.AprilFoolEnable = true; | opts.AprilFoolEnable = true; | ||
} | } | ||
| Line 76: | Line 73: | ||
function removeExpiredStyles(opts) { | function removeExpiredStyles(opts) { | ||
const spans = $('span.april-fools').filter((_, s) | const spans = $('span.april-fools').filter(function(_, s) { | ||
const timestamp = s.attributes['data-timestamp'].value; | const timestamp = s.attributes['data-timestamp'].value; | ||
return (Date.now() - timestamp) > opts.expiryThresholdMs; | return (Date.now() - timestamp) > opts.expiryThresholdMs; | ||
| Line 84: | Line 81: | ||
} | } | ||
function flicker_text(cur_time){ | |||
var amount = Math.round(Math.random() * (opts.maxFlicks-opts.minFlicks) + opts.minFlicks); | var amount = Math.round(Math.random() * (opts.maxFlicks-opts.minFlicks) + opts.minFlicks); | ||
const spans = $('span.april-fools').filter((_, s) | const spans = $('span.april-fools').filter(function(_, s) { | ||
const timestamp = s.attributes['data-timestamp'].value; | const timestamp = s.attributes['data-timestamp'].value; | ||
return timestamp > cur_time; | return timestamp > cur_time; | ||
}) | }) | ||
if (amount %2 === 1) { amount++} | |||
for(let iter = 0; iter < amount; iter++) | for(let iter = 0; iter < amount; iter++) | ||
{ | { | ||
spans.toggleClass('april-fools'); | spans.toggleClass('april-fools'); | ||
sleep = Math.round(Math.random() * 1000) | |||
setTimeout(function() {spans.toggleClass('april-fools');}, sleep ) | |||
} | } | ||
spans.toggleClass('april-fools', true); | spans.toggleClass('april-fools', true); | ||
} | } | ||
function flicker_images(){ | |||
if (opts.frequency < Math.random()) { return }; | if (opts.frequency < Math.random()) { return }; | ||
var amount = Math.round(Math.random() * (opts.maxFlicks-opts.minFlicks) + opts.minFlicks); | var amount = Math.round(Math.random() * (opts.maxFlicks-opts.minFlicks) + opts.minFlicks); | ||
| Line 106: | Line 104: | ||
for(let iter = 0; iter < amount; iter++) | for(let iter = 0; iter < amount; iter++) | ||
{ | { | ||
sleep = Math.round(Math.random() * 1000); | |||
setTimeout(function() {trigs.toggle(); origs.toggle();}, sleep ) | |||
} | } | ||
} | } | ||
function | // On/Off switch code========================== | ||
(function($){ | |||
} | "use strict"; | ||
if(typeof($.fn.lc_switch) != 'undefined') {return false;} // prevent multiple script inits | |||
$.fn.lc_switch = function(on_text, off_text) { | |||
// destruct | |||
$.fn.lcs_destroy = function() { | |||
$(this).each(function() { | |||
var $wrap = $(this).parents('.lcs_wrap'); | |||
$wrap.children().not('input').remove(); | |||
$(this).unwrap(); | |||
}); | |||
return true; | |||
}; | |||
// set to ON | |||
$.fn.lcs_on = function() { | |||
$(this).each(function(i, v) { | |||
var $wrap = $(this).parents('.lcs_wrap'), | |||
$input = $wrap.find('input'); | |||
// if is already on - skip | |||
if($wrap.find('.lcs_on').length) { | |||
return true; | |||
} | |||
(typeof($.fn.prop) == 'function') ? $input.prop('checked', true) : $input.attr('checked', true); | |||
$input.trigger('lcs-on'); | |||
$input.trigger('lcs-statuschange'); | |||
$wrap.find('.lcs_switch').removeClass('lcs_off').addClass('lcs_on'); | |||
// if radio - disable other ones | |||
if( $wrap.find('.lcs_switch').hasClass('lcs_radio_switch') ) { | |||
var f_name = $input.attr('name'); | |||
$wrap.parents('form').find('input[name='+f_name+']').not($input).lcs_off(); | |||
} | |||
}); | |||
return true; | |||
}; | |||
// set to OFF | |||
$.fn.lcs_off = function() { | |||
$(this).each(function() { | |||
var $wrap = $(this).parents('.lcs_wrap'), | |||
$input = $wrap.find('input'); | |||
// if is already off - skip | |||
if(!$wrap.find('.lcs_on').length) { | |||
return true; | |||
} | |||
// uncheck | |||
(typeof($.fn.prop) == 'function') ? $input.prop('checked', false) : $input.attr('checked', false); | |||
$input.trigger('lcs-off'); | |||
$input.trigger('lcs-statuschange'); | |||
$wrap.find('.lcs_switch').removeClass('lcs_on').addClass('lcs_off'); | |||
}); | |||
return true; | |||
}; | |||
// toggle status | |||
$.fn.lcs_toggle = function() { | |||
$(this).each(function() { | |||
// not for radios | |||
if( $(this).hasClass('lcs_radio_switch')) { | |||
return true; | |||
} | |||
($(this).is(':checked')) ? $(this).lcs_off() : $(this).lcs_on(); | |||
}); | |||
return true; | |||
}; | |||
// construct | |||
return this.each(function(){ | |||
// check against double init | |||
if( !$(this).parent().hasClass('lcs_wrap') ) { | |||
// default texts | |||
var ckd_on_txt = (typeof(on_text) == 'undefined') ? 'ON' : on_text, | |||
ckd_off_txt = (typeof(off_text) == 'undefined') ? 'OFF' : off_text; | |||
// labels structure | |||
var on_label = (ckd_on_txt) ? '<div class="lcs_label lcs_label_on">'+ ckd_on_txt +'</div>' : '', | |||
off_label = (ckd_off_txt) ? '<div class="lcs_label lcs_label_off">'+ ckd_off_txt +'</div>' : ''; | |||
// default states | |||
var disabled = ($(this).is(':disabled')) ? true : false, | |||
active = ($(this).is(':checked')) ? true : false; | |||
var status_classes = ''; | |||
status_classes += (active) ? ' lcs_on' : ' lcs_off'; | |||
if(disabled) { | |||
status_classes += ' lcs_disabled'; | |||
} | |||
// wrap and append | |||
var structure = | |||
'<div class="lcs_switch '+status_classes+'">' + | |||
'<div class="lcs_cursor"></div>' + | |||
on_label + off_label + | |||
'</div>'; | |||
if( $(this).is(':input') && ($(this).attr('type') == 'checkbox' || $(this).attr('type') == 'radio') ) { | |||
$(this).wrap('<div class="lcs_wrap"></div>'); | |||
$(this).parent().append(structure); | |||
$(this).parent().find('.lcs_switch').addClass('lcs_'+ $(this).attr('type') +'_switch'); | |||
} | |||
} | |||
}); | |||
}; | |||
// handlers | |||
$(document).ready(function() { | |||
// on click | |||
$(document).on('click tap', '.lcs_switch:not(.lcs_disabled)', function(e) { | |||
if( $(this).hasClass('lcs_on') ) { | |||
if( !$(this).hasClass('lcs_radio_switch') ) { // not for radio | |||
$(this).lcs_off(); | |||
} | |||
} else { | |||
$(this).lcs_on(); | |||
} | |||
}); | |||
// on checkbox status change | |||
$(document).on('change', '.lcs_wrap input', function() { | |||
( $(this).is(':checked') ) ? $(this).lcs_on() : $(this).lcs_off(); | |||
}); | |||
}); | |||
})(jQuery); | |||
$(document).ready(function(e) { | |||
$('input').lc_switch("Enabled", "Disabled"); | |||
// triggered each time a field is checked | |||
$(document).on('lcs-on', '.lcs_check', function() { | |||
//handle chkSysMineable | |||
if($(this).attr("name") == 'chkAprilFoolEnable') { | |||
opts.AprilFoolEnable = true; | |||
startUpAprilFools(); | |||
}; | |||
}); | |||
// triggered each time a field is unchecked | |||
$(document).on('lcs-off', '.lcs_check', function() { | |||
//handle chkSysMineable | |||
if($(this).attr("name") == 'chkAprilFoolEnable') { | |||
opts.AprilFoolEnable = false; | |||
shutDownAprilFools(); | |||
}; | |||
}); | |||
}); | |||
//END April Fools 4/1/2020 Code ======================================= | //END April Fools 4/1/2020 Code ======================================= | ||