User:Mike Dillon/Scripts/searchNewWindow.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.

// Requires: [[User:Mike Dillon/Scripts/i18n.js]], [[User:Mike Dillon/Scripts/easydom.js]]

// searchNewWindowDefault: Controls default state of checkbox on page load; "false" if unspecified
var searchNewWindowDefault;
if (searchNewWindowDefault == null) {
    searchNewWindowDefault = false;
}

// Messages
wfAddMsg("en", "searchNewWindowLabel", "New window?");
wfAddMsg("es", "searchNewWindowLabel", "¿Ventana nueva?");

$(function () {
    // Find the search form
    var searchform = document.getElementById("searchform");
    if (!searchform) return;

    // Get the first div inside (holds the input elements)
    var searchdiv = searchform.getElementsByTagName("div")[0];
    if (!searchdiv) return;

    with (easydom) {
        // Build the checkbox and onchange handler
        var newWindowCheckbox = input({
            "id": "searchNewWindow",
            "type": "checkbox",
            "onchange": function () {
                if (this.checked) {
                    searchform.setAttribute("target", "_blank");
                } else {
                    searchform.setAttribute("target", "_top");
                }
            }
        });

        // Add the checkbox and label to the div
        searchdiv.appendChild(div(
            { "class": "searchNewWindow" },
            newWindowCheckbox, " ",
            label({ "for": "searchNewWindow" }, wfMsg("searchNewWindowLabel"))));
    }

    // If searchNewWindowDefault is true, click the checkbox
    if (searchNewWindowDefault) {
        newWindowCheckbox.click();
    }
});