Jump to content

MediaWiki:Common.js: Difference between revisions

From Raleighpedia
Created page with "Any JavaScript here will be loaded for all users on every page load.: mw.hook('wikipage.content').add(function () { var container = document.getElementById('buymeacoffee'); if (!container) return; // Prevent duplicate insertion if (container.dataset.loaded === '1') return; container.dataset.loaded = '1'; var script = document.createElement('script'); script.src = 'https://cdnjs.buymeacoffee.com/1.0.0/button.prod.min.js'; script.setAttribute('data-..."
 
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Buy Me a Coffee button in sidebar */


mw.hook('wikipage.content').add(function () {
function injectBmc() {
   var container = document.getElementById('buymeacoffee');
  // Find the placeholder link (works for /Bmc-placeholder and /wiki/Bmc-placeholder)
  if (!container) return;
   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"]');


   // Prevent duplicate insertion
  if (!link) return false;
   if (container.dataset.loaded === '1') return;
 
   container.dataset.loaded = '1';
   // Replace the whole <li> contents so we don't keep a bullet link
  var li = link.closest('li');
  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.getElementById('bmc-button-container');
  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 21: Line 37:


   container.appendChild(script);
   container.appendChild(script);
  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);
});
});

Latest revision as of 15:48, 29 January 2026

/* Buy Me a Coffee button in sidebar */

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;

  // Replace the whole <li> contents so we don't keep a bullet link
  var li = link.closest('li');
  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.getElementById('bmc-button-container');
  if (!container) return false;

  var script = document.createElement('script');
  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-slug', 'Raleighpedia');
  script.setAttribute('data-color', '#FFDD00');
  script.setAttribute('data-font', 'Lato');
  script.setAttribute('data-text', 'Buy Raleighpedia a coffee');
  script.setAttribute('data-outline-color', '#000000');
  script.setAttribute('data-font-color', '#000000');
  script.setAttribute('data-coffee-color', '#ffffff');

  container.appendChild(script);
  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);
});