MediaWiki:Gadget-AddProgrammingToolbar.js: Unterschied zwischen den Versionen

Aus Open Source Ecology - Germany
Zur Navigation springen Zur Suche springen
(fix \")
(fix \")
Zeile 1: Zeile 1:
 
//<pre>
 
//<pre>
 +
/*
 +
o ptions: { *
 +
pre:'{|'+classStr+"\n",//<pre>
 
/*
 
/*
 
  o ptions: { *
 
  o ptions: { *
 
  pre:'{|'+classStr+"\n",
 
  pre:'{|'+classStr+"\n",
 +
peri:table,
 +
post:'|}',
 +
ownline:true
 +
 +
type:                          "booklet"
 +
label string:                  non-localizable label string
 +
labelMsg string:              key for localizable message string
 +
deferLoad                      boolean
 +
pages object:                  map of name keys to further objects:
 +
layout string required:      'table' or 'characters'
 +
label string:                  non-localizable label string
 +
labelMsg string:              key for localizable message string
 +
headings string[]:            array of objects? {textMsg: key} ??
 +
rows object[] optional?:      array of objects? {'row key name': {message object?}}
 +
characters string[] optional?: array of strings of little character bits for insertion (???!)
 +
 +
*/
 +
 +
 +
//<source lang="javascript">
 +
var thismessages = {
 +
  de : {
 +
    "programmingtoolbar-label-blockquote":        "Zitat-Block",
 +
    "programmingtoolbar-label-nbsp":              "trenngeschütztes Leerzeichen",
 +
    "programmingtoolbar-label-nnbsp-template":    "enges trenngeschütztes Leerzeichen (Vorlage)",
 +
    "programmingtoolbar-label-strikethrough":      "durchgestrichen",
 +
    "programmingtoolbar-label-syntaxhighlight":    "Syntax Hervorhebung",
 +
    "programmingtoolbar-label-underline":          "unterstrichen",
 +
    "programmingtoolbar-peri-comment":            "Kommentar:",
 +
    "programmingtoolbar-peri-defInlineTerm":      "Parameter",
 +
    "programmingtoolbar-peri-defInlineDefinition": "Erläuterungen",
 +
    "programmingtoolbar-peri-ref":                "Referenz/Zitat",
 +
    "programmingtoolbar-peri-tvar":                "variabler Inhalt, Text, Link o.ä.",
 +
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
 +
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
 +
    "programmingtoolbar-sectionlabel-programming": "Programmierung",
 +
    "programmingtoolbar-pagelabel-templates":      "Vorlagen",
 +
    "programmingtoolbar-pagelabel-translate":      "Übersetzen",
 +
    "programmingtoolbar-pagelabel-wikitags":      "Wiki/HTML Tags"
 +
  },
 +
  "de-formal" : {
 +
    "programmingtoolbar-label-blockquote":        "Zitat-Block",
 +
    "programmingtoolbar-label-nbsp":              "trenngeschütztes Leerzeichen",
 +
    "programmingtoolbar-label-nnbsp-template":    "enges trenngeschütztes Leerzeichen (Vorlage)",
 +
    "programmingtoolbar-label-strikethrough":      "durchgestrichen",
 +
    "programmingtoolbar-label-syntaxhighlight":    "Syntax Hervorhebung",
 +
    "programmingtoolbar-label-underline":          "unterstrichen",
 +
    "programmingtoolbar-peri-comment":            "Kommentar:",
 +
    "programmingtoolbar-peri-defInlineTerm":      "Parameter",
 +
    "programmingtoolbar-peri-defInlineDefinition": "Erläuterungen",
 +
    "programmingtoolbar-peri-ref":                "Referenz/Zitat",
 +
    "programmingtoolbar-peri-tvar":                "variabler Inhalt, Text, Link o.ä.",
 +
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
 +
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
 +
    "programmingtoolbar-sectionlabel-programming": "Programmierung",
 +
    "programmingtoolbar-pagelabel-templates":      "Vorlagen",
 +
    "programmingtoolbar-pagelabel-translate":      "Übersetzen",
 +
    "programmingtoolbar-pagelabel-wikitags":      "Wiki/HTML Tags"
 +
  },
 +
  en : {
 +
    "programmingtoolbar-label-blockquote":        "block quote",
 +
    "programmingtoolbar-label-nbsp":              "non-breaking space",
 +
    "programmingtoolbar-label-nnbsp-template":    "narrow non-breaking space (template)",
 +
    "programmingtoolbar-label-strikethrough":      "strike through",
 +
    "programmingtoolbar-label-syntaxhighlight":    "syntax highlighting",
 +
    "programmingtoolbar-label-underline":          "underlined",
 +
    "programmingtoolbar-peri-comment":            "comment:",
 +
    "programmingtoolbar-peri-defInlineTerm":      "Parameter",
 +
    "programmingtoolbar-peri-defInlineDefinition": "Explanations",
 +
    "programmingtoolbar-peri-ref":                "Reference/Citation",
 +
    "programmingtoolbar-peri-tvar":                "variable content, text, link etc.",
 +
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
 +
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
 +
    "programmingtoolbar-sectionlabel-programming": "Programming",
 +
    "programmingtoolbar-pagelabel-templates":      "Templates",
 +
    "programmingtoolbar-pagelabel-translate":      "Translate",
 +
    "programmingtoolbar-pagelabel-wikitags":      "Wiki/HTML tags"
 +
  }
 +
};
 +
 +
mw.messages.set(thismessages["en"]);
 +
var lang = mw.config.get("wgUserLanguage");
 +
if (lang && lang !== "en" && lang in thismessages) {
 +
  mw.messages.set(thismessages[lang]);
 +
}
 +
 +
var customizeThisUserWikiEditorToolbar = function () {
 +
  $("#wpTextbox1").wikiEditor("addToToolbar", {
 +
    "section": "advanced",
 +
    "group": "format",
 +
    "tools": {
 +
      "strikethrough": {
 +
        label: mw.message("programmingtoolbar-label-strikethrough"),
 +
        type: "button",
 +
        icon: "https://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png",
 +
        action: {
 +
          type: "encapsulate",
 +
          options: {
 +
            pre: "<s>",
 +
            post: "</s>"
 +
          }
 +
        }
 +
      },
 +
      "underline": {
 +
        label: mw.message("programmingtoolbar-label-underline"),
 +
        type: "button",
 +
        icon: "https://upload.wikimedia.org/wikipedia/commons/f/fd/Button_underline.png",
 +
        action: {
 +
          type: "encapsulate",
 +
          options: {
 +
            pre: "<u>",
 +
            post: "</u>"
 +
          }
 +
        }
 +
      },
 +
      "syntaxhighlight": {
 +
        label: mw.message("programmingtoolbar-label-syntaxhighlight"),
 +
        type: "button",
 +
        icon: "https://upload.wikimedia.org/wikipedia/commons/d/d2/Button_source.png",
 +
        action: {
 +
          type: "encapsulate",
 +
          options: {
 +
            pre: "<syntaxhighlight lang=\"html4strict\">\n",
 +
            post: "\n</syntaxhighlight>"
 +
          }
 +
        }
 +
      },
 +
      "blockquote": {
 +
        label: mw.message("programmingtoolbar-label-blockquote"),
 +
        type: "button",
 +
        icon: "https://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png",
 +
        action: {
 +
          type: "encapsulate",
 +
          options: {
 +
            pre: "<blockquote>\n",
 +
            post: "\n</blockquote>"
 +
          }
 +
        }
 +
      }
 +
    }
 +
  });
 +
  $("#wpTextbox1").wikiEditor("addToToolbar", {
 +
    "sections": {
 +
      "programming": {
 +
        type: "booklet",
 +
        label: mw.message("programmingtoolbar-sectionlabel-programming")
 +
      }
 +
    }
 +
  });
 +
 +
  $("#wpTextbox1").wikiEditor("addToToolbar", {
 +
    "section": "programming",
 +
    "pages": {
 +
      "tags": {
 +
        "layout": "characters",
 +
        label: mw.message("programmingtoolbar-pagelabel-wikitags"),
 +
        "characters": [{
 +
          label: "nbsp;",
 +
          labelMsg: mw.message("programmingtoolbar-label-nbsp"),
 +
          action: {
 +
            type: "encapsulate", options: {pre: "&nbsp;", post: ""}
 +
          }
 +
        },{
 +
          label: "{{nnbsp}}",
 +
          labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
 +
          }
 +
        }, {
 +
          label: "()",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "(", post: ")"}
 +
          }
 +
        }, {
 +
          label: "[]",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "[", post: "]"}
 +
          }
 +
        }, {
 +
          label: "[[]]",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "[[", post: "]]"}
 +
          }
 +
        }, {
 +
          label: "{{}}",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{", post: "}}"}
 +
          }
 +
        }, {
 +
          label: "{{{}}}",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{{", "peri": "1", post: "}}}"}
 +
          }
 +
        }, {
 +
          label: "{{{|}}}",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{{|", "peri": "1", post: "}}}"}
 +
          }
 +
        }, {
 +
          label: "[[Kategorie:]]",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "[[Kategorie: ", post: "]]"}
 +
          }
 +
        }, {
 +
          label: "[[Category:]]",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "[[Category: ", post: "]]"}
 +
          }
 +
        }, {
 +
          label: "[[Attribut:]]",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              /* no selection */
 +
              pre: "[[Attribut: ",
 +
              post: "]]",
 +
              /* a selection */
 +
              regex: /\s*(.+)\s*/,
 +
              regexReplace: "[[Attribut: \$1 |\$1]]"
 +
            }
 +
          }
 +
        }, {
 +
          label: "[[property:]]",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              /* no selection */
 +
              pre: "[[property: ",
 +
              post: "]]",
 +
              /* a selection */
 +
              regex: /\s*(.+)\s*/,
 +
              regexReplace: "[[property: \$1 |\$1]]"
 +
            }
 +
          }
 +
        }, {
 +
          label: "#WEITERLEITUNG [[]]",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "#WEITERLEITUNG [[", post: "]]"}
 +
          }
 +
        }, {
 +
          label: "#REDIRECT [[]]",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "#REDIRECT [[", post: "]]"}
 +
          }
 +
        },
 +
        "__INHALTSVERZEICHNIS__",
 +
        "__TOC__",
 +
        {
 +
          label: "code",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<code>", post: "</code>"}
 +
          }
 +
        }, {
 +
          label: "code nowiki code",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<code><nowiki>", post: "</nowiki></code>"}
 +
          }
 +
        }, {
 +
          label: "nowiki",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<nowiki>", post: "</nowiki>"}
 +
          }
 +
        }, {
 +
          label: "includeonly",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<includeonly>", post: "</includeonly>"}
 +
          }
 +
        }, {
 +
          label: "noinclude",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<noinclude>", post: "</noinclude>"}
 +
          }
 +
        }, {
 +
          label: "onlyinclude",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
 +
          }
 +
        },{
 +
          label: "math",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<math>", peri: "\begin{align}\n\begin{align}\n", post: "</math>"}
 +
          }
 +
        },{
 +
          label: "ref",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<ref name=\"\">", peri: mw.message("programmingtoolbar-peri-ref"), post: "</ref>"}
 +
          }
 +
        }, {
 +
          label: "references",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<references/>", post: ''}
 +
          }
 +
        }, {
 +
          label: "languages",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "<languages/>", post: ""}
 +
          }
 +
        }, {
 +
          label: "translate",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "\u003Ctranslate\u003E", post: "\u003C/translate\u003E"}
 +
          }
 +
        }, {
 +
          label: "tvar",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "<tvar|name>", peri: mw.message("programmingtoolbar-peri-tvar"), post: "</>"}
 +
          }
 +
        }, {
 +
          label: "tt",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<tt>", post: "</tt>"}
 +
          }
 +
        }, {
 +
          label: "comment",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<!-- ", "peri": mw.message("programmingtoolbar-peri-comment"), post: " -->"}
 +
          }
 +
        }, {
 +
          label: "comment lt--gt",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "&lt;!-- ", "peri": mw.message("programmingtoolbar-peri-comment"), post: " -->"}
 +
          }
 +
        }, {
 +
          label: "span",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<span style=\"\">", post: "</span>"}
 +
          }
 +
        }, {
 +
          label: "div",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "<div style=\"\">", post: "</div>"}
 +
          }
 +
        }, {
 +
          label: "{{SORTIERUNG:}}",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{SORTIERUNG: ", post: "}}"}
 +
          }
 +
        }, {
 +
          label: "{{DEFAULTSORT:}}",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{DEFAULTSORT: ", post: "}}"}
 +
          }
 +
        }, {
 +
          "label": "div.definition-inline",
 +
          "action": {
 +
            "type": "encapsulate",
 +
            "options": {
 +
              "pre": "<div class=\"definition-inline\">\n; ",
 +
              "peri": mw.message("programmingtoolbar-peri-defInlineTerm"),
 +
              "post": " : " + mw.message("programmingtoolbar-peri-defInlineDefinition") + "\n</div>"
 +
            }
 +
          }
 +
        }, {
 +
          label: "{{#arraymap:}}",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "{{#arraymap: ", peri: "{{{field|}}}", post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
 +
          }
 +
        }, {
 +
          label: "{{#arraymap:long}}",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              pre: "{{#arraymap: ",
 +
              peri: "{{{field|}}}",
 +
              post: "<!-- values\n-->|;<!-- split on ;\n-->|§<!-- assign temporary variable\n-->|[[My property::§]] <!-- output\n-->|&#32;•&#32;<!-- new output separator\n-->}}"
 +
            }
 +
          }
 +
        }, {
 +
          label: "if",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{#if: ", post: "| | }}"}
 +
          }
 +
        }, {
 +
          label: "if-trim",
 +
          action: {
 +
            type: "encapsulate", options: {pre: "{{#if: ", post: "trim-text|{{{parameter|}}} }}"}
 +
          }
 +
        }, {
 +
          label: "if long",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- if end\n-->"}
 +
          }
 +
        }, {
 +
          label: "switch CONTENTLANGUAGE",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              pre: "{{#switch: {{CONTENTLANGUAGE}}",
 +
              post: "<!--\n-->|de|de-formal= deutsch <!--\n-->| #default = english<!--\n-->}}<!-- switch end\n-->"
 +
            }
 +
          }
 +
        }, {
 +
          label: "switch",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              pre: "{{#switch: ",
 +
              post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- switch end\n-->"
 +
            }
 +
          }
 +
        }, {
 +
          label: "ol",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              pre: "<ol>",
 +
              peri: "<!--\n--><li></li><!--\n-->",
 +
              post: "</ol>"
 +
            }
 +
          }
 +
        }, {
 +
          label: "ul",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              pre: "<ul>",
 +
              peri: "<!--\n--><li></li><!--\n-->",
 +
              post: "</ul>"
 +
            }
 +
          }
 +
        }, {
 +
          label: "table",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {
 +
              pre: "<table>",
 +
              peri: "<!--\n--><tr><!--\n  --><td></td><!--\n--></tr><!--\n-->",
 +
              post: "</table>"
 +
            }
 +
          }
 +
        }, {
 +
          label: "tr",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "<tr>", peri: "<!--\n  --><td></td><!--\n-->", post: "</tr>"}
 +
          }
 +
        }, {
 +
          label: "th",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "<th>", post: "</th>"}
 +
          }
 +
        }, {
 +
          label: "td",
 +
          action: {
 +
            type: "encapsulate",
 +
            options: {pre: "<td>", post: "</td>"}
 +
          }
 +
        },
 +
          "┌",
 +
          "┬",
 +
          "┐",
 +
          "└",
 +
          "┴",
 +
          "┘",
 +
          "│",
 +
          "─",
 +
          "├",
 +
          "┼",
 +
          "┤"
 +
          /*  <s></s>  <sup></sup>  <sub></sub>  */
 +
        ]
 +
      },
 +
      "templates": {
 +
        "layout": "characters",
 +
        label: mw.message("programmingtoolbar-pagelabel-templates"),
 +
        "characters": [
 +
          {
 +
            label: "{{Keyboard}}",
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{Keyboard |", post: "}}"}
 +
            }
 +
          },{
 +
            label: "{{Tastatur}}",
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{Tastatur |", post: "}}"}
 +
            }
 +
          },/*{
 +
            label: "Zitat",
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{Zitat |", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "Zitat versteckt",
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{Zitat versteckt|", post: "}}"}
 +
            }
 +
          },
 +
          */
 +
          {
 +
            label: "nbsp;",
 +
            labelMsg: mw.message("programmingtoolbar-label-nbsp"),
 +
            action: {
 +
              type: "encapsulate", options: {pre: "&nbsp;", post: ""}
 +
            }
 +
          },{
 +
            label: "{{nnbsp}}",
 +
            labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
 +
            }
 +
          }, {
 +
            label: "()",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "(", post: ")"}
 +
            }
 +
          }, {
 +
            label: "[]",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "[", post: "]"}
 +
            }
 +
          }, {
 +
            label: "[[]]",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "[[", post: "]]"}
 +
            }
 +
          }, {
 +
            label: "{{}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "{{{}}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{{", post: "}}}"}
 +
            }
 +
          }, {
 +
            label: "{{{|}}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{{", post: "|}}}"}
 +
            }
 +
          }, {
 +
            label: "noinclude",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<noinclude>", post: "</noinclude>"}
 +
            }
 +
          }, {
 +
            label: "includeonly",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<includeonly>", post: "</includeonly>"}
 +
            }
 +
          }, {
 +
            label: "onlyinclude",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
 +
            }
 +
          }, {
 +
            label: "nowiki",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<nowiki>", post: "</nowiki>"}
 +
            }
 +
          }, {
 +
            label: "comment",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<!-- ", post: " -->"}
 +
            }
 +
          }, {
 +
            label: "{{#arraymap:}} long",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "{{#arraymap: ",
 +
                peri: "{{{field|}}}",
 +
                post: "<!--\n-->|;<!-- sep\n-->|§<!-- assign temporary var\n-->|[[My property::§]] <!--output\n-->|&#32;•&#32;<!--output sep\n-->}}<!-- end arraymap \n-->"
 +
              }
 +
            }
 +
          }, {
 +
            label: "{{#arraymap:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#arraymap: ", peri: "{{{field|}}}", post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
 +
            }
 +
          }, {
 +
            label: "{{#ask:table}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "{{#ask: ",
 +
                peri: "[[PAGE]] [[property::+]]",
 +
                post: " | ?displayprop |? | mainlabel=- | link=none | format = table | limit = 500}}"
 +
              }
 +
            }
 +
          }, {
 +
            label: "{{#ask:list}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "{{#ask: ",
 +
                peri: "[[PAGE]] [[property::+]]",
 +
                post: " | ?displayprop | mainlabel=- | link=none | format = list | sep=&#32;•&#32; | limit = 500}}"
 +
              }
 +
            }
 +
          }, {
 +
            label: "{{#vardefine:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#vardefine: ", peri: "myVar", post: "| }}"}
 +
            }
 +
          }, {
 +
            label: "{{#varexist:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#varexist: ", peri: "myVar", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "{{#var:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#var: ", peri: "myVar", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "if",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#if: ", post: "| | }}"}
 +
            }
 +
          }, {
 +
            label: "if long",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end if\n-->"}
 +
            }
 +
          }, {
 +
            label: "ifexist",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#ifexist: ", post: "| | }}"}
 +
            }
 +
          }, {
 +
            label: "ifexist long",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "<!--\n-->{{#ifexist: ",
 +
                post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end ifexist\n-->"
 +
              }
 +
            }
 +
          }, {
 +
            label: "{{#expr:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{#expr: ", peri: "1 + 6", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "switch",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "{{#switch: ",
 +
                post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- end switch\n-->"
 +
              }
 +
            }
 +
          }, {
 +
            label: "{{DEFAULTSORT:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{DEFAULTSORT:", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "{{DISPLAYTITLE:}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{DISPLAYTITLE:", post: "}}"}
 +
            }
 +
          },
 +
          "{{PAGENAME}}",
 +
          "{{PAGENAMEE}}",
 +
          "{{FULLPAGENAME}}",
 +
          "{{FULLPAGENAMEE}}"
 +
        ]
 +
      },
 +
      "translate": {
 +
        "layout": "characters",
 +
        label: mw.message("programmingtoolbar-pagelabel-translate"),
 +
        "characters": [
 +
          {
 +
            label: "{{Multilingual}}",
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{Multilingual\n|de=", peri: "deutscher Text", post: "\n|en=english text\n}}"}
 +
            }
 +
          }, {
 +
            label: "languages",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<languages/>", post: ""}
 +
            }
 +
          }, {
 +
            label: "translate",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "\u003Ctranslate\u003E", post: "\u003C/translate\u003E"}
 +
            }
 +
          }, {
 +
            label: "tvar",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<tvar|name>", peri: mw.message("programmingtoolbar-peri-tvar"), post: "</>"}
 +
            }
 +
          },{
 +
            label: "{{Andere Sprachenseite aufklappen}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "{{Andere Sprachenseite aufklappen\n|diese Sprache=de\n|en=",
 +
                peri: mw.message("programmingtoolbar-peri-page-dropdown-en-page"),
 +
                post: "}}"}
 +
            }
 +
          },{
 +
            label: "{{Other language page dropdown}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {
 +
                pre: "{{Other language page dropdown\n|this language=en\n|de=",
 +
                peri: mw.message("programmingtoolbar-peri-page-dropdown-de-page"),
 +
                post: "}}"}
 +
            }
 +
          },{
 +
            label: "nbsp;",
 +
            labelMsg: mw.message("programmingtoolbar-label-nbsp"),
 +
            action: {
 +
              type: "encapsulate", options: {pre: "&nbsp;", post: ""}
 +
            }
 +
          },{
 +
            label: "{{nnbsp}}",
 +
            labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
 +
            action: {
 +
              type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
 +
            }
 +
          }, {
 +
            label: "()",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "(", post: ")"}
 +
            }
 +
          }, {
 +
            label: "[]",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "[", post: "]"}
 +
            }
 +
          }, {
 +
            label: "[[]]",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "[[", post: "]]"}
 +
            }
 +
          }, {
 +
            label: "{{}}",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "{{", post: "}}"}
 +
            }
 +
          }, {
 +
            label: "nowiki",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<nowiki>", post: "</nowiki>"}
 +
            }
 +
          }, {
 +
            label: "comment",
 +
            action: {
 +
              type: "encapsulate",
 +
              options: {pre: "<!-- ", post: " -->"}
 +
            }
 +
          },
 +
          "{{PAGENAME}}",
 +
          "{{PAGENAMEE}}",
 +
          "{{FULLPAGENAME}}",
 +
          "{{FULLPAGENAMEE}}"
 +
        ]
 +
      }
 +
    }
 +
  });
 +
};
 +
 +
