MediaWiki:Edittools.js

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Hinweis: Leeren Sie nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
// Drop down box for the Special character menu in [[MediaWiki:Edittools]]
// will be called from [[MediaWiki:Common.js]].
// Adapted from:
// http://commons.wikimedia.org/wiki/MediaWiki:Edittools.js

(function() {
  const specialchars = document.querySelector( '#editform .mw-editTools #specialchars' );
  if (!specialchars) return;

  // Steuerung ist viel besser über Button Bar zu machen, nicht über Select 
  const menu = document.createElement( 'ul' );
  menu.id = 'specialcharsselect';
  const panels = specialchars.querySelectorAll( '.specialbasic' );
  panels.forEach(function( panel ) {
    const item = document.createElement( 'li' );
    item.innerHTML = `<button type='button' aria-selected='false' aria-controls='${panel.id}'>${panel.id}</button>`;
    menu.append( item );
    panel.hidden = true;        // erstmal alle Panels verstecken
    panel.style.display = '';   // ggf. vorhandenes display:none entfernen
  });

  menu.addEventListener( 'click', chooseCharSubset );
  specialchars.before( menu );
  selectPanel( localStorage.getItem( 'Edittools.selectedPanel' ) );
 
  // Reaktion auf Buttonklick
  function chooseCharSubset(clickEvent) {
    const button = clickEvent.target.closest('button');
    if (!button) return;
    const showId = selectPanel(button.getAttribute('aria-controls'));
    localStorage.setItem( 'Edittools.selectedPanel', showId);
  }

  function selectPanel(showId) {
    if (specialchars.querySelector('#'+showId) == null) {
      showId = panels[0].id;
    }
    panels.forEach( function( panel ) { panel.hidden = panel.id != showId; });
    menu.querySelectorAll('button').forEach(function(button) {
      button.setAttribute('aria-selected', button.getAttribute('aria-controls') == showId);
    });
    return showId;
  }
})();