MediaWiki:Common.js: Difference between revisions

From Fatesend Wiki
Jump to navigation Jump to search
Created page with "Any JavaScript here will be loaded for all users on every page load.: (function () { // If there are no DP links on the page, don't load anything. if (!document.querySelector('a[href*="divine-pride.net/database/item/"]')) return; var s = document.createElement('script'); s.src = 'https://www.divine-pride.net/scripts/tooltip.js'; s.async = true; document.head.appendChild(s); })();"
 
No edit summary
Line 8: Line 8:
   s.async = true;
   s.async = true;
   document.head.appendChild(s);
   document.head.appendChild(s);
})();
(function () {
  function loadScriptOnce(src, id) {
    return new Promise(function (resolve, reject) {
      if (document.getElementById(id)) return resolve();
      var s = document.createElement('script');
      s.id = id;
      s.src = src;
      s.async = true;
      s.onload = resolve;
      s.onerror = reject;
      document.head.appendChild(s);
    });
  }
  // Your hosted ROBrowser API
  var RO_API_JS = '/robrowser/api.js';
  function openViewer(el) {
    var sprite = el.getAttribute('data-sprite') || '';
    var jobId = parseInt(el.getAttribute('data-jobid') || '0', 10) || 0;
    var job = el.getAttribute('data-job') || '';
    var robe = el.getAttribute('data-robe') || '';
    var ro = new window.ROBrowser({
      application: window.ROBrowser.APP.MODELVIEWER,
      type: window.ROBrowser.TYPE.POPUP,
      width: 820,
      height: 520,
      // Start with this. If assets don't load, we’ll switch to your own hosted client assets.
      remoteClient: 'https://grf.robrowser.com/',
      skipIntro: true,
      skipServerList: true,
      accessory: sprite,
      jobId: jobId,
      job: job,
      robe: robe
    });
    ro.start();
  }
  document.addEventListener('click', function (e) {
    var a = e.target.closest && e.target.closest('.dp-modelviewer');
    if (!a) return;
    e.preventDefault();
    loadScriptOnce(RO_API_JS, 'robrowser-api')
      .then(function () {
        if (!window.ROBrowser) {
          console.error('ROBrowser not loaded. Check /robrowser/api.js');
          return;
        }
        openViewer(a);
      })
      .catch(function (err) {
        console.error('Failed to load ROBrowser API JS:', err);
      });
  });
})();
})();

Revision as of 14:55, 27 January 2026

/* Any JavaScript here will be loaded for all users on every page load. */
(function () {
  // If there are no DP links on the page, don't load anything.
  if (!document.querySelector('a[href*="divine-pride.net/database/item/"]')) return;

  var s = document.createElement('script');
  s.src = 'https://www.divine-pride.net/scripts/tooltip.js';
  s.async = true;
  document.head.appendChild(s);
})();


(function () {
  function loadScriptOnce(src, id) {
    return new Promise(function (resolve, reject) {
      if (document.getElementById(id)) return resolve();
      var s = document.createElement('script');
      s.id = id;
      s.src = src;
      s.async = true;
      s.onload = resolve;
      s.onerror = reject;
      document.head.appendChild(s);
    });
  }

  // Your hosted ROBrowser API
  var RO_API_JS = '/robrowser/api.js';

  function openViewer(el) {
    var sprite = el.getAttribute('data-sprite') || '';
    var jobId = parseInt(el.getAttribute('data-jobid') || '0', 10) || 0;
    var job = el.getAttribute('data-job') || '';
    var robe = el.getAttribute('data-robe') || '';

    var ro = new window.ROBrowser({
      application: window.ROBrowser.APP.MODELVIEWER,
      type: window.ROBrowser.TYPE.POPUP,
      width: 820,
      height: 520,

      // Start with this. If assets don't load, we’ll switch to your own hosted client assets.
      remoteClient: 'https://grf.robrowser.com/',

      skipIntro: true,
      skipServerList: true,

      accessory: sprite,
      jobId: jobId,
      job: job,
      robe: robe
    });

    ro.start();
  }

  document.addEventListener('click', function (e) {
    var a = e.target.closest && e.target.closest('.dp-modelviewer');
    if (!a) return;
    e.preventDefault();

    loadScriptOnce(RO_API_JS, 'robrowser-api')
      .then(function () {
        if (!window.ROBrowser) {
          console.error('ROBrowser not loaded. Check /robrowser/api.js');
          return;
        }
        openViewer(a);
      })
      .catch(function (err) {
        console.error('Failed to load ROBrowser API JS:', err);
      });
  });
})();