User:Kanegasi/editsummarypresets.js

From Minecraft Wiki
Jump to: navigation, search

Documentation may be created at User:Kanegasi/editsummarypresets.js/doc.

Note: After saving, 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 (⌘ Cmd+R on a Mac)
  • Google Chrome: Press Ctrl+⇧ Shift+R (⌘ Cmd+⇧ Shift+R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl+F5
  • Opera: Clear the cache in Tools → Preferences
/***********************************************************************************************/
/* This is a modified version of http://en.wikipedia.org/wiki/User:ErrantX/defaultsummaries.js
   and http://en.wikipedia.org/wiki/User:MC10/defaultsummaries.js.

   This version displays a single menu of custom edit summaries across all namespaces.
   See http://en.wikipedia.org/wiki/User:Equazcion/CustomSummaryPresets for full instructions.

   Place the following in your common.js page or whatever script page for your skin:

   if (mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit') {
       var customSummaries = [
           'your first preset summary',
           'your second preset summary',
           'a third preset using [[a wiki hotlink' + ']]',
       ];
       mw.loader.load( 'User:Kanegasi/editsummarypresets.js' );
   }

   Do not forget that end bracket and semi-colon!

   The extra single quotes and plus sign on the link is to prevent the wiki software from
   creating a link as the variables are loaded. This normally happens with templates being
   transcluded or substituted in scripts, so the single quotes and plus may not be needed.

   The extra "if" line is to prevent the script from running on any page BUT edit/submit pages,
   since it is useless on other pages.

   Source: http://en.wikipedia.org/wiki/User:Equazcion/CustomSummaryPresets.js                 */
/***********************************************************************************************/

var editsummOriginalSummary = "";

function editsummAddOptionToDropdown(dropdown, optionText) {
    var option = document.createElement("option");
    var optionTextNode = document.createTextNode(optionText);
    option.appendChild(optionTextNode);
    dropdown.appendChild(option);
}

function editsummAddCatToDropdown(dropdown, catText) {
    var option = document.createElement("option");
    option.disabled = true;
    option.selected = true;
    var optionTextNode = document.createTextNode(catText);
    option.appendChild(optionTextNode);
    dropdown.appendChild(option);
}

// Save the original value of the edit summary field
function editsummOnCannedSummarySelected() {
    editsummOriginalSummary = document.getElementById("wpSummary");
    if (editsummOriginalSummary) {
        editsummOriginalSummary = editsummOriginalSummary.value;
    } else {
        editsummOriginalSummary = "";
    }
    var idx = this.selectedIndex;
    var canned = this.options[idx].text;
    var newSummary = editsummOriginalSummary;

// Append old edit summary with space, if exists,
// and last character != space
    if (newSummary.length !== 0 && newSummary.charAt(newSummary.length - 1) !== " ") {
        newSummary += " ";
    }
    newSummary += canned;
    document.getElementById("wpSummary").value = newSummary;
}

// Loop through siblings, looking for editCheckboxes class
$(function () {
    var insertBeforeThis = document.getElementById("wpSummary");
    while (insertBeforeThis) {
        if (insertBeforeThis.className === "editCheckboxes") {
            break;
        }
        insertBeforeThis = insertBeforeThis.nextSibling;
    }

// If we failed to find the editCheckboxes class, or insertBeforeThis is null
    if (!insertBeforeThis || insertBeforeThis.className !== "editCheckboxes") {
        return;
    }
    editsummOriginalSummary = editsummOriginalSummary.value;

// For convenience, add a dropdown box with some canned edit
// summaries to the form.
    var dropdown = document.createElement("select");
    dropdown.style.width = "50%";
    dropdown.style.margin = "0 4px 0 0";
    dropdown.onchange = editsummOnCannedSummarySelected;
    editsummAddCatToDropdown(dropdown, "Summary presets");

    for (var i=0; i<customSummaries.length; i++) {
        if (typeof customSummaries[i] !== 'undefined') {
             editsummAddOptionToDropdown(dropdown, customSummaries[i]);
        }
    }

    var theParent = insertBeforeThis.parentNode;
    theParent.insertBefore(dropdown, insertBeforeThis);
    theParent.insertBefore(document.createElement("br"), dropdown);
});