/* 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", function () {
 +
    if (mw.user.options.get("usebetatoolbar")) {
 +
      mw.loader.using("ext.wikiEditor", function () {
 +
        $(document).ready(customizeThisUserWikiEditorToolbar);
 +
      });
 +
    }
 +
  });
 +
}
 +
// </source>
 +
// </pre>
 +
 
  peri:table,
 
  peri:table,
 
  post:'|}',
 
  post:'|}',

Version vom 26. März 2021, 23:42 Uhr

//<pre>
/*
 o ptions: { *
 pre:'{|'+classStr+"\n",//<pre>
/*
 o ptions: { *
 pre:'{|'+classStr+"\n",
 peri:table,
 post:'|}',
 ownline:true

 type:                          "booklet"
 label string:                  non-localizable label string
 labelMsg string:               key for localizable message string
 deferLoad                      boolean
 pages object:                  map of name keys to further objects:
 layout string required:       'table' or 'characters'
 label string:                  non-localizable label string
 labelMsg string:               key for localizable message string
 headings string[]:             array of objects? {textMsg: key} ??
 rows object[] optional?:       array of objects? {'row key name': {message object?}}
 characters string[] optional?: array of strings of little character bits for insertion (???!)

 */


//<source lang="javascript">
var thismessages = {
  de : {
    "programmingtoolbar-label-blockquote":         "Zitat-Block",
    "programmingtoolbar-label-nbsp":               "trenngeschütztes Leerzeichen",
    "programmingtoolbar-label-nnbsp-template":     "enges trenngeschütztes Leerzeichen (Vorlage)",
    "programmingtoolbar-label-strikethrough":      "durchgestrichen",
    "programmingtoolbar-label-syntaxhighlight":    "Syntax Hervorhebung",
    "programmingtoolbar-label-underline":          "unterstrichen",
    "programmingtoolbar-peri-comment":             "Kommentar:",
    "programmingtoolbar-peri-defInlineTerm":       "Parameter",
    "programmingtoolbar-peri-defInlineDefinition": "Erläuterungen",
    "programmingtoolbar-peri-ref":                 "Referenz/Zitat",
    "programmingtoolbar-peri-tvar":                "variabler Inhalt, Text, Link o.ä.",
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
    "programmingtoolbar-sectionlabel-programming": "Programmierung",
    "programmingtoolbar-pagelabel-templates":      "Vorlagen",
    "programmingtoolbar-pagelabel-translate":      "Übersetzen",
    "programmingtoolbar-pagelabel-wikitags":       "Wiki/HTML Tags"
  },
  "de-formal" : {
    "programmingtoolbar-label-blockquote":         "Zitat-Block",
    "programmingtoolbar-label-nbsp":               "trenngeschütztes Leerzeichen",
    "programmingtoolbar-label-nnbsp-template":     "enges trenngeschütztes Leerzeichen (Vorlage)",
    "programmingtoolbar-label-strikethrough":      "durchgestrichen",
    "programmingtoolbar-label-syntaxhighlight":    "Syntax Hervorhebung",
    "programmingtoolbar-label-underline":          "unterstrichen",
    "programmingtoolbar-peri-comment":             "Kommentar:",
    "programmingtoolbar-peri-defInlineTerm":       "Parameter",
    "programmingtoolbar-peri-defInlineDefinition": "Erläuterungen",
    "programmingtoolbar-peri-ref":                 "Referenz/Zitat",
    "programmingtoolbar-peri-tvar":                "variabler Inhalt, Text, Link o.ä.",
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
    "programmingtoolbar-sectionlabel-programming": "Programmierung",
    "programmingtoolbar-pagelabel-templates":      "Vorlagen",
    "programmingtoolbar-pagelabel-translate":      "Übersetzen",
    "programmingtoolbar-pagelabel-wikitags":       "Wiki/HTML Tags"
  },
  en : {
    "programmingtoolbar-label-blockquote":         "block quote",
    "programmingtoolbar-label-nbsp":               "non-breaking space",
    "programmingtoolbar-label-nnbsp-template":     "narrow non-breaking space (template)",
    "programmingtoolbar-label-strikethrough":      "strike through",
    "programmingtoolbar-label-syntaxhighlight":    "syntax highlighting",
    "programmingtoolbar-label-underline":          "underlined",
    "programmingtoolbar-peri-comment":             "comment:",
    "programmingtoolbar-peri-defInlineTerm":       "Parameter",
    "programmingtoolbar-peri-defInlineDefinition": "Explanations",
    "programmingtoolbar-peri-ref":                 "Reference/Citation",
    "programmingtoolbar-peri-tvar":                "variable content, text, link etc.",
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
    "programmingtoolbar-sectionlabel-programming": "Programming",
    "programmingtoolbar-pagelabel-templates":      "Templates",
    "programmingtoolbar-pagelabel-translate":      "Translate",
    "programmingtoolbar-pagelabel-wikitags":       "Wiki/HTML tags"
  }
};

