MediaWiki:Common.js: Porovnání verzí
Bez shrnutí editace |
Bez shrnutí editace |
||
Řádek 4: | Řádek 4: | ||
//importScriptURI('resources/wikEd.js'); | //importScriptURI('resources/wikEd.js'); | ||
(function ($, mw) { | |||
"use strict"; | |||
var queue = [], $toolbar; | |||
function insertButton(btnObj) { | |||
$toolbar.wikiEditor('addToToolbar', btnObj); | |||
} | |||
function handleQueue() { | |||
var i; | |||
if (!$toolbar) { | |||
return; | |||
} | |||
for (i = 0; i < queue.length; i += 1) { | |||
insertButton(queue[i]); | |||
} | |||
queue = []; | |||
} | |||
function check() { | |||
$toolbar = ($.wikiEditor && $.fn.wikiEditor && $('#wpTextbox1').length) ? $('#wpTextbox1') : false; | |||
handleQueue(); | |||
} | |||
// Only on editpage | |||
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -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[queue.length] = btnObj; | |||
} | |||
}; | |||
$(document).ready(check); | |||
$(window).load(check); | |||
} else { | |||
// No-op function to avoid errors on other pages | |||
window.krInsertWikiEditorButton = function () {}; | |||
} | |||
}(jQuery, mediaWiki)); | |||
// Happy face | // Happy face | ||
krInsertWikiEditorButton({ | krInsertWikiEditorButton({ | ||
Řádek 19: | Řádek 147: | ||
sampleText: 'Důvod, proč vkládám Brouka' | sampleText: 'Důvod, proč vkládám Brouka' | ||
}); | }); | ||
Verze z 31. 1. 2015, 12:03
/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky. */ // install [[Wikipedia:User:Cacycle/wikEd]] in-browser text editor //importScriptURI('resources/wikEd.js'); (function ($, mw) { "use strict"; var queue = [], $toolbar; function insertButton(btnObj) { $toolbar.wikiEditor('addToToolbar', btnObj); } function handleQueue() { var i; if (!$toolbar) { return; } for (i = 0; i < queue.length; i += 1) { insertButton(queue[i]); } queue = []; } function check() { $toolbar = ($.wikiEditor && $.fn.wikiEditor && $('#wpTextbox1').length) ? $('#wpTextbox1') : false; handleQueue(); } // Only on editpage if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -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[queue.length] = btnObj; } }; $(document).ready(check); $(window).load(check); } else { // No-op function to avoid errors on other pages window.krInsertWikiEditorButton = function () {}; } }(jQuery, mediaWiki)); // Happy face krInsertWikiEditorButton({ id: "mw-customeditbutton-myspecialbutton", icon: "//www.gewiki.cz/images/6/67/Brouk-icon.jpg", label: 'Nevím si rady/potřebuji pomoc', insertBefore: '{{Brouk|', insertAfter: '}}', sampleText: 'Důvod, proč vkládám Brouka' });