Jump to content

MediaWiki:Common.js

From Oregon Church Wiki

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.
/* Any JavaScript here will be loaded for all users on every page load. */

/* Advanced Search binder for OregonChurch.net */
mw.loader.using('mediawiki.util').then(function () {
  function q(s) { return '"' + String(s).replace(/"/g, '\\"') + '"'; }

  function buildQuery(denom, county, lang) {
    var parts = [];
    if (denom)  parts.push('incategory:' + q('Category:' + denom));
    if (county) parts.push('incategory:' + q('Category:Churches in ' + county + ' County'));
    if (lang)   parts.push('incategory:' + q('Category:' + lang));
    if (parts.length === 0) {
      // Fallback if all are ANY – adjust to your umbrella category if you have one
      // parts.push('incategory:"Category:Churches in Oregon"');
    }
    return parts.join(' ');
  }

  function bindAdvancedSearch(root) {
    var $root = $(root);
    var denom  = $root.find('#oc-denom')[0];
    var county = $root.find('#oc-county')[0];
    var lang   = $root.find('#oc-lang')[0];
    var runBtn = $root.find('#oc-run')[0];
    var reset  = $root.find('#oc-reset')[0];
    if (!denom || !county || !lang || !runBtn || !reset) return;

    runBtn.addEventListener('click', function () {
      var query = buildQuery(denom.value.trim(), county.value.trim(), lang.value.trim());
      var url = mw.util.getUrl('Special:Search', { search: query, ns0: 1 });
      location.href = url;
    });

    reset.addEventListener('click', function () {
      denom.value = '';
      county.value = '';
      lang.value = '';
    });
  }

  // Bind once per #oc-adv on the page
  $(function () {
    $('#oc-adv').each(function (_, el) { bindAdvancedSearch(el); });
  });
});