mw.messages.set(thismessages["en"]);
var lang = mw.config.get("wgUserLanguage");
if (lang && lang !== "en" && lang in thismessages) {
  mw.messages.set(thismessages[lang]);
}

var customizeThisUserWikiEditorToolbar = function () {
  $("#wpTextbox1").wikiEditor("addToToolbar", {
    "section": "advanced",
    "group": "format",
    "tools": {
      "strikethrough": {
        label: mw.message("programmingtoolbar-label-strikethrough"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<s>",
            post: "</s>"
          }
        }
      },
      "underline": {
        label: mw.message("programmingtoolbar-label-underline"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/commons/f/fd/Button_underline.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<u>",
            post: "</u>"
          }
        }
      },
      "syntaxhighlight": {
        label: mw.message("programmingtoolbar-label-syntaxhighlight"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/commons/d/d2/Button_source.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<syntaxhighlight lang=\"html4strict\">\n",
            post: "\n</syntaxhighlight>"
          }
        }
      },
      "blockquote": {
        label: mw.message("programmingtoolbar-label-blockquote"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<blockquote>\n",
            post: "\n</blockquote>"
          }
        }
      }
    }
  });
  $("#wpTextbox1").wikiEditor("addToToolbar", {
    "sections": {
      "programming": {
        type: "booklet",
        label: mw.message("programmingtoolbar-sectionlabel-programming")
      }
    }
  });

  $("#wpTextbox1").wikiEditor("addToToolbar", {
    "section": "programming",
    "pages": {
      "tags": {
        "layout": "characters",
        label: mw.message("programmingtoolbar-pagelabel-wikitags"),
        "characters": [{
          label: "nbsp;",
          labelMsg: mw.message("programmingtoolbar-label-nbsp"),
          action: {
            type: "encapsulate", options: {pre: "&nbsp;", post: ""}
          }
        },{
          label: "{{nnbsp}}",
          labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
          action: {
            type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
          }
        }, {
          label: "()",
          action: {
            type: "encapsulate", options: {pre: "(", post: ")"}
          }
        }, {
          label: "[]",
          action: {
            type: "encapsulate", options: {pre: "[", post: "]"}
          }
        }, {
          label: "[[]]",
          action: {
            type: "encapsulate", options: {pre: "[[", post: "]]"}
          }
        }, {
          label: "{{}}",
          action: {
            type: "encapsulate", options: {pre: "{{", post: "}}"}
          }
        }, {
          label: "{{{}}}",
          action: {
            type: "encapsulate", options: {pre: "{{{", "peri": "1", post: "}}}"}
          }
        }, {
          label: "{{{|}}}",
          action: {
            type: "encapsulate", options: {pre: "{{{|", "peri": "1", post: "}}}"}
          }
        }, {
          label: "[[Kategorie:]]",
          action: {
            type: "encapsulate", options: {pre: "[[Kategorie: ", post: "]]"}
          }
        }, {
          label: "[[Category:]]",
          action: {
            type: "encapsulate", options: {pre: "[[Category: ", post: "]]"}
          }
        }, {
          label: "[[Attribut:]]",
          action: {
            type: "encapsulate",
            options: {
              /* no selection */
              pre: "[[Attribut: ",
              post: "]]",
              /* a selection */
              regex: /\s*(.+)\s*/,
              regexReplace: "[[Attribut: \$1 |\$1]]"
            }
          }
        }, {
          label: "[[property:]]",
          action: {
            type: "encapsulate",
            options: {
              /* no selection */
              pre: "[[property: ",
              post: "]]",
              /* a selection */
              regex: /\s*(.+)\s*/,
              regexReplace: "[[property: \$1 |\$1]]"
            }
          }
        }, {
          label: "#WEITERLEITUNG [[]]",
          action: {
            type: "encapsulate", options: {pre: "#WEITERLEITUNG [[", post: "]]"}
          }
        }, {
          label: "#REDIRECT [[]]",
          action: {
            type: "encapsulate", options: {pre: "#REDIRECT [[", post: "]]"}
          }
        },
        "__INHALTSVERZEICHNIS__",
        "__TOC__",
        {
          label: "code",
          action: {
            type: "encapsulate", options: {pre: "<code>", post: "</code>"}
          }
        }, {
          label: "code nowiki code",
          action: {
            type: "encapsulate", options: {pre: "<code><nowiki>", post: "</nowiki></code>"}
          }
        }, {
          label: "nowiki",
          action: {
            type: "encapsulate", options: {pre: "<nowiki>", post: "</nowiki>"}
          }
        }, {
          label: "includeonly",
          action: {
            type: "encapsulate", options: {pre: "<includeonly>", post: "</includeonly>"}
          }
        }, {
          label: "noinclude",
          action: {
            type: "encapsulate", options: {pre: "<noinclude>", post: "</noinclude>"}
          }
        }, {
          label: "onlyinclude",
          action: {
            type: "encapsulate", options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
          }
        },{
          label: "math",
          action: {
            type: "encapsulate", options: {pre: "<math>", peri: "\begin{align}\n\begin{align}\n", post: "</math>"}
          }
        },{
          label: "ref",
          action: {
            type: "encapsulate", options: {pre: "<ref name=\"\">", peri: mw.message("programmingtoolbar-peri-ref"), post: "</ref>"}
          }
        }, {
          label: "references",
          action: {
            type: "encapsulate", options: {pre: "<references/>", post: ''}
          }
        }, {
          label: "languages",
          action: {
            type: "encapsulate",
            options: {pre: "<languages/>", post: ""}
          }
        }, {
          label: "translate",
          action: {
            type: "encapsulate",
            options: {pre: "\u003Ctranslate\u003E", post: "\u003C/translate\u003E"}
          }
        }, {
          label: "tvar",
          action: {
            type: "encapsulate",
            options: {pre: "<tvar|name>", peri: mw.message("programmingtoolbar-peri-tvar"), post: "</>"}
          }
        }, {
          label: "tt",
          action: {
            type: "encapsulate", options: {pre: "<tt>", post: "</tt>"}
          }
        }, {
          label: "comment",
          action: {
            type: "encapsulate", options: {pre: "<!-- ", "peri": mw.message("programmingtoolbar-peri-comment"), post: " -->"}
          }
        }, {
          label: "comment lt--gt",
          action: {
            type: "encapsulate", options: {pre: "&lt;!-- ", "peri": mw.message("programmingtoolbar-peri-comment"), post: " -->"}
          }
        }, {
          label: "span",
          action: {
            type: "encapsulate", options: {pre: "<span style=\"\">", post: "</span>"}
          }
        }, {
          label: "div",
          action: {
            type: "encapsulate", options: {pre: "<div style=\"\">", post: "</div>"}
          }
        }, {
          label: "{{SORTIERUNG:}}",
          action: {
            type: "encapsulate", options: {pre: "{{SORTIERUNG: ", post: "}}"}
          }
        }, {
          label: "{{DEFAULTSORT:}}",
          action: {
            type: "encapsulate", options: {pre: "{{DEFAULTSORT: ", post: "}}"}
          }
        }, {
          "label": "div.definition-inline",
          "action": {
            "type": "encapsulate",
            "options": {
              "pre": "<div class=\"definition-inline\">\n; ",
              "peri": mw.message("programmingtoolbar-peri-defInlineTerm"),
              "post": " : " + mw.message("programmingtoolbar-peri-defInlineDefinition") + "\n</div>"
            }
          }
        }, {
          label: "{{#arraymap:}}",
          action: {
            type: "encapsulate",
            options: {pre: "{{#arraymap: ", peri: "{{{field|}}}", post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
          }
        }, {
          label: "{{#arraymap:long}}",
          action: {
            type: "encapsulate",
            options: {
              pre: "{{#arraymap: ",
              peri: "{{{field|}}}",
              post: "<!-- values\n-->|;<!-- split on ;\n-->|§<!-- assign temporary variable\n-->|[[My property::§]] <!-- output\n-->|&#32;•&#32;<!-- new output separator\n-->}}"
            }
          }
        }, {
          label: "if",
          action: {
            type: "encapsulate", options: {pre: "{{#if: ", post: "| | }}"}
          }
        }, {
          label: "if-trim",
          action: {
            type: "encapsulate", options: {pre: "{{#if: ", post: "trim-text|{{{parameter|}}} }}"}
          }
        }, {
          label: "if long",
          action: {
            type: "encapsulate",
            options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- if end\n-->"}
          }
        }, {
          label: "switch CONTENTLANGUAGE",
          action: {
            type: "encapsulate",
            options: {
              pre: "{{#switch: {{CONTENTLANGUAGE}}",
              post: "<!--\n-->|de|de-formal= deutsch <!--\n-->| #default = english<!--\n-->}}<!-- switch end\n-->"
            }
          }
        }, {
          label: "switch",
          action: {
            type: "encapsulate",
            options: {
              pre: "{{#switch: ",
              post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- switch end\n-->"
            }
          }
        }, {
          label: "ol",
          action: {
            type: "encapsulate",
            options: {
              pre: "<ol>",
              peri: "<!--\n--><li></li><!--\n-->",
              post: "</ol>"
            }
          }
        }, {
          label: "ul",
          action: {
            type: "encapsulate",
            options: {
              pre: "<ul>",
              peri: "<!--\n--><li></li><!--\n-->",
              post: "</ul>"
            }
          }
        }, {
          label: "table",
          action: {
            type: "encapsulate",
            options: {
              pre: "<table>",
              peri: "<!--\n--><tr><!--\n  --><td></td><!--\n--></tr><!--\n-->",
              post: "</table>"
            }
          }
        }, {
          label: "tr",
          action: {
            type: "encapsulate",
            options: {pre: "<tr>", peri: "<!--\n  --><td></td><!--\n-->", post: "</tr>"}
          }
        }, {
          label: "th",
          action: {
            type: "encapsulate",
            options: {pre: "<th>", post: "</th>"}
          }
        }, {
          label: "td",
          action: {
            type: "encapsulate",
            options: {pre: "<td>", post: "</td>"}
          }
        },
          "┌",
          "┬",
          "┐",
          "└",
          "┴",
          "┘",
          "│",
          "─",
          "├",
          "┼",
          "┤"
          /*  <s></s>   <sup></sup>   <sub></sub>  */
        ]
      },
      "templates": {
        "layout": "characters",
        label: mw.message("programmingtoolbar-pagelabel-templates"),
        "characters": [
          {
            label: "{{Keyboard}}",
            action: {
              type: "encapsulate", options: {pre: "{{Keyboard |", post: "}}"}
            }
          },{
            label: "{{Tastatur}}",
            action: {
              type: "encapsulate", options: {pre: "{{Tastatur |", post: "}}"}
            }
          },/*{
            label: "Zitat",
            action: {
              type: "encapsulate", options: {pre: "{{Zitat |", post: "}}"}
            }
          }, {
            label: "Zitat versteckt",
            action: {
              type: "encapsulate", options: {pre: "{{Zitat versteckt|", post: "}}"}
            }
          },
           */
          {
            label: "nbsp;",
            labelMsg: mw.message("programmingtoolbar-label-nbsp"),
            action: {
              type: "encapsulate", options: {pre: "&nbsp;", post: ""}
            }
          },{
            label: "{{nnbsp}}",
            labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
            action: {
              type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
            }
          }, {
            label: "()",
            action: {
              type: "encapsulate",
              options: {pre: "(", post: ")"}
            }
          }, {
            label: "[]",
            action: {
              type: "encapsulate",
              options: {pre: "[", post: "]"}
            }
          }, {
            label: "[[]]",
            action: {
              type: "encapsulate",
              options: {pre: "[[", post: "]]"}
            }
          }, {
            label: "{{}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{", post: "}}"}
            }
          }, {
            label: "{{{}}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{{", post: "}}}"}
            }
          }, {
            label: "{{{|}}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{{", post: "|}}}"}
            }
          }, {
            label: "noinclude",
            action: {
              type: "encapsulate",
              options: {pre: "<noinclude>", post: "</noinclude>"}
            }
          }, {
            label: "includeonly",
            action: {
              type: "encapsulate",
              options: {pre: "<includeonly>", post: "</includeonly>"}
            }
          }, {
            label: "onlyinclude",
            action: {
              type: "encapsulate",
              options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
            }
          }, {
            label: "nowiki",
            action: {
              type: "encapsulate",
              options: {pre: "<nowiki>", post: "</nowiki>"}
            }
          }, {
            label: "comment",
            action: {
              type: "encapsulate",
              options: {pre: "<!-- ", post: " -->"}
            }
          }, {
            label: "{{#arraymap:}} long",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#arraymap: ",
                peri: "{{{field|}}}",
                post: "<!--\n-->|;<!-- sep\n-->|§<!-- assign temporary var\n-->|[[My property::§]] <!--output\n-->|&#32;•&#32;<!--output sep\n-->}}<!-- end arraymap \n-->"
              }
            }
          }, {
            label: "{{#arraymap:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#arraymap: ", peri: "{{{field|}}}", post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
            }
          }, {
            label: "{{#ask:table}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#ask: ",
                peri: "[[PAGE]] [[property::+]]",
                post: " | ?displayprop |? | mainlabel=- | link=none | format = table | limit = 500}}"
              }
            }
          }, {
            label: "{{#ask:list}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#ask: ",
                peri: "[[PAGE]] [[property::+]]",
                post: " | ?displayprop | mainlabel=- | link=none | format = list | sep=&#32;•&#32; | limit = 500}}"
              }
            }
          }, {
            label: "{{#vardefine:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#vardefine: ", peri: "myVar", post: "| }}"}
            }
          }, {
            label: "{{#varexist:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#varexist: ", peri: "myVar", post: "}}"}
            }
          }, {
            label: "{{#var:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#var: ", peri: "myVar", post: "}}"}
            }
          }, {
            label: "if",
            action: {
              type: "encapsulate",
              options: {pre: "{{#if: ", post: "| | }}"}
            }
          }, {
            label: "if long",
            action: {
              type: "encapsulate",
              options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end if\n-->"}
            }
          }, {
            label: "ifexist",
            action: {
              type: "encapsulate",
              options: {pre: "{{#ifexist: ", post: "| | }}"}
            }
          }, {
            label: "ifexist long",
            action: {
              type: "encapsulate",
              options: {
                pre: "<!--\n-->{{#ifexist: ",
                post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end ifexist\n-->"
              }
            }
          }, {
            label: "{{#expr:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#expr: ", peri: "1 + 6", post: "}}"}
            }
          }, {
            label: "switch",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#switch: ",
                post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- end switch\n-->"
              }
            }
          }, {
            label: "{{DEFAULTSORT:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{DEFAULTSORT:", post: "}}"}
            }
          }, {
            label: "{{DISPLAYTITLE:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{DISPLAYTITLE:", post: "}}"}
            }
          },
          "{{PAGENAME}}",
          "{{PAGENAMEE}}",
          "{{FULLPAGENAME}}",
          "{{FULLPAGENAMEE}}"
        ]
      },
      "translate": {
        "layout": "characters",
        label: mw.message("programmingtoolbar-pagelabel-translate"),
        "characters": [
          {
            label: "{{Multilingual}}",
            action: {
              type: "encapsulate", options: {pre: "{{Multilingual\n|de=", peri: "deutscher Text", post: "\n|en=english text\n}}"}
            }
          }, {
            label: "languages",
            action: {
              type: "encapsulate",
              options: {pre: "<languages/>", post: ""}
            }
          }, {
            label: "translate",
            action: {
              type: "encapsulate",
              options: {pre: "\u003Ctranslate\u003E", post: "\u003C/translate\u003E"}
            }
          }, {
            label: "tvar",
            action: {
              type: "encapsulate",
              options: {pre: "<tvar|name>", peri: mw.message("programmingtoolbar-peri-tvar"), post: "</>"}
            }
          },{
            label: "{{Andere Sprachenseite aufklappen}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{Andere Sprachenseite aufklappen\n|diese Sprache=de\n|en=", 
                peri: mw.message("programmingtoolbar-peri-page-dropdown-en-page"), 
                post: "}}"}
            }
          },{
            label: "{{Other language page dropdown}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{Other language page dropdown\n|this language=en\n|de=", 
                peri: mw.message("programmingtoolbar-peri-page-dropdown-de-page"), 
                post: "}}"}
            }
          },{
            label: "nbsp;",
            labelMsg: mw.message("programmingtoolbar-label-nbsp"),
            action: {
              type: "encapsulate", options: {pre: "&nbsp;", post: ""}
            }
          },{
            label: "{{nnbsp}}",
            labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
            action: {
              type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
            }
          }, {
            label: "()",
            action: {
              type: "encapsulate",
              options: {pre: "(", post: ")"}
            }
          }, {
            label: "[]",
            action: {
              type: "encapsulate",
              options: {pre: "[", post: "]"}
            }
          }, {
            label: "[[]]",
            action: {
              type: "encapsulate",
              options: {pre: "[[", post: "]]"}
            }
          }, {
            label: "{{}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{", post: "}}"}
            }
          }, {
            label: "nowiki",
            action: {
              type: "encapsulate",
              options: {pre: "<nowiki>", post: "</nowiki>"}
            }
          }, {
            label: "comment",
            action: {
              type: "encapsulate",
              options: {pre: "<!-- ", post: " -->"}
            }
          },
          "{{PAGENAME}}",
          "{{PAGENAMEE}}",
          "{{FULLPAGENAME}}",
          "{{FULLPAGENAMEE}}"
        ]
      }
    }
  });
};

