MediaWiki:Common.js: Difference between revisions

From Artifacts of Capitalism
No edit summary
No edit summary
Line 58: Line 58:
     $('a.external').attr('target', '_blank');
     $('a.external').attr('target', '_blank');
});
});
mw.loader.using( 'mediawiki.util', function () {
mw.hook('wikipage.content').add(function ($content) {
     if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'CreateAccount' ) {
    // Only run on Special:CreateAccount
        $( function () {
     if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') return;
            const form = $('#mw-createaccount-form');
            if (!form.length) return;


            const realNameDiv = form.find('#wpRealName').closest('.form-group, .mw-input, p');
    // Find the Real Name field
            if (!realNameDiv.length) return;
    const realNameInput = document.getElementById('wpRealName');
    if (!realNameInput) return;


            // --- Affiliation field ---
    // Locate the nearest form element (the real signup form)
            const affField = $(`
    const form = realNameInput.closest('form');
                <div class="form-group mw-input">
    if (!form) return;
                    <label for="wpAffiliation">Affiliation</label>
                    <input type="text" id="wpAffiliation" name="wpAffiliation"
                          required class="form-control mw-ui-input"/>
                </div>
            `);


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


            // Insert right after Real Name
    // --- Institutional Email field ---
            realNameDiv.after( affField, instField );
    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);
});
});

Revision as of 15:59, 11 November 2025

// 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);
});