MediaWiki:CustomSearch.js

From escforumwiki
Jump to navigation Jump to search

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)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// {{documentation}}
/*
** This file should only be included for pages that use it. At the moment that is only [[Help:Tips_and_tricks]]. If you wish to add pages to use this, edit the relevant section of Common.js
** FireFox and IE 7 allow sites to customize the integrated search box. Below exposes that through [[WT:CUSTOM]]. 
*/

$(function () {
    // Find the container node and bail if it's not there
    var searches = document.getElementById('wtCustomIntegratedSearchProviders');
    if (!searches) return;

    // Remove all children from 'searches'
    while (searches.hasChildNodes()) {
        searches.removeChild(searches.firstChild);
    }

    // Bail out in unsupported browsers with a message that this doesn't work
    if (!(window.external && ("AddSearchProvider" in window.external))) {
        var span = document.createElement('em');
        span.appendChild(document.createTextNode('This feature is not supported by your browser. Sorry!'));
        searches.appendChild(span);
        return;
    }

    // MediaWiki built-in search
    appendSearchProviderLink(
        'MediaWiki:SearchEnWiktWithMediaWiki.xml',
        'Add integrated search provider “English Wiktionary”.'
    );

    // English Witionary search with Google
    appendSearchProviderLink(
        'MediaWiki:SearchEnWiktWithGoogle.xml',
        'Add integrated search provider “English Wiktionary via Google”.'
    );

    // All Witionary search with Google
    appendSearchProviderLink(
        'MediaWiki:SearchAllWiktWithGoogle.xml',
        'Add integrated search provider “All Wiktionaries via Google”.'
    );

    // English Witionary search with Ninjawords
    appendSearchProviderLink(
        'MediaWiki:SearchWithNinjawords.xml',
        'Add integrated search provider “English Wiktionary via Ninjawords”.'
    );

    // Anchor creator helper
    function appendSearchProviderLink(providerXml, linkText) {
        var anchor = document.createElement("a");
        anchor.setAttribute('href', '#');
        anchor.appendChild(document.createTextNode(linkText));

        var providerXmlUrl =
            'http://en.wiktionary.org/w/index.php?action=raw&title=' +
            encodeURIComponent(providerXml);

        anchor.onclick = function () {
            window.external.AddSearchProvider(providerXmlUrl);
            return false;
        };

        if (searches.hasChildNodes()) {
            searches.appendChild(document.createElement("br"));
        }

        searches.appendChild(anchor);
    }
});