/* 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", function () {
    if (mw.user.options.get("usebetatoolbar")) {
      mw.loader.using("ext.wikiEditor", function () {
        $(document).ready(customizeThisUserWikiEditorToolbar);
      });
    }
  });
}
// </source>
// </pre>

 peri:table,
 post:'|}',
 ownline:true

 type:                          "booklet"
 label string:                  non-localizable label string
 labelMsg string:               key for localizable message string
 deferLoad                      boolean
 pages object:                  map of name keys to further objects:
 layout string required:       'table' or 'characters'
 label string:                  non-localizable label string
 labelMsg string:               key for localizable message string
 headings string[]:             array of objects? {textMsg: key} ??
 rows object[] optional?:       array of objects? {'row key name': {message object?}}
 characters string[] optional?: array of strings of little character bits for insertion (???!)

 */


//<source lang="javascript">
thismessages = {
  de : {
    "programmingtoolbar-label-blockquote":         "Zitat-Block",
    "programmingtoolbar-label-nbsp":               "trenngeschütztes Leerzeichen",
    "programmingtoolbar-label-nnbsp-template":     "enges trenngeschütztes Leerzeichen (Vorlage)",
    "programmingtoolbar-label-strikethrough":      "durchgestrichen",
    "programmingtoolbar-label-syntaxhighlight":    "Syntax Hervorhebung",
    "programmingtoolbar-label-underline":          "unterstrichen",
    "programmingtoolbar-peri-comment":             "Kommentar:",
    "programmingtoolbar-peri-defInlineTerm":       "Parameter",
    "programmingtoolbar-peri-defInlineDefinition": "Erläuterungen",
    "programmingtoolbar-peri-ref":                 "Referenz/Zitat",
    "programmingtoolbar-peri-tvar":                "variabler Inhalt, Text, Link o.ä.",
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
    "programmingtoolbar-sectionlabel-programming": "Programmierung",
    "programmingtoolbar-pagelabel-templates":      "Vorlagen",
    "programmingtoolbar-pagelabel-translate":      "Übersetzen",
    "programmingtoolbar-pagelabel-wikitags":       "Wiki/HTML Tags"
  },
  "de-formal" : {
    "programmingtoolbar-label-blockquote":         "Zitat-Block",
    "programmingtoolbar-label-nbsp":               "trenngeschütztes Leerzeichen",
    "programmingtoolbar-label-nnbsp-template":     "enges trenngeschütztes Leerzeichen (Vorlage)",
    "programmingtoolbar-label-strikethrough":      "durchgestrichen",
    "programmingtoolbar-label-syntaxhighlight":    "Syntax Hervorhebung",
    "programmingtoolbar-label-underline":          "unterstrichen",
    "programmingtoolbar-peri-comment":             "Kommentar:",
    "programmingtoolbar-peri-defInlineTerm":       "Parameter",
    "programmingtoolbar-peri-defInlineDefinition": "Erläuterungen",
    "programmingtoolbar-peri-ref":                 "Referenz/Zitat",
    "programmingtoolbar-peri-tvar":                "variabler Inhalt, Text, Link o.ä.",
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
    "programmingtoolbar-sectionlabel-programming": "Programmierung",
    "programmingtoolbar-pagelabel-templates":      "Vorlagen",
    "programmingtoolbar-pagelabel-translate":      "Übersetzen",
    "programmingtoolbar-pagelabel-wikitags":       "Wiki/HTML Tags"
  },
  en : {
    "programmingtoolbar-label-blockquote":         "block quote",
    "programmingtoolbar-label-nbsp":               "non-breaking space",
    "programmingtoolbar-label-nnbsp-template":     "narrow non-breaking space (template)",
    "programmingtoolbar-label-strikethrough":      "strike through",
    "programmingtoolbar-label-syntaxhighlight":    "syntax highlighting",
    "programmingtoolbar-label-underline":          "underlined",
    "programmingtoolbar-peri-comment":             "comment:",
    "programmingtoolbar-peri-defInlineTerm":       "Parameter",
    "programmingtoolbar-peri-defInlineDefinition": "Explanations",
    "programmingtoolbar-peri-ref":                 "Reference/Citation",
    "programmingtoolbar-peri-tvar":                "variable content, text, link etc.",
    "programmingtoolbar-peri-page-dropdown-en-page":    "English Wiki Page",
    "programmingtoolbar-peri-page-dropdown-de-page":    "Deutsche Wiki Seite",
    "programmingtoolbar-sectionlabel-programming": "Programming",
    "programmingtoolbar-pagelabel-templates":      "Templates",
    "programmingtoolbar-pagelabel-translate":      "Translate",
    "programmingtoolbar-pagelabel-wikitags":       "Wiki/HTML tags"
  }
}

