MediaWiki:Common.js

From Artifacts of Capitalism
Revision as of 15:59, 11 November 2025 by Abrano (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
// Ensure viewport meta exists (iOS layout fix)
(function () {
  if (!document.querySelector('meta[name="viewport"]')) {
    var m = document.createElement('meta');
    m.name = 'viewport';
    m.content = 'width=device-width, initial-scale=1, shrink-to-fit=no';
    document.head.appendChild(m);
  }
})();
mw.hook('wikipage.content').add(function ($c) {
  var groups = mw.config.get('wgUserGroups') || [];
  if (groups.indexOf('approver') !== -1) return; // approvers keep the checkbox
  // Hide the Draft namespace checkbox in the advanced search pane
  $c.find('input[name="ns' + 3000 + '"]').closest('label, .mw-advancedSearch-ns_option').hide();
});
// Load Google CSE only on Advanced_search page
mw.loader.using('mediawiki.util').then(function () {
  var page = mw.config.get('wgPageName');
  if (page !== 'Artifacts_of_Capitalism:Advanced_search') return;

  console.log('[CSE] Loading on:', page);

  // Ensure CSE callback setup exists before script load
  window.__gcse = {
    searchCallbacks: {
      ready: function () {
        try {
          var params = new URLSearchParams(window.location.search);
          var q = params.get('q');
          if (q) {
            var hash = 'gsc.tab=0&gsc.q=' + encodeURIComponent(q);
            if (!window.location.hash.includes('gsc.q=')) {
              window.location.hash = hash;
              console.log('[CSE] Applied query:', q);
            }
          }
        } catch (err) {
          console.warn('[CSE] Query error:', err);
        }
      }
    }
  };

  // Inject Google CSE script
  var script = document.createElement('script');
  script.async = true;
  script.src = 'https://cse.google.com/cse.js?cx=b194aa5e4d64344ad';
  script.onload = function () {
    console.log('[CSE] Script loaded successfully');
  };
  script.onerror = function () {
    console.error('[CSE] Failed to load cse.js');
  };
  document.body.appendChild(script);
});
// Open all external links in a new window or tab
$(document).ready(function() {
    $('a.external').attr('target', '_blank');
});
mw.hook('wikipage.content').add(function ($content) {
    // Only run on Special:CreateAccount
    if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') return;

    // Find the Real Name field
    const realNameInput = document.getElementById('wpRealName');
    if (!realNameInput) return;

    // Locate the nearest form element (the real signup form)
    const form = realNameInput.closest('form');
    if (!form) return;

    // --- Affiliation field ---
    const affDiv = document.createElement('div');
    affDiv.className = 'mw-input';
    affDiv.innerHTML = `
        <label for="wpAffiliation">Affiliation</label>
        <input type="text" id="wpAffiliation" name="wpAffiliation"
               required class="mw-ui-input form-control"/>
    `;

    // --- Institutional Email field ---
    const instDiv = document.createElement('div');
    instDiv.className = 'mw-input';
    instDiv.innerHTML = `
        <label for="wpInstitutionalEmail">Institutional Email</label>
        <input type="email" id="wpInstitutionalEmail" name="wpInstitutionalEmail"
               required class="mw-ui-input form-control"/>
    `;

    // Insert new fields right after Real Name
    const realNameDiv = realNameInput.closest('.mw-input, .form-group, p') || realNameInput.parentNode;
    realNameDiv.insertAdjacentElement('afterend', instDiv);
    realNameDiv.insertAdjacentElement('afterend', affDiv);
});