MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
mNo edit summary |
PetraMagna (talk | contribs) m (suppress spurious error categories) |
||
(16 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ |
/* Any JavaScript here will be loaded for all users on every page load. <pre>*/ |
||
$(function() { |
$(function() { |
||
Line 5: | Line 5: | ||
window.location.replace("https://bluearchive.wiki" + window.location.pathname); |
window.location.replace("https://bluearchive.wiki" + window.location.pathname); |
||
} |
} |
||
if (mw.config.get("skin") === "minerva") { |
|||
// This hack is required to get custom css to load in mobile view. See https://phabricator.wikimedia.org/T270845 |
|||
loadMobileStylesheet(); |
|||
⚫ | |||
function initCountdown() { |
function initCountdown() { |
||
var reset = new Date(); |
var reset = new Date(); |
||
Line 32: | Line 28: | ||
tick(); |
tick(); |
||
} |
} |
||
if (document.getElementsByClassName("server-toggle-parent").length > 0 || document.getElementsByClassName("server-toggle-jp-button").length > 0 || document.getElementsByClassName("tabber__tabs").length > 0) { |
|||
//console.log("Loading server switching js"); |
|||
mw.loader.load ( '/wiki/MediaWiki:ServerToggle.js?action=raw&ctype=text/javascript' ); |
|||
⚫ | |||
function initCharacterTable() { |
function initCharacterTable() { |
||
mw.loader.using("jquery.tablesorter", function() { |
mw.loader.using("jquery.tablesorter", function() { |
||
$("table.sortable").tablesorter({sortList: [{2: "desc"}, {1: "asc"}]}); |
$("table.sortable").tablesorter({sortList: [{2: "desc"}, {1: "asc"}]}); |
||
}); |
}); |
||
⚫ | |||
function loadMobileStylesheet() { |
|||
var head = document.getElementsByTagName("head")[0]; |
|||
var common = document.createElement("link"); |
|||
var mobile = document.createElement("link"); |
|||
common.rel = mobile.rel = "stylesheet"; |
|||
common.type = mobile.type = "text/css"; |
|||
common.href = "https://bluearchive.miraheze.org/w/load.php?lang=en&modules=site.styles&only=styles&skin=minerva"; |
|||
mobile.href = "https://bluearchive.miraheze.org/wiki/MediaWiki:Mobile.css?action=raw&ctype=text/css"; |
|||
head.appendChild(common); |
|||
head.appendChild(mobile); |
|||
} |
} |
||
if (mw.config.get("wgIsArticle")) { |
if (mw.config.get("wgIsArticle")) { |
||
Line 58: | Line 49: | ||
} |
} |
||
if (mw.config.get("wgPageName") === "Characters" || mw.config.get("wgPageName") === "Characters_StatChart") { |
if (mw.config.get("wgPageName") === "Characters" || mw.config.get("wgPageName") === "Characters_StatChart") { |
||
mw.loader.load( '/ |
mw.loader.load( '/wiki/MediaWiki:CharacterTable.js?action=raw&ctype=text/javascript' ); |
||
} |
} |
||
if (mw.config.get("wgPageName") === "An_Unconcealed_Heart/Mitcher") { |
if (mw.config.get("wgPageName") === "An_Unconcealed_Heart/Mitcher") { |
||
mw.loader.load( '/ |
mw.loader.load( '/wiki/MediaWiki:Mitcher.js?action=raw&ctype=text/javascript' ); |
||
} |
} |
||
if (mw.config.get("wgPageName") === " |
if (mw.config.get("wgPageName") === "A_Game_Before_the_New_Year's_Feast_~_One-and-Done_Match_~/Junby") { |
||
mw.loader.load( '/ |
mw.loader.load( '/wiki/MediaWiki:Junby.js?action=raw&ctype=text/javascript' ); |
||
} |
} |
||
const title_split = mw.config.get('wgTitle').toLowerCase().split("/"); |
|||
if (mw.config.get('wgNamespaceNumber') === 0 && title_split.length === 2 && title_split[1] === 'momotalk') { |
|||
mw.loader.load( '/wiki/MediaWiki:MomotalkChoice.js?action=raw&ctype=text/javascript' ); |
|||
} |
|||
} |
} |
||
}); |
}); |
||
Line 71: | Line 68: | ||
/* Character stat calc & affection table */ |
/* Character stat calc & affection table */ |
||
mw.loader.load( '/ |
mw.loader.load( '/wiki/MediaWiki:StatCalc.js?action=raw&ctype=text/javascript' ); |
||
/* Character birthdays - start */ |
/* Character birthdays - start */ |
||
function initBirthdays(){ |
function initBirthdays(){ |
||
const separator = ' <span></span> '; |
|||
const months = [ |
const months = [ |
||
'January', |
'January', |
||
Line 113: | Line 109: | ||
data_out.forEach( |
data_out.forEach( |
||
function (character) { html_out += '<a href="/wiki/'+character[0]+'">'+character[2]+' ('+character[1].replace(' ', ' ')+')</a>' |
function (character) { html_out += '<a href="/wiki/'+character[0]+'">'+character[2]+' ('+character[1].replace(' ', ' ')+')</a>'; } |
||
); |
); |
||
$('#character-birthdays').append(html_out |
$('#character-birthdays').append(html_out).css( "display", "" ); |
||
} |
} |
||
/* Character birthdays - end */ |
/* Character birthdays - end */ |
||
Line 129: | Line 125: | ||
var voice = $(".character td.character-voice"); |
var voice = $(".character td.character-voice"); |
||
if (voice.length && voice.attr('data-voice').length) { |
if (voice.length && voice.attr('data-voice').length) { |
||
⚫ | |||
voice.wrapInner('<span>'); |
voice.wrapInner('<span>'); |
||
if (voice.find("span").width() > voice.width()-36 ) voice.css('padding-right', '16px'); |
if (voice.find("span").width() > voice.width()-36 ) voice.css('padding-right', '16px'); |
||
voice.find("span").children().unwrap(); |
voice.find("span").children().unwrap(); |
||
⚫ | |||
⚫ | |||
} |
|||
function playCharacterVoice(){ |
|||
var voice = $(".character td.character-voice"); |
|||
if (voice.find('audio').length == 0) { |
|||
⚫ | |||
voice.find('audio')[0].volume=0.6; |
voice.find('audio')[0].volume=0.6; |
||
⚫ | |||
} |
} |
||
voice.find('audio')[0].play(); |
|||
} |
} |
||
/* Character voice preview - end */ |
/* Character voice preview - end */ |
||
Line 142: | Line 145: | ||
/* Character video preview - start */ |
/* Character video preview - start */ |
||
$( document ).ready(function() { |
$( document ).ready(function() { |
||
//if video tab is open on inital page display |
|||
if ($(".character-images |
if ($(".character-images [data-title='Chibi']").attr('aria-hidden') == 'false' || window.location.hash == '#Chibi-0' || window.location.hash == '#Other-0' ) initCharacterVideo($('.character-images')); |
||
⚫ | |||
⚫ | |||
//Tabber initializes late so events are bound at first click on parent div |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
}); |
}); |
||
}) |
}) |
||
Line 165: | Line 171: | ||
} |
} |
||
/* Character video preview - end */ |
/* Character video preview - end */ |
||
/* XP tables */ |
|||
mw.loader.load( '/wiki/MediaWiki:XPtable.js?action=raw&ctype=text/javascript' ); |
|||
/*</pre>*/ |
Latest revision as of 08:10, 7 June 2024
/* Any JavaScript here will be loaded for all users on every page load. <pre>*/
$(function() {
if (window.location.host === "bluearchive.miraheze.org") {
window.location.replace("https://bluearchive.wiki" + window.location.pathname);
}
function initCountdown() {
var reset = new Date();
reset.setUTCHours(19, 0, 0, 0);
function pad(n) {
return ("0" + (n | 0)).slice(-2);
}
function tick() {
var now = new Date();
if (now > reset) {
reset.setUTCDate(reset.getUTCDate() + 1);
}
var remaining = ((reset - now) / 1000);
var hours = (remaining / 3600) % 60;
var minutes = (remaining / 60) % 60;
var seconds = remaining % 60;
document.getElementById("resetCountdown").innerHTML = pad(hours) + ":" + pad(minutes) + ":" + pad(seconds);
setTimeout(tick, 1000);
}
tick();
}
if (document.getElementsByClassName("server-toggle-parent").length > 0 || document.getElementsByClassName("server-toggle-jp-button").length > 0 || document.getElementsByClassName("tabber__tabs").length > 0) {
//console.log("Loading server switching js");
mw.loader.load ( '/wiki/MediaWiki:ServerToggle.js?action=raw&ctype=text/javascript' );
}
function initCharacterTable() {
mw.loader.using("jquery.tablesorter", function() {
$("table.sortable").tablesorter({sortList: [{2: "desc"}, {1: "asc"}]});
});
}
if (mw.config.get("wgIsArticle")) {
// These won't run in Edit mode
if (mw.config.get("wgPageName") === "Main_Page") {
initCountdown();
initBirthdays();
}
if (mw.config.get("wgPageName") === "Characters") {
initCharacterTable();
}
if (mw.config.get("wgPageName") === "Characters" || mw.config.get("wgPageName") === "Characters_StatChart") {
mw.loader.load( '/wiki/MediaWiki:CharacterTable.js?action=raw&ctype=text/javascript' );
}
if (mw.config.get("wgPageName") === "An_Unconcealed_Heart/Mitcher") {
mw.loader.load( '/wiki/MediaWiki:Mitcher.js?action=raw&ctype=text/javascript' );
}
if (mw.config.get("wgPageName") === "A_Game_Before_the_New_Year's_Feast_~_One-and-Done_Match_~/Junby") {
mw.loader.load( '/wiki/MediaWiki:Junby.js?action=raw&ctype=text/javascript' );
}
const title_split = mw.config.get('wgTitle').toLowerCase().split("/");
if (mw.config.get('wgNamespaceNumber') === 0 && title_split.length === 2 && title_split[1] === 'momotalk') {
mw.loader.load( '/wiki/MediaWiki:MomotalkChoice.js?action=raw&ctype=text/javascript' );
}
}
});
/* Character stat calc & affection table */
mw.loader.load( '/wiki/MediaWiki:StatCalc.js?action=raw&ctype=text/javascript' );
/* Character birthdays - start */
function initBirthdays(){
const months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
];
var birthdays = [];
var data_out = [];
var html_out = '';
var raw_data = $('#character-birthdays').attr('data-birthdays').split('&');
raw_data.forEach(function (character) {
var char_data = character.split(' |');
char_data.push(char_data[0].split('(')[0].trim()); //normalized name
if (!birthdays.some(function (data) {return data[2] == char_data[2];})) birthdays.push(char_data);
});
for (var index = -1; index <= 30; index++) {
var date = new Date();
date.setDate(date.getDate() + index);
data_out = data_out.concat(birthdays.filter(function (data) { return data[1] == months[date.getMonth()]+' '+date.getDate();}));
if (data_out.length >= 5) { break; }
}
data_out.forEach(
function (character) { html_out += '<a href="/wiki/'+character[0]+'">'+character[2]+' ('+character[1].replace(' ', ' ')+')</a>'; }
);
$('#character-birthdays').append(html_out).css( "display", "" );
}
/* Character birthdays - end */
/* Character voice preview - start */
$( document ).ready(function() {
initCharacterVoice();
});
function initCharacterVoice(){
var voice = $(".character td.character-voice");
if (voice.length && voice.attr('data-voice').length) {
voice.addClass('character-voice-preview').on("click", function(){playCharacterVoice();});
voice.wrapInner('<span>');
if (voice.find("span").width() > voice.width()-36 ) voice.css('padding-right', '16px');
voice.find("span").children().unwrap();
}
}
function playCharacterVoice(){
var voice = $(".character td.character-voice");
if (voice.find('audio').length == 0) {
voice.append('<audio class="voice-clip" src="'+voice.attr('data-voice')+'"></audio>');
voice.find('audio')[0].volume=0.6;
}
voice.find('audio')[0].play();
}
/* Character voice preview - end */
/* Character video preview - start */
$( document ).ready(function() {
//if video tab is open on inital page display
if ($(".character-images [data-title='Chibi']").attr('aria-hidden') == 'false' || window.location.hash == '#Chibi-0' || window.location.hash == '#Other-0' ) initCharacterVideo($('.character-images'));
//Tabber initializes late so events are bound at first click on parent div
$(".character-images div.tabber").on("click", function(){
if ($(".character-images [data-title='Chibi']").attr('aria-hidden') == 'false') initCharacterVideo($('.character-images'));
$(".character-images [data-title='Chibi']").on("click", function(){initCharacterVideo($('.character-images'));});
});
})
function initCharacterVideo(element) {
var container = element.find('div.video');
if (!container.attr('data-video-initialized')) {
var video_src = container.attr('data-videosrc');
container.html('<video autoplay loop playsinline><source src="'+video_src+'" type="video/webm" /></video>');
container.on("click", function(){playToggle(container)});
container.attr('data-video-initialized', true);
}
}
function playToggle(element) {
var video = element.find('video').get(0);
if (video.paused) video.play();
else video.pause();
}
/* Character video preview - end */
/* XP tables */
mw.loader.load( '/wiki/MediaWiki:XPtable.js?action=raw&ctype=text/javascript' );
/*</pre>*/