Медијавики:Edit.js
Напомена: Пошто објавите измене, можда ћете морати да обришете кеш прегледача како бисте их видели.
- Firefox / Safari: Држите Shift и кликните на Reload или притисните Ctrl-F5 или Ctrl-R (⌘-R на Mac-у).
- Google Chrome: Притисните Ctrl-Shift-R (⌘-Shift-R на Mac-у).
- Internet Explorer / Edge: Држите Ctrl и кликните на Refresh или притисните Ctrl-F5.
// {{documentation}} <nowiki>
// implicit dependencies: mediawiki.cookie
// Javascript included on the edit page.
/* ==[[MediaWiki:Edittools]]== */
/* ===applyCharinserts=== */
/* handle <span class="charinsert"> like <charinsert> */
function applyCharinserts() {
function patchUpInsertTagsArg(arg) {
return (
arg.replace(/\x22/g, '"').replace(/\x27/g, "\\'").replace(/\x26nbsp;/g, ' '));
}
function charinsertify(span) {
// Go through all child nodes of span.
for (var node = span.firstChild, oldNode; node;) {
if (node.nodeType === 3) {
// Text node
var s = node.nodeValue, // text content
addedNew = false;
s = s.replace(/\xA0/g, '\x26nbsp;');
var strings = s.split(/\s/g);
for (var i = 0; i < strings.length; ++i) {
if (strings[i] === '')
continue;
var left, right, index;
index = strings[i].indexOf('+');
if (index == -1)
index = strings[i].length;
left = strings[i].substring(0, index);
right = strings[i].substring(index + 1);
left = patchUpInsertTagsArg(left);
right = patchUpInsertTagsArg(right);
var textToDisplay = left + right;
var a = document.createElement('a');
(function(left, right) {
a.onclick = function() {
$( '#wpTextbox1' ).textSelection(
'encapsulateSelection', {
pre: left.replace(/^ */, ''),
peri: '',
post: right
}
);
return false;
};
a.href = '#';
a.appendChild(document.createTextNode(textToDisplay));
if (i > 0) {
span.insertBefore(document.createTextNode(' '), node);
}
span.insertBefore(a, node);
addedNew = true;
})(left, right);
}
oldNode = node;
node = node.nextSibling;
if (addedNew) {
span.removeChild(oldNode);
}
} else if (node.nodeType === 1) {
// Element node
oldNode = node;
node = node.nextSibling;
charinsertify(oldNode);
}
}
}
var edittools = document.getElementById('editpage-specialchars');
if (!edittools)
return;
var spans = edittools.getElementsByTagName('span');
if (!spans)
return;
for (var i = 0; i < spans.length; ++i) {
if ((' ' + spans[i].className + ' ').indexOf(' charinsert ') == -1)
continue;
spans[i].className = spans[i].className.replace(/\bcharinsert\b/, '');
charinsertify(spans[i]);
}
}
/* ===addCharSubsetMenu=== */
/* add menu for selecting subsets of secial characters */
function addCharSubsetMenu() {
var edittools = $('#editpage-specialchars');
if (edittools.length === 0) return;
var menu = $('<select>')
.attr("id", 'charSubsetControl').css("display", "inline")
.on("change", function() {
chooseCharSubset($(this).val());
});
var pp = edittools.find('p');
if (pp.length === 0) return;
pp.each(function(index){
$('<option>')
.text(decodeURIComponent(
($(this).attr("id") || '').replace(/^edittools-/, '')
.replace(/\.([0-9A-F][0-9A-F])/g, '%$1')
.replace(/_/g, '%20')))
.val(index)
.appendTo(menu);
});
edittools.prepend(menu);
/* default subset from cookie */
var s = parseInt(mw.cookie.get('edittoolscharsubset'));
if (isNaN(s)) s = 0;
/* update dropdown control to value of cookie */
menu.val(s);
/* display the subset indicated by the cookie */
chooseCharSubset(s);
}
/* ===chooseCharSubsetMenu=== */
/* select subsection of special characters */
function chooseCharSubset(s) {
var l = $('#editpage-specialchars').find('p');
for (var i = 0; i < l.length; i++) {
l[i].style.display = i == s ? 'inline' : 'none';
l[i].style.visibility = i == s ? 'visible' : 'hidden';
}
mw.cookie.set('edittoolscharsubset', s);
}
$(function() {
if (!window.doNotUseDefaultEditTools) { // [[User:Conrad.Irwin/edittools.js]]
addCharSubsetMenu();
}
applyCharinserts();
});
// </nowiki>