Benutzer:Rob/common.js

Aus WORLDFISH WIKI
Version vom 28. November 2018, 09:10 Uhr von Rob (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ const POSITION_ABOVE = 0; const POSITION_BEYOND = 1; const ID_TOOLBAR = "cebToolbar"; // Set this value to the ID of the targ…“)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Gehe zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.

        const POSITION_ABOVE = 0;
        const POSITION_BEYOND = 1;
        const ID_TOOLBAR = "cebToolbar";

        // Set this value to the ID of the target text area:
        var nameOfTargetBox = null;
        var targetNode = null;

        //Insert buttons with properties text, icon, prefix, suffix, etc. (see createButtons for details)
        var buttonList = [];

        function addToolbar(referenceNode, position)
        {
            if(!referenceNode) {
                console.error("Cannot add tool bar, invalid reference node");
                return;
            }
            const buttons = createButtons();

            const toolbar = document.createElement("div");
            toolbar.setAttribute("id", ID_TOOLBAR);

            for(var i = 0; i < buttons.length; i++)
            {
                toolbar.appendChild(buttons[i]);
            }

            if(position == POSITION_BEYOND)
                referenceNode.insertAdjacentElement("afterend", toolbar);
            else
                referenceNode.insertAdjacentElement("beforebegin", toolbar);
        }

        function insertText(textBeforeCursor, textAfterCursor) {
            const start = targetNode.selectionStart;
            const end = targetNode.selectionEnd;
            const text = targetNode.value;
            var output = text.substr(0, start) + textBeforeCursor;
            output += text.substr(start, end - start);
            output += textAfterCursor + text.substr(end, text.length - end);
            targetNode.value = output;
            targetNode.selectionStart = start + textBeforeCursor.length;
            targetNode.selectionEnd = end + textBeforeCursor.length;
            targetNode.focus();
        }

        function createButtons() {
            const buttonElements = [];
            for(var i = 0; i < buttonList.length; i++)
            {
                const button = buttonList[i];
                const buttonElement = document.createElement("button");
                buttonElement.type = "button";
                buttonElement.innerHTML = button.content;
                buttonElement.onclick = function () {
                    insertText(button.prefix, button.suffix);
                };
                buttonElements.push(buttonElement);
            }
            return buttonElements;
        }

        function setup() {
            /* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
            if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
                mw.loader.using('user.options').then(function () {
                    targetNode = document.getElementById(nameOfTargetBox);
                    addToolbar(targetNode, POSITION_BEYOND);
                });
            }
        }
    

buttonList = [{"content":"Quote","prefix":"\"","suffix":"\""},{"content":"Kommentar","prefix":"<!-- ","suffix":" -->"},{"content":"Noch ein Button","prefix":"Nur ein Präfix","suffix":""}];
nameOfTargetBox = "wpTextbox1";
setup();