MediaWiki:CustomSearch.js

From Wiktionary, the free dictionary
Jump to navigation Jump to search

Note: You may have to bypass your browser’s cache to see the changes. In addition, after saving a sitewide CSS file such as MediaWiki:Common.css, it will take 5-10 minutes before the changes take effect, even if you clear your cache.

  • Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
  • Konqueror and Chrome: click Reload or press F5;
  • Opera: clear the cache in Tools → Preferences;
  • Internet Explorer: hold Ctrl while clicking Refresh, or 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);
    }
});