var mwCustomEditButtons = [];
// Grundfunktion für weitere Editbuttons über dem Bearbeitungsfenster (aus [[q:bs:MediaWiki:Monobook.js]])
function addEditButton(imageFile, tagOpen, sampleText, tagClose, speedTip)
{
mwCustomEditButtons[mwCustomEditButtons.length] = {
"imageFile": "//upload.wikimedia.org/wikipedia/" +
imageFile,
"tagOpen": tagOpen,
"sampleText": sampleText,
"tagClose": tagClose,
"speedTip": speedTip
};
}
// Weitere Editbuttons (teils aus [[q:bs:MediaWiki:Monobook.js]], teils nach [[w:en:MediaWiki:Common.js]])
addEditButton( 'commons/8/88/Btn_toolbar_enum.png',
'# ', '1', '\n# 2\n# 3', 'Nummerierung');
addEditButton( 'commons/1/11/Btn_toolbar_liste.png',
'* ', 'A', '\n* B\n* C', 'Aufzählung');
addEditButton( 'en/c/c8/Button_redirect.png',
'#REDIRECT [[', '{{PAGENAME}}',
']]', 'Weiterleitung');
addEditButton( 'en/5/58/Button_small.png', '<small>',
'kleingeschriebener Text', '</small>', 'klein');
addEditButton( 'en/8/80/Button_upper_letter.png', '<sup>',
'hochgestellter Text', '</sup>', 'hochgestellt');
addEditButton( 'en/7/70/Button_lower_letter.png', '<sub>',
'tiefgestellter Text', '</sub>', 'tiefgestellt');
addEditButton( 'en/1/13/Button_enter.png',
'<br />', '', 'Absatz');
// Auswahl Charsubset
function chooseCharSubset(ss,options) {
s = parseInt( ss );
if ( isNaN(s) ) s = 0;
if (SpecCharsAccesskeys.length===0) {
/* if (is_opera) SpecCharsAccesskeys = new Array("!","\"","§","$","%","&","/","(",")","=");
else */ SpecCharsAccesskeys = new Array("1","2","3","4","5","6","7","8","9","0","!","\"","§","$","%","&","/","(",")","=");
}
if (s>=0) {
var l = document.getElementById('specialchars').getElementsByTagName('p');
for (var i = 0; i < options ; i++) {
if (i==s) {
l[i].style.display = 'inline';
SetArrayAccessKeys(l[i].getElementsByTagName('a'),SpecCharsAccesskeys);
} else l[i].style.display = 'none';
}
// $.cookie('CharSubset', s);
}
}
function setDefault() {
var l = document.getElementById('specialchars').getElementsByTagName('select');
var c = '';
for (var i = 0; i < l.length; i++) {
c += l[i].selectedIndex + '|';
}
mw.cookie.set('Specialchars', c, { expires: 86400 * 365 });
}
function getDefault1() {
if (mw.cookie.get("Specialchars")) {
var ca = mw.cookie.get("Specialchars").split('|');
return parseInt( ca[0] );
}
return 0;
}
function setupDefault() {
if (mw.cookie.get("Specialchars")) {
var ca = mw.cookie.get("Specialchars").split('|');
for (var i = 1; i < ca.length - 1; i++) {
var option = parseInt( ca[i] );
newSelect(document.getElementById("specialchars"),option);
}
}
}
function chooseCharSubset2(ss) {
s = parseInt( ss );
if ( isNaN(s) ) s = 0;
if (SpecCharsAccesskeys.length == 0) {
/* if (is_opera) SpecCharsAccesskeys = new Array("!","\"","§","$","%","&","/","(",")","=");
else */
SpecCharsAccesskeys = new Array("1","2","3","4","5","6","7","8","9","0","!","\"","§","$","%","&","/","(",")","=");
}
if (s >= 0) {
var l = document.getElementById('specialchars').getElementsByTagName('p');
//var cl = l[s].cloneNode(true); pures Javascript klont keine Events; jQuery aber schon
var cl = $(l[s]).clone(true).get(0);
cl.style.display = 'inline';
return cl;
}
}
// Accesskeys
function SetArrayAccessKeys(elements, keys) {
for (var i =0; i < elements.length;i++) {
if (i < keys.length) {
elements[i].setAttribute("accessKey",keys[i]);
elements[i].setAttribute("title","alt-"+keys[i]);
} else {
elements[i].setAttribute("accessKey","");
elements[i].setAttribute("title","");
}
}
}
// Combined cross-browser features of [[:zh:MediaWiki:Monobook.js]]...
SpecCharsAccesskeys = [];
function addCharSubsetMenu() {
var SpecCharsMove = true;
var edittools = document.getElementById('specialchars');
if (edittools) {
var name;
var menu = document.createElement("select");
menu.style.display = "inline";
var line = edittools.getElementsByTagName('p');
for (var i = 0; i < line.length ; i++) {
if (line[i].className == "specialbasic" || line[i].className == "speciallang") {
if (line[i].title) {
name = line[i].title;
} else {
name = line[i].id;
}
menu.options[menu.options.length] = new Option(name);
}
}
menu.onchange = function() {
chooseCharSubset(this.selectedIndex,menu.options.length);
setDefault();
} ;
if (SpecCharsMove) {
edittools.insertBefore(menu,edittools.firstChild);
} else {
edittools.insertAfter(menu,edittools.firstChild);
}
var stdsubset = getDefault1();
menu.options[stdsubset].selected = true;
chooseCharSubset(stdsubset,menu.options.length);
// Gleicher Tabindex für alle Elemente der Toolbar
var charlinks = document.getElementById('specialchars').getElementsByTagName('a');
for (var i=0; i < charlinks.length; i++) {
charlinks[i].setAttribute("tabindex",8);
}
} //end if (edittools)
}
$(addCharSubsetMenu);
function newSelect(node,option) {
var ns = (node.firstChild.nextSibling).cloneNode(true);
node.appendChild(document.createElement("br"));
var anc = document.createElement("a");
anc.appendChild(document.createTextNode("×"));
anc.style.borderStyle = "outset";
anc.style.paddingLeft = "3px";
anc.style.paddingRight = "3px";
anc.style.marginLeft = "2px";
anc.style.marginRight = "4px";
anc.onclick = function() { // the famous self destroy button
this.parentNode.removeChild(this.nextSibling);
this.parentNode.removeChild(this.nextSibling);
this.parentNode.removeChild(this.previousSibling);
this.parentNode.removeChild(this);
setDefault();
return false;
};
node.appendChild(anc);
ns.options[option].selected = true;
ns.onchange = function() {
var newChild = chooseCharSubset2(this.selectedIndex);
this.parentNode.replaceChild(newChild, this.nextSibling);
setDefault();
return false;
};
node.appendChild(ns);
node.appendChild(chooseCharSubset2(option));
setDefault();
}
// Move to
function elementMoveto(node, refNode, pos) {
if (node && refNode) {
var anc = document.createElement("a");
anc.appendChild(document.createTextNode("+"));
anc.style.borderStyle = "outset";
anc.style.paddingLeft = "3px";
anc.style.paddingRight = "3px";
anc.style.marginLeft = "2px";
anc.style.marginRight = "4px";
anc.onclick = function() {
newSelect(node,1); // option 1 default
return false;
} ;
node.insertBefore(anc, node.firstChild);
var parent = refNode.parentNode;
if (pos && pos == 'after') {refNode = refNode.nextSibling;}
try {
parent.insertBefore(node, refNode);
} catch (DOMException) {};
setupDefault();
}
}
// Fix für Toolbar
// übergangslösung. die bisherige implementation (siehe vorversion) ging mit umstellung auf 1.17 nicht mehr
function fixToolbara(){
var editspecialchars = document.getElementById("specialchars");
var oben = document.getElementById("editingStatsId");
elementMoveto( editspecialchars , oben, 'after' );
}
$(fixToolbara);