MediaWiki:Common.js: Difference between revisions
From Tardis Wiki, the free Doctor Who reference
Bongolium500 (talk | contribs) No edit summary |
(adding Quick Intro Edit + Null Edit button) Tag: Reverted |
||
Line 1: | Line 1: | ||
/* This adds functionality to perform a null edit | |||
* Author: M3w | |||
* assistance from Doru, Kockadmiralac, Becasita, Stjn for base set up | |||
*/ | |||
(function($, mw) { | |||
if ($("#t-ne").length > 0) { | |||
return; | |||
} | |||
else { | |||
$.when( mw.loader.using( 'mediawiki.util' ), mw.loader.using( 'mediawiki.api' ), $.ready ).then( function () { | |||
if(mw.config.get("wgNamespaceNumber") === -1 || mw.config.get("wgNamespaceNumber") === -2) { | |||
return; | |||
} | |||
// set up for skins | |||
if ((mw.config.get('skin') === 'monobook') || (mw.config.get('skin') === 'vector')) { | |||
mw.util.addPortletLink('p-tb', '#', "Null Edit", 't-ne'); | |||
} | |||
if ((mw.config.get('skin') === 'timeless') || (mw.config.get('skin') === 'citizen')) { | |||
mw.util.addPortletLink('p-cactions', '#', "Null Edit", 't-ne'); | |||
} | |||
$('#t-ne').click(function () { | |||
nullEdit("Null Edit"); | |||
}); | |||
function nullEdit(nullEditReason) { | |||
var Api = new mw.Api(); | |||
var token = mw.user.tokens.get('csrfToken'); | |||
// Get the current timestamp of the page to use as basetimestamp | |||
Api.get({ | |||
action: 'query', | |||
titles: mw.config.get("wgPageName"), | |||
prop: 'revisions', | |||
rvprop: 'timestamp' | |||
}).done(function(data) { | |||
var pageTimestamp = Object.values(data.query.pages)[0].revisions[0].timestamp; | |||
// Perform the null edit with basetimestamp | |||
Api.post({ | |||
action: 'edit', | |||
title: mw.config.get("wgPageName"), | |||
reason: nullEditReason, | |||
token: token, | |||
basetimestamp: pageTimestamp, | |||
appendtext: '' // Add an empty text parameter for null edit | |||
}).done(function(data) { | |||
if (data.error) { | |||
console.error("Null edit failed: " + data.error.info); | |||
} else { | |||
console.log("Null edit successful"); | |||
location.reload(); | |||
} | |||
}).fail(function(jqXHR, textStatus, errorThrown) { | |||
console.error("Null edit request failed"); | |||
}); | |||
}); | |||
} | |||
}); | |||
} | |||
}) (this.jQuery, this.mediaWiki); | |||
/* This adds functionality to quick edit the intro paragraph of pages | |||
* Author: M3w | |||
* assistance from Doru, Kockadmiralac, Becasita, Stjn for base set up | |||
*/ | |||
(function($, mw) { | |||
if ($("#t-editintro").length > 0) { | |||
return; | |||
} | |||
else { | |||
$.when( mw.loader.using( 'mediawiki.util' ), mw.loader.using( 'mediawiki.api' ), $.ready ).then( function () { | |||
if(mw.config.get("wgNamespaceNumber") === -1 || mw.config.get("wgNamespaceNumber") === -2) { | |||
return; | |||
} | |||
// set up for skins | |||
if ((mw.config.get('skin') === 'monobook') || (mw.config.get('skin') === 'vector')) { | |||
mw.util.addPortletLink('p-tb', 'javascript:void(0);', "Edit Intro", 't-editintro'); | |||
} | |||
if ((mw.config.get('skin') === 'timeless') || (mw.config.get('skin') === 'citizen')) { | |||
mw.util.addPortletLink('p-cactions', 'javascript:void(0);', "Edit Intro", 't-editintro'); | |||
} | |||
$('#t-introedit').click(function () { | |||
// Set the current location to the edit link | |||
window.location.href = mw.util.getUrl(mw.config.get('wgPageName'), { action: 'edit', section: 0 }); | |||
}); | |||
}); | |||
} | |||
}) (this.jQuery, this.mediaWiki); | |||
/* ================ | /* ================ | ||
TABLE stuff | TABLE stuff |
Revision as of 01:57, 5 March 2024
/* This adds functionality to perform a null edit
* Author: M3w
* assistance from Doru, Kockadmiralac, Becasita, Stjn for base set up
*/
(function($, mw) {
if ($("#t-ne").length > 0) {
return;
}
else {
$.when( mw.loader.using( 'mediawiki.util' ), mw.loader.using( 'mediawiki.api' ), $.ready ).then( function () {
if(mw.config.get("wgNamespaceNumber") === -1 || mw.config.get("wgNamespaceNumber") === -2) {
return;
}
// set up for skins
if ((mw.config.get('skin') === 'monobook') || (mw.config.get('skin') === 'vector')) {
mw.util.addPortletLink('p-tb', '#', "Null Edit", 't-ne');
}
if ((mw.config.get('skin') === 'timeless') || (mw.config.get('skin') === 'citizen')) {
mw.util.addPortletLink('p-cactions', '#', "Null Edit", 't-ne');
}
$('#t-ne').click(function () {
nullEdit("Null Edit");
});
function nullEdit(nullEditReason) {
var Api = new mw.Api();
var token = mw.user.tokens.get('csrfToken');
// Get the current timestamp of the page to use as basetimestamp
Api.get({
action: 'query',
titles: mw.config.get("wgPageName"),
prop: 'revisions',
rvprop: 'timestamp'
}).done(function(data) {
var pageTimestamp = Object.values(data.query.pages)[0].revisions[0].timestamp;
// Perform the null edit with basetimestamp
Api.post({
action: 'edit',
title: mw.config.get("wgPageName"),
reason: nullEditReason,
token: token,
basetimestamp: pageTimestamp,
appendtext: '' // Add an empty text parameter for null edit
}).done(function(data) {
if (data.error) {
console.error("Null edit failed: " + data.error.info);
} else {
console.log("Null edit successful");
location.reload();
}
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error("Null edit request failed");
});
});
}
});
}
}) (this.jQuery, this.mediaWiki);
/* This adds functionality to quick edit the intro paragraph of pages
* Author: M3w
* assistance from Doru, Kockadmiralac, Becasita, Stjn for base set up
*/
(function($, mw) {
if ($("#t-editintro").length > 0) {
return;
}
else {
$.when( mw.loader.using( 'mediawiki.util' ), mw.loader.using( 'mediawiki.api' ), $.ready ).then( function () {
if(mw.config.get("wgNamespaceNumber") === -1 || mw.config.get("wgNamespaceNumber") === -2) {
return;
}
// set up for skins
if ((mw.config.get('skin') === 'monobook') || (mw.config.get('skin') === 'vector')) {
mw.util.addPortletLink('p-tb', 'javascript:void(0);', "Edit Intro", 't-editintro');
}
if ((mw.config.get('skin') === 'timeless') || (mw.config.get('skin') === 'citizen')) {
mw.util.addPortletLink('p-cactions', 'javascript:void(0);', "Edit Intro", 't-editintro');
}
$('#t-introedit').click(function () {
// Set the current location to the edit link
window.location.href = mw.util.getUrl(mw.config.get('wgPageName'), { action: 'edit', section: 0 });
});
});
}
}) (this.jQuery, this.mediaWiki);
/* ================
TABLE stuff
================ */
//$("tr:odd").addClass("zebra-stripe"); (adversely affects TOCs for a reason I've not yet determined)
$("table").delegate('td','mouseover mouseleave', function(e) {
if (e.type == 'mouseover') {
$(this).parent().addClass("hover");
$("colgroup").eq($(this).index()).addClass("hover2");
}
else {
$(this).parent().removeClass("hover");
$("colgroup").eq($(this).index()).removeClass("hover2");
}
});
/* ================
ROTATING PICS
helps with infobox
images of characters
with mulitple
actors, principally
[[The Doctor]] and
[[The Master]].
Also has some helper
CSS elsewhere.
================
globals defaults:true, window:false, $:false
First of all we need to detect whether browser
supports animation natively or it needs a javascript
polyfill.
The detection code by the courtesy of Christian Heilmann
http://hacks.mozilla.org/2011/09/detecting-and-generating-css-animations-in-javascript/ */
var animation = false,
elm = document.createElement('detect'),
animationstring = 'animation',
keyframeprefix = '',
domPrefixes = 'Webkit Moz O ms Khtml'.split(' '),
pfx = '';
if( elm.style.animationName ) { animation = true; }
if( animation === false ) {
for( var i = 0; i < domPrefixes.length; i++ ) {
if( elm.style[ domPrefixes[i] + 'AnimationName' ] !== undefined ) {
pfx = domPrefixes[ i ];
animationstring = pfx + 'Animation';
keyframeprefix = '-' + pfx.toLowerCase() + '-';
animation = true;
break;
}
}
}
(function ($) {
$.slowEach = function (array, interval, callback) {
if (!array.length) {
return;
}
var i = 0;
function next() {
if (callback.call(array[i], i, array[i]) !== false) {
if (++i < array.length) {
setTimeout(next, interval);
}
}
}
next();
return array;
};
$.fn.dissolve = function (options) {
var op = $.extend(defaults, options),
$that = $(this),
interval = op.visibleItemDuration + op.transitionDuration;
return $.slowEach(this, interval, function () {
var $this = $(this);
$this
.animate({
opacity: 1
}, op.transitionDuration, function () {
function initCarousel() {
$that.dissolve(options);
}
if ($this.is(':last-child')) {
setTimeout(initCarousel, op.visibleItemDuration);
}
})
.delay(op.visibleItemDuration)
.animate({
opacity: 0
}, op.transitionDuration);
});
};
var defaults = {
visibleItemDuration: 4000,
transitionDuration: 1000
};
}(window.jQuery));
$(function () {
if( animation === false ) {
$('.dissolve .item').dissolve({
// TUNE YOUR CAROUSEL HERE
// duration of an item being visible in miliseconds
visibleItemDuration: 4000,
// duration of a transition between items in miliseconds
transitionDuration: 1000
});
}
});
/* ================
AJAX
customisation
================ */
window.ajaxPages = ["Special:RecentChanges","Special:WikiActivity","Special:Watchlist","Special:Log","Special:Contributions"];
window.ajaxRefresh = 30000;
AjaxRCRefreshText = 'Auto-refresh via AJAX';
AjaxRCRefreshHoverText = 'Automatically refreshes the page';
/* ================
ARCHIVE TOOL
customisation
================ */
var ArchiveToolConfig = {
archiveListTemplate: 'ArchCat',
archivePageTemplate: 'ArchPage',
archiveSubpage: 'Archive',
userLang: true
};
/* ================
SPOILER ALERT
customisation
================ */
/**
* SpoilerAlert
* documentation at: http://dev.wikia.com/wiki/SpoilerAlert
* © Peter Coester, 2012
*
* __NOWYSIWYG__
*/
window.SpoilerAlertJS = {
question: 'This section may contain spoilers about unreleased stories. Are you sure you want to read it?',
yes : 'Hit me with your best shot',
no : 'Get me the hell out of here',
fadeDelay : 1000
};
/* ================
AutoCreateUserPages
customisation
================ */
/**
* documentation at: https://dev.fandom.com/wiki/AutoCreateUserPages
*/
window.AutoCreateUserPagesConfig = {
content: {
2: '{{Remove this message to start building your user page}}',
3: '{{sub'+'st:Welcome}}'
},
summary: 'Automatic creation of user pages via script',
notify: '<a href="/wiki/User talk:$2">Welcome to Tardis!, $1!</a>'
};
/* ================
{{cite source}}
Accesability
tweaks
================ */
$(document).ready(function(){
$('.cse').each(function(i, obj) {
$(obj).attr("aria-hidden","true");
var citeID = $(obj).attr('id');
var citeIDNum = citeID.slice(23); //get number at end of ID
var toggle = $(".mw-customtoggle-cs" + citeIDNum);
$(toggle).attr("aria-controls",citeID);
$(toggle).attr("title","Show " + $(toggle).attr("title").slice(7));
$(toggle).attr("aria-label",$(toggle).attr("title"));
});
});
$(".cse").on("afterExpand.mw-collapsible", function() {
$(this).attr("aria-hidden","false");
var citeIDNum = $(this).attr('id').slice(23); //get number at end of ID
var toggle = $(".mw-customtoggle-cs" + citeIDNum);
$(toggle).attr("aria-expanded","true");
$(toggle).attr("title","Hide " + $(toggle).attr("title").slice(5));
$(toggle).attr("aria-label",$(toggle).attr("title"));
});
$(".cse").on("afterCollapse.mw-collapsible", function() {
$(this).attr("aria-hidden","true");
var citeIDNum = $(this).attr('id').slice(23); //get number at end of ID
var toggle = $(".mw-customtoggle-cs" + citeIDNum);
$(toggle).attr("aria-expanded","false");
$(toggle).attr("title","Show " + $(toggle).attr("title").slice(5));
$(toggle).attr("aria-label",$(toggle).attr("title"));
});
/* ================
{{pullout}}
Accesability
tweaks
================ */
$(document).ready(function(){
$('.pullout-content').each(function(i, obj) {
$(obj).attr("aria-hidden","false");
var toggle = $(".pullout-handle");
$(toggle).attr("aria-controls","mw-customcollapsible-pullout");
$(toggle).attr("title","Hide editor notices");
$(toggle).attr("aria-label","Hide editor notices");
});
});
$(".pullout-content").on("afterExpand.mw-collapsible", function() {
$(this).attr("aria-hidden","false");
var toggle = $(".pullout-handle");
$(toggle).attr("aria-expanded","true");
$(toggle).attr("title","Hide editor notices");
$(toggle).attr("aria-label","Hide editor notices");
});
$(".pullout-content").on("afterCollapse.mw-collapsible", function() {
$(this).attr("aria-hidden","true");
var toggle = $(".pullout-handle");
$(toggle).attr("aria-expanded","false");
$(toggle).attr("title","Show editor notices");
$(toggle).attr("aria-label","Show editor notices");
});
/* ================
{{nwlh}}
================ */
$(document).ready(function(){
$('NWLH').children("a").each(function(i, obj) {
$(obj).removeAttr("target");
});
});