MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 32: Zeile 32:
(function(){
(function(){
   /* add dialog opener event handler */
   /* add dialog opener event handler */
   const run = ()=>{
   const run = function(){
     document.querySelectorAll('[data-dialog-opener-id]').forEach((elem) => {
     document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
       if(elem.dataset.dialogOpenerAdded === 'true') { return; }
       if(elem.dataset.dialogOpenerAdded === 'true') { return; }




       const dialogId = elem.dataset.dialogOpenerId;
       var dialogId = elem.dataset.dialogOpenerId;
       const dialog = document.getElementById(dialogId);
       var dialog = document.getElementById(dialogId);


       elem.dataset.dialogOpenerAdded = 'true';
       elem.dataset.dialogOpenerAdded = 'true';
       elem.addEventListener('click', (ev) => {
       elem.addEventListener('click', function(ev) {
         dialog.showModal();
         dialog.showModal();
         ev.stopPropagation();
         ev.stopPropagation();
Zeile 56: Zeile 56:
(function(){
(function(){
     /* close on click outside of dialog content */
     /* close on click outside of dialog content */
     const run = ()=>{
     const run = function(){
     document.querySelectorAll('dialog.zum-dialog').forEach((elem) => {
     document.querySelectorAll('dialog.zum-dialog').forEach(function(elem){
       if(elem.dataset.dialogCloseonBackdropAdded === 'true') { return; }
       if(elem.dataset.dialogCloseonBackdropAdded === 'true') { return; }
       elem.dataset.dialogCloseonBackdropAdded = 'true';
       elem.dataset.dialogCloseonBackdropAdded = 'true';


       elem.addEventListener('mousedown', (ev) => {
       elem.addEventListener('mousedown', function(ev){
         if(ev.target !== elem){return true;}
         if(ev.target !== elem){return true;}
         const rect = ev.target.getBoundingClientRect();
         var rect = ev.target.getBoundingClientRect();
         if(ev.x >= rect.left  
         if(ev.x >= rect.left  
         && ev.x <= rect.right  
         && ev.x <= rect.right  
Zeile 83: Zeile 83:
(function(){
(function(){
   /*cleanup empty p tags, at beginning and end of dialogs created by Vorlage:DialogButton */
   /*cleanup empty p tags, at beginning and end of dialogs created by Vorlage:DialogButton */
   const run = () => {
   const run = function() {
     document.querySelectorAll('dialog.zum-dialog').forEach((elem) => {
     document.querySelectorAll('dialog.zum-dialog').forEach(function(elem) {
       if(elem.dataset.dialogCleanedup === 'true') { return; }
       if(elem.dataset.dialogCleanedup === 'true') { return; }
       elem.dataset.dialogCleanedup = 'true';
       elem.dataset.dialogCleanedup = 'true';
       [elem.firstElementChild, elem.lastElementChild]
       [elem.firstElementChild, elem.lastElementChild]
         .filter((e) => e && e.tagName === 'P' && e.textContent === '')
         .filter(function(e){return e && e.tagName === 'P' && e.textContent === '';})
         .forEach((e) => elem.removeChild(e))
         .forEach(function(e) { elem.removeChild(e);})
     });
     });
     document.querySelectorAll('[data-dialog-opener-id]').forEach((elem) => {
     document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
       if(elem.dataset.dialogCleanedup === 'true') { return; }
       if(elem.dataset.dialogCleanedup === 'true') { return; }
       elem.dataset.dialogCleanedup = 'true';
       elem.dataset.dialogCleanedup = 'true';
       [elem.firstElementChild, elem.lastElementChild]
       [elem.firstElementChild, elem.lastElementChild]
         .filter((e) => e && e.tagName === 'P' && e.textContent === '')
         .filter(function(e){ return e && e.tagName === 'P' && e.textContent === '';})
         .forEach((e) => elem.removeChild(e))
         .forEach(function(e){ elem.removeChild(e);})
     });
     });
   };
   };
Zeile 107: Zeile 107:
(function(){
(function(){
   /* overrule mediawiki default popup-close event handler */
   /* overrule mediawiki default popup-close event handler */
   const run = () => {
   const run = function() {
     document.querySelectorAll('dialog.zum-dialog')
     document.querySelectorAll('dialog.zum-dialog')
     .forEach((elem) => elem.querySelectorAll('button.popup-close')
     .forEach(function(elem) {elem.querySelectorAll('button.popup-close')
       .forEach((btn) => btn.addEventListener('click', (ev) => {
       .forEach(function(btn) { btn.addEventListener('click', function(ev) {
         ev.stopImmediatePropagation();
         ev.stopImmediatePropagation();
       })));
       });});});
   };
   };
if (document.readyState === "loading") {
if (document.readyState === "loading") {

Version vom 18. Februar 2024, 16:52 Uhr

/* Das folgende JavaScript wird für alle Benutzer geladen. */
(function(){
  console.log("initializing zum-toggle");
  const run = function() {
    document.querySelectorAll('[data-zum-toggle-target]').forEach(function (elem) {
      var target = elem.dataset.zumToggleTarget;
      if(!target){ return; }
      elem.addEventListener('click', function (ev) {
        var value = elem.dataset.zumToggleValue !== 'true';
        document.querySelectorAll(target).forEach(function (tElem) {
          tElem.dataset.zumToggleVisible = value;
        });
        elem.dataset.zumToggleValue = String(value);
      });
    });
  };

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", run);
  } else {
    run();
  }
})();

/*
 * Dialog Javascript for
 * Vorlage:DialogButton
 *
 *
 */

(function(){
  /* add dialog opener event handler */
  const run = function(){
    document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
      if(elem.dataset.dialogOpenerAdded === 'true') { return; }


      var dialogId = elem.dataset.dialogOpenerId;
      var dialog = document.getElementById(dialogId);

      elem.dataset.dialogOpenerAdded = 'true';
      elem.addEventListener('click', function(ev) {
        dialog.showModal();
        ev.stopPropagation();
        return false;
      });
    });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
    /* close on click outside of dialog content */
    const run = function(){
    document.querySelectorAll('dialog.zum-dialog').forEach(function(elem){
      if(elem.dataset.dialogCloseonBackdropAdded === 'true') { return; }
      elem.dataset.dialogCloseonBackdropAdded = 'true';

      elem.addEventListener('mousedown', function(ev){
        if(ev.target !== elem){return true;}
        var rect = ev.target.getBoundingClientRect();
        if(ev.x >= rect.left 
        && ev.x <= rect.right 
        && ev.y >= rect.top 
        && ev.y <= rect.bottom) { return true; }

        ev.target.close();
        ev.stopPropagation();
        return false;
      });
    });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
  /*cleanup empty p tags, at beginning and end of dialogs created by Vorlage:DialogButton */
  const run = function() {
    document.querySelectorAll('dialog.zum-dialog').forEach(function(elem) {
      if(elem.dataset.dialogCleanedup === 'true') { return; }
      elem.dataset.dialogCleanedup = 'true';
      [elem.firstElementChild, elem.lastElementChild]
        .filter(function(e){return e && e.tagName === 'P' && e.textContent === '';})
        .forEach(function(e) { elem.removeChild(e);})
    });
    document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
      if(elem.dataset.dialogCleanedup === 'true') { return; }
      elem.dataset.dialogCleanedup = 'true';
      [elem.firstElementChild, elem.lastElementChild]
        .filter(function(e){ return e && e.tagName === 'P' && e.textContent === '';})
        .forEach(function(e){ elem.removeChild(e);})
    });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
  /* overrule mediawiki default popup-close event handler */
  const run = function() {
    document.querySelectorAll('dialog.zum-dialog')
     .forEach(function(elem) {elem.querySelectorAll('button.popup-close')
       .forEach(function(btn) { btn.addEventListener('click', function(ev) {
         ev.stopImmediatePropagation();
       });});});
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();