MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
 
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Buy Me a Coffee button in sidebar */


document.documentElement.setAttribute('data-commonjs', 'loaded');
function injectBmc() {
  // Find the placeholder link (works for /Bmc-placeholder and /wiki/Bmc-placeholder)
  var link =
    document.querySelector('#mw-panel a[href$="Bmc-placeholder"]') ||
    document.querySelector('#mw-panel a[href*="Bmc-placeholder"]') ||
    document.querySelector('#mw-panel a[href*="bmc-placeholder"]');


  if (!link) return false;


document.addEventListener('DOMContentLoaded', function () {
  // Replace the whole <li> contents so we don't keep a bullet link
   var panel = document.getElementById('mw-panel');
   var li = link.closest('li');
   if (!panel) return;
   if (!li) return false;
 
  // Avoid duplicates
  if (li.dataset.loaded === '1') return true;
  li.dataset.loaded = '1';
 
  li.innerHTML = '<div id="bmc-button-container" style="padding:0.25rem 0;"></div>';


   var container = document.createElement('div');
   var container = document.getElementById('bmc-button-container');
   container.style.marginTop = '0.75rem';
   if (!container) return false;


   var script = document.createElement('script');
   var script = document.createElement('script');
   script.src = 'https://cdnjs.buymeacoffee.com/1.0.0/button.prod.min.js';
   script.src = 'https://cdnjs.buymeacoffee.com/1.0.0/button.prod.min.js';
  script.async = true;
   script.setAttribute('data-name', 'bmc-button');
   script.setAttribute('data-name', 'bmc-button');
   script.setAttribute('data-slug', 'Raleighpedia');
   script.setAttribute('data-slug', 'Raleighpedia');
Line 23: Line 37:


   container.appendChild(script);
   container.appendChild(script);
   panel.appendChild(container);
   return true;
}
 
document.addEventListener('DOMContentLoaded', function () {
  // Try a few times because Vector 2022 can re-render the sidebar
  injectBmc();
  setTimeout(injectBmc, 300);
  setTimeout(injectBmc, 1200);
});
});