mw.messages.set(thismessages["en"]);
var lang = mw.config.get("wgUserLanguage");
if (lang && lang !== "en" && lang in thismessages) {
  mw.messages.set(thismessages[lang]);
}

var customizeThisUserWikiEditorToolbar = function () {
  $("#wpTextbox1").wikiEditor("addToToolbar", {
    "section": "advanced",
    "group": "format",
    "tools": {
      "strikethrough": {
        label: mw.message("programmingtoolbar-label-strikethrough"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<s>",
            post: "</s>"
          }
        }
      },
      "underline": {
        label: mw.message("programmingtoolbar-label-underline"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/commons/f/fd/Button_underline.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<u>",
            post: "</u>"
          }
        }
      },
      "syntaxhighlight": {
        label: mw.message("programmingtoolbar-label-syntaxhighlight"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/commons/d/d2/Button_source.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<syntaxhighlight lang=\"html4strict\">\n",
            post: "\n</syntaxhighlight>"
          }
        }
      },
      "blockquote": {
        label: mw.message("programmingtoolbar-label-blockquote"),
        type: "button",
        icon: "https://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png",
        action: {
          type: "encapsulate",
          options: {
            pre: "<blockquote>\n",
            post: "\n</blockquote>"
          }
        }
      }
    }
  })
  $("#wpTextbox1").wikiEditor("addToToolbar", {
    "sections": {
      "programming": {
        type: "booklet",
        label: mw.message("programmingtoolbar-sectionlabel-programming")
      }
    }
  })

  $("#wpTextbox1").wikiEditor("addToToolbar", {
    "section": "programming",
    "pages": {
      "tags": {
        "layout": "characters",
        label: mw.message("programmingtoolbar-pagelabel-wikitags"),
        "characters": [{
          label: "nbsp;",
          labelMsg: mw.message("programmingtoolbar-label-nbsp"),
          action: {
            type: "encapsulate", options: {pre: "&nbsp;", post: ""}
          }
        },{
          label: "{{nnbsp}}",
          labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
          action: {
            type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
          }
        }, {
          label: "()",
          action: {
            type: "encapsulate", options: {pre: "(", post: ")"}
          }
        }, {
          label: "[]",
          action: {
            type: "encapsulate", options: {pre: "[", post: "]"}
          }
        }, {
          label: "[[]]",
          action: {
            type: "encapsulate", options: {pre: "[[", post: "]]"}
          }
        }, {
          label: "{{}}",
          action: {
            type: "encapsulate", options: {pre: "{{", post: "}}"}
          }
        }, {
          label: "{{{}}}",
          action: {
            type: "encapsulate", options: {pre: "{{{", "peri": "1", post: "}}}"}
          }
        }, {
          label: "{{{|}}}",
          action: {
            type: "encapsulate", options: {pre: "{{{|", "peri": "1", post: "}}}"}
          }
        }, {
          label: "[[Kategorie:]]",
          action: {
            type: "encapsulate", options: {pre: "[[Kategorie: ", post: "]]"}
          }
        }, {
          label: "[[Category:]]",
          action: {
            type: "encapsulate", options: {pre: "[[Category: ", post: "]]"}
          }
        }, {
          label: "[[Attribut:]]",
          action: {
            type: "encapsulate",
            options: {
              /* no selection */
              pre: "[[Attribut: ",
              post: "]]",
              /* a selection */
              regex: /\s*(.+)\s*/,
              regexReplace: "[[Attribut: \$1 |\$1]]"
            }
          }
        }, {
          label: "[[property:]]",
          action: {
            type: "encapsulate",
            options: {
              /* no selection */
              pre: "[[property: ",
              post: "]]",
              /* a selection */
              regex: /\s*(.+)\s*/,
              regexReplace: "[[property: \$1 |\$1]]"
            }
          }
        }, {
          label: "#WEITERLEITUNG [[]]",
          action: {
            type: "encapsulate", options: {pre: "#WEITERLEITUNG [[", post: "]]"}
          }
        }, {
          label: "#REDIRECT [[]]",
          action: {
            type: "encapsulate", options: {pre: "#REDIRECT [[", post: "]]"}
          }
        },
        "__INHALTSVERZEICHNIS__",
        "__TOC__",
        {
          label: "code",
          action: {
            type: "encapsulate", options: {pre: "<code>", post: "</code>"}
          }
        }, {
          label: "code nowiki code",
          action: {
            type: "encapsulate", options: {pre: "<code><nowiki>", post: "</nowiki></code>"}
          }
        }, {
          label: "nowiki",
          action: {
            type: "encapsulate", options: {pre: "<nowiki>", post: "</nowiki>"}
          }
        }, {
          label: "includeonly",
          action: {
            type: "encapsulate", options: {pre: "<includeonly>", post: "</includeonly>"}
          }
        }, {
          label: "noinclude",
          action: {
            type: "encapsulate", options: {pre: "<noinclude>", post: "</noinclude>"}
          }
        }, {
          label: "onlyinclude",
          action: {
            type: "encapsulate", options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
          }
        },{
          label: "math",
          action: {
            type: "encapsulate", options: {pre: "<math>", peri: "\begin{align}\n\begin{align}\n", post: "</math>"}
          }
        },{
          label: "ref",
          action: {
            type: "encapsulate", options: {pre: "<ref name=\"\">", peri: mw.message("programmingtoolbar-peri-ref"), post: "</ref>"}
          }
        }, {
          label: "references",
          action: {
            type: "encapsulate", options: {pre: "<references/>", post: ''}
          }
        }, {
          label: "languages",
          action: {
            type: "encapsulate",
            options: {pre: "<languages/>", post: ""}
          }
        }, {
          label: "translate",
          action: {
            type: "encapsulate",
            options: {pre: "\u003Ctranslate\u003E", post: "\u003C/translate\u003E"}
          }
        }, {
          label: "tvar",
          action: {
            type: "encapsulate",
            options: {pre: "<tvar|name>", peri: mw.message("programmingtoolbar-peri-tvar"), post: "</>"}
          }
        }, {
          label: "tt",
          action: {
            type: "encapsulate", options: {pre: "<tt>", post: "</tt>"}
          }
        }, {
          label: "comment",
          action: {
            type: "encapsulate", options: {pre: "<!-- ", "peri": mw.message("programmingtoolbar-peri-comment"), post: " -->"}
          }
        }, {
          label: "comment lt--gt",
          action: {
            type: "encapsulate", options: {pre: "&lt;!-- ", "peri": mw.message("programmingtoolbar-peri-comment"), post: " -->"}
          }
        }, {
          label: "span",
          action: {
            type: "encapsulate", options: {pre: "<span style=\"\">", post: "</span>"}
          }
        }, {
          label: "div",
          action: {
            type: "encapsulate", options: {pre: "<div style=\"\">", post: "</div>"}
          }
        }, {
          label: "{{SORTIERUNG:}}",
          action: {
            type: "encapsulate", options: {pre: "{{SORTIERUNG: ", post: "}}"}
          }
        }, {
          label: "{{DEFAULTSORT:}}",
          action: {
            type: "encapsulate", options: {pre: "{{DEFAULTSORT: ", post: "}}"}
          }
        }, {
          "label": "div.definition-inline",
          "action": {
            "type": "encapsulate",
            "options": {
              "pre": "<div class="definition-inline">\n; ",
              "peri": mw.message("programmingtoolbar-peri-defInlineTerm"),
              "post": " : " + mw.message("programmingtoolbar-peri-defInlineDefinition") + "\n</div>"
            }
          }
        }, {
          label: "{{#arraymap:}}",
          action: {
            type: "encapsulate",
            options: {pre: "{{#arraymap: ", peri: "{{{field|}}}", post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
          }
        }, {
          label: "{{#arraymap:long}}",
          action: {
            type: "encapsulate",
            options: {
              pre: "{{#arraymap: ",
              peri: "{{{field|}}}",
              post: "<!-- values\n-->|;<!-- split on ;\n-->|§<!-- assign temporary variable\n-->|[[My property::§]] <!-- output\n-->|&#32;•&#32;<!-- new output separator\n-->}}"
            }
          }
        }, {
          label: "if",
          action: {
            type: "encapsulate", options: {pre: "{{#if: ", post: "| | }}"}
          }
        }, {
          label: "if-trim",
          action: {
            type: "encapsulate", options: {pre: "{{#if: ", post: "trim-text|{{{parameter|}}} }}"}
          }
        }, {
          label: "if long",
          action: {
            type: "encapsulate",
            options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- if end\n-->"}
          }
        }, {
          label: "switch CONTENTLANGUAGE",
          action: {
            type: "encapsulate",
            options: {
              pre: "{{#switch: {{CONTENTLANGUAGE}}",
              post: "<!--\n-->|de|de-formal= deutsch <!--\n-->| #default = english<!--\n-->}}<!-- switch end\n-->"
            }
          }
        }, {
          label: "switch",
          action: {
            type: "encapsulate",
            options: {
              pre: "{{#switch: ",
              post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- switch end\n-->"
            }
          }
        }, {
          label: "ol",
          action: {
            type: "encapsulate",
            options: {
              pre: "<ol>",
              peri: "<!--\n--><li></li><!--\n-->",
              post: "</ol>"
            }
          }
        }, {
          label: "ul",
          action: {
            type: "encapsulate",
            options: {
              pre: "<ul>",
              peri: "<!--\n--><li></li><!--\n-->",
              post: "</ul>"
            }
          }
        }, {
          label: "table",
          action: {
            type: "encapsulate",
            options: {
              pre: "<table>",
              peri: "<!--\n--><tr><!--\n  --><td></td><!--\n--></tr><!--\n-->",
              post: "</table>"
            }
          }
        }, {
          label: "tr",
          action: {
            type: "encapsulate",
            options: {pre: "<tr>", peri: "<!--\n  --><td></td><!--\n-->", post: "</tr>"}
          }
        }, {
          label: "th",
          action: {
            type: "encapsulate",
            options: {pre: "<th>", post: "</th>"}
          }
        }, {
          label: "td",
          action: {
            type: "encapsulate",
            options: {pre: "<td>", post: "</td>"}
          }
        },
          "┌",
          "┬",
          "┐",
          "└",
          "┴",
          "┘",
          "│",
          "─",
          "├",
          "┼",
          "┤"
          /*  <s></s>   <sup></sup>   <sub></sub>  */
        ]
      },
      "templates": {
        "layout": "characters",
        label: mw.message("programmingtoolbar-pagelabel-templates"),
        "characters": [
          {
            label: "{{Keyboard}}",
            action: {
              type: "encapsulate", options: {pre: "{{Keyboard |", post: "}}"}
            }
          },{
            label: "{{Tastatur}}",
            action: {
              type: "encapsulate", options: {pre: "{{Tastatur |", post: "}}"}
            }
          },/*{
            label: "Zitat",
            action: {
              type: "encapsulate", options: {pre: "{{Zitat |", post: "}}"}
            }
          }, {
            label: "Zitat versteckt",
            action: {
              type: "encapsulate", options: {pre: "{{Zitat versteckt|", post: "}}"}
            }
          },
           */
          {
            label: "nbsp;",
            labelMsg: mw.message("programmingtoolbar-label-nbsp"),
            action: {
              type: "encapsulate", options: {pre: "&nbsp;", post: ""}
            }
          },{
            label: "{{nnbsp}}",
            labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
            action: {
              type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
            }
          }, {
            label: "()",
            action: {
              type: "encapsulate",
              options: {pre: "(", post: ")"}
            }
          }, {
            label: "[]",
            action: {
              type: "encapsulate",
              options: {pre: "[", post: "]"}
            }
          }, {
            label: "[[]]",
            action: {
              type: "encapsulate",
              options: {pre: "[[", post: "]]"}
            }
          }, {
            label: "{{}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{", post: "}}"}
            }
          }, {
            label: "{{{}}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{{", post: "}}}"}
            }
          }, {
            label: "{{{|}}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{{", post: "|}}}"}
            }
          }, {
            label: "noinclude",
            action: {
              type: "encapsulate",
              options: {pre: "<noinclude>", post: "</noinclude>"}
            }
          }, {
            label: "includeonly",
            action: {
              type: "encapsulate",
              options: {pre: "<includeonly>", post: "</includeonly>"}
            }
          }, {
            label: "onlyinclude",
            action: {
              type: "encapsulate",
              options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
            }
          }, {
            label: "nowiki",
            action: {
              type: "encapsulate",
              options: {pre: "<nowiki>", post: "</nowiki>"}
            }
          }, {
            label: "comment",
            action: {
              type: "encapsulate",
              options: {pre: "<!-- ", post: " -->"}
            }
          }, {
            label: "{{#arraymap:}} long",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#arraymap: ",
                peri: "{{{field|}}}",
                post: "<!--\n-->|;<!-- sep\n-->|§<!-- assign temporary var\n-->|[[My property::§]] <!--output\n-->|&#32;•&#32;<!--output sep\n-->}}<!-- end arraymap \n-->"
              }
            }
          }, {
            label: "{{#arraymap:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#arraymap: ", peri: "{{{field|}}}", post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
            }
          }, {
            label: "{{#ask:table}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#ask: ",
                peri: "[[PAGE]] [[property::+]]",
                post: " | ?displayprop |? | mainlabel=- | link=none | format = table | limit = 500}}"
              }
            }
          }, {
            label: "{{#ask:list}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#ask: ",
                peri: "[[PAGE]] [[property::+]]",
                post: " | ?displayprop | mainlabel=- | link=none | format = list | sep=&#32;•&#32; | limit = 500}}"
              }
            }
          }, {
            label: "{{#vardefine:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#vardefine: ", peri: "myVar", post: "| }}"}
            }
          }, {
            label: "{{#varexist:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#varexist: ", peri: "myVar", post: "}}"}
            }
          }, {
            label: "{{#var:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#var: ", peri: "myVar", post: "}}"}
            }
          }, {
            label: "if",
            action: {
              type: "encapsulate",
              options: {pre: "{{#if: ", post: "| | }}"}
            }
          }, {
            label: "if long",
            action: {
              type: "encapsulate",
              options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end if\n-->"}
            }
          }, {
            label: "ifexist",
            action: {
              type: "encapsulate",
              options: {pre: "{{#ifexist: ", post: "| | }}"}
            }
          }, {
            label: "ifexist long",
            action: {
              type: "encapsulate",
              options: {
                pre: "<!--\n-->{{#ifexist: ",
                post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end ifexist\n-->"
              }
            }
          }, {
            label: "{{#expr:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{#expr: ", peri: "1 + 6", post: "}}"}
            }
          }, {
            label: "switch",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{#switch: ",
                post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- end switch\n-->"
              }
            }
          }, {
            label: "{{DEFAULTSORT:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{DEFAULTSORT:", post: "}}"}
            }
          }, {
            label: "{{DISPLAYTITLE:}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{DISPLAYTITLE:", post: "}}"}
            }
          },
          "{{PAGENAME}}",
          "{{PAGENAMEE}}",
          "{{FULLPAGENAME}}",
          "{{FULLPAGENAMEE}}"
        ]
      },
      "translate": {
        "layout": "characters",
        label: mw.message("programmingtoolbar-pagelabel-translate"),
        "characters": [
          {
            label: "{{Multilingual}}",
            action: {
              type: "encapsulate", options: {pre: "{{Multilingual\n|de=", peri: "deutscher Text", post: "\n|en=english text\n}}"}
            }
          }, {
            label: "languages",
            action: {
              type: "encapsulate",
              options: {pre: "<languages/>", post: ""}
            }
          }, {
            label: "translate",
            action: {
              type: "encapsulate",
              options: {pre: "\u003Ctranslate\u003E", post: "\u003C/translate\u003E"}
            }
          }, {
            label: "tvar",
            action: {
              type: "encapsulate",
              options: {pre: "<tvar|name>", peri: mw.message("programmingtoolbar-peri-tvar"), post: "</>"}
            }
          },{
            label: "{{Andere Sprachenseite aufklappen}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{Andere Sprachenseite aufklappen\n|diese Sprache=de\n|en=", 
                peri: mw.message("programmingtoolbar-peri-page-dropdown-en-page"), 
                post: "}}"}
            }
          },{
            label: "{{Other language page dropdown}}",
            action: {
              type: "encapsulate",
              options: {
                pre: "{{Other language page dropdown\n|this language=en\n|de=", 
                peri: mw.message("programmingtoolbar-peri-page-dropdown-de-page"), 
                post: "}}"}
            }
          },{
            label: "nbsp;",
            labelMsg: mw.message("programmingtoolbar-label-nbsp"),
            action: {
              type: "encapsulate", options: {pre: "&nbsp;", post: ""}
            }
          },{
            label: "{{nnbsp}}",
            labelMsg: mw.message("programmingtoolbar-label-nnbsp-template"),
            action: {
              type: "encapsulate", options: {pre: "{{nnbsp}}", post: ""}
            }
          }, {
            label: "()",
            action: {
              type: "encapsulate",
              options: {pre: "(", post: ")"}
            }
          }, {
            label: "[]",
            action: {
              type: "encapsulate",
              options: {pre: "[", post: "]"}
            }
          }, {
            label: "[[]]",
            action: {
              type: "encapsulate",
              options: {pre: "[[", post: "]]"}
            }
          }, {
            label: "{{}}",
            action: {
              type: "encapsulate",
              options: {pre: "{{", post: "}}"}
            }
          }, {
            label: "nowiki",
            action: {
              type: "encapsulate",
              options: {pre: "<nowiki>", post: "</nowiki>"}
            }
          }, {
            label: "comment",
            action: {
              type: "encapsulate",
              options: {pre: "<!-- ", post: " -->"}
            }
          },
          "{{PAGENAME}}",
          "{{PAGENAMEE}}",
          "{{FULLPAGENAME}}",
          "{{FULLPAGENAMEE}}"
        ]
      }
    }
  })
};

/* 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", function () {
    if (mw.user.options.get("usebetatoolbar")) {
      mw.loader.using("ext.wikiEditor", function () {
        $(document).ready(customizeThisUserWikiEditorToolbar);
      })
    }
  })
}
// </source>
// </pre>