Difference between revisions of "MediaWiki:Common.js"

Jump to: navigation, search

Difference between revisions of "MediaWiki:Common.js"

(Blanked the page)
Line 1: Line 1:
  
 
$(document).ready(function() {
 
 
 
(function ($, mw) {
 
"use strict";
 
 
var $toolbar, queue = [];
 
 
function insertButton(btnObj) {
 
$toolbar.wikiEditor('addToToolbar', btnObj);
 
}
 
 
function handleQueue() {
 
for (var i = 0; i < queue.length; i++) {
 
insertButton(queue[i]);
 
}
 
queue = [];
 
}
 
 
function check() {
 
if ($.wikiEditor && $.fn.wikiEditor && $('#wpTextbox1').length) {
 
$toolbar = $('#wpTextbox1');
 
handleQueue();
 
}
 
}
 
 
// Only on editpage
 
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit', 'formedit']) !== -1) {
 
/**
 
* krInsertWikiEditorButton
 
*
 
* @param options {Object} An object with options:
 
* - section {String} (optional) The name of the section in the WikiEditor. Defaults to 'main'
 
* - group {String} (optional) The name of the group in the WikiEditor. Defaults to 'insert'
 
* - id {String} (required) Unique id (ie. 'my-button')
 
* - icon {String} (recommended) URL to the icon, should be square about 21 to 22px
 
* - label {String} (required) Tooltip displayed when hovering button
 
* - insertBefore {String} (optional) Wikitext to be inserted before the cursor on-click
 
* - sampleText {String} (optional) Text inserted in place of the cursor if no text was selected
 
* - insertAfter {String} (optional) Wikitext to be inserted after the cursor on-click
 
* - callback {Function} (optional) Called when the button is clicked
 
* - autoSummary {mixed} (optional) Null or an Object with the following properties:
 
*  - summary {String} (required) Edit summary that should be used
 
*  - position {String} (optional) 'append', 'prepend' or 'replace'
 
*  - delimiter {String} (optional) delimiter between the (possibly) current summary and the to-be-inserted summary
 
*/
 
window.krInsertWikiEditorButton = function (options) {
 
// Defaults
 
options = $.extend({
 
'section': 'main',
 
'group': 'insert',
 
'id': null,
 
'icon': '//upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Toolbaricon_bold_!.png/21px-Toolbaricon_bold_!.png',
 
'label': '',
 
'insertBefore': '',
 
'sampleText': '',
 
'insertAfter': '',
 
'callback': null,
 
'autoSummary': {
 
'summary': null,
 
'position': 'append',
 
'delimiter': '; '
 
}
 
}, options);
 
// Required
 
if (!options.id || !options.label) {
 
return false;
 
}
 
var btnObj = {
 
'section': options.section,
 
'group': options.group,
 
'tools': {}
 
};
 
btnObj.tools[options.id] = {
 
label: options.label,
 
type: 'button',
 
icon: options.icon,
 
action: {
 
type: 'callback',
 
execute: function () {
 
// encapsulateSelection
 
$toolbar.textSelection('encapsulateSelection', {
 
pre: options.insertBefore,
 
peri: options.sampleText,
 
post: options.insertAfter
 
});
 
// Auto summary
 
if (options.autoSummary && options.autoSummary.summary) {
 
var $summary = $('#wpSummary'), currentSum = $summary.val();
 
if (!$.trim(currentSum)) {
 
$summary.val(options.autoSummary.summary);
 
} else {
 
switch (options.autoSummary.position) {
 
case 'prepend':
 
$summary.val(
 
options.autoSummary.summary +
 
options.autoSummary.delimiter +
 
currentSum
 
);
 
break;
 
case 'replace':
 
$summary.val(options.autoSummary.summary);
 
break;
 
default: // 'append'
 
$summary.val(
 
currentSum +
 
options.autoSummary.delimiter +
 
options.autoSummary.summary
 
);
 
}
 
}
 
}
 
// Callback
 
if ($.isFunction(options.callback)) {
 
options.callback();
 
}
 
}
 
}
 
};
 
if ($toolbar) {
 
insertButton(btnObj);
 
} else {
 
queue.push(btnObj);
 
}
 
};
 
$.when(
 
mw.loader.using( 'ext.wikiEditor.toolbar' ),
 
$.ready
 
).then(check);
 
} else {
 
// No-op function to avoid errors on other pages
 
window.krInsertWikiEditorButton = function () {};
 
}
 
}(jQuery, mediaWiki));
 
 
 
// Happy face
 
krInsertWikiEditorButton({
 
id: "mw-customeditbutton-myspecialbutton",
 
icon: "//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Gnome-face-smile.svg/22px-Gnome-face-smile.svg.png",
 
label: 'Insert happy face',
 
insertBefore: '[[File:Gnome-face-smile.svg|21px|',
 
insertAfter: ']]',
 
sampleText: 'Happy face'
 
});
 
 
// Monkey
 
krInsertWikiEditorButton({
 
id: 'mw-customeditbutton-anotherspecialbutton',
 
icon: '//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Gnome-face-monkey.svg/22px-Gnome-face-monkey.svg.png',
 
label: 'Insert monkey',
 
insertBefore: '[[File:Gnome-face-monkey.svg|21px|',
 
insertAfter: ']]',
 
sampleText: 'Happy face'
 
});
 
 
    var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
 
    x = new Date;
 
    var y = ' || ' + x.getFullYear() + '-' + monthNames[(x.getMonth() + 3)] + '-' + x.getDate() + ' }}';
 
});
 

Revision as of 01:33, 20 November 2015