User:PerfektesChaos/js/editorContent

From Wikipedia, the free encyclopedia

JavaScript gadget – use advanced text editor depending on the current situation and user requirements.

Usage[edit]

  • If your project has registered this as a gadget, just activate on your Preferences page.
  • Otherwise include the following lines into your common.js or skin dependant like vector.js:
mw.loader.load("//en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/editorContent/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
               "text/javascript");

Effects[edit]

The gadget selects the appropriate editor among various choices, and will avoid conflicts between competing tools.

Currently there are considered:

Another advantage is to avoid loading of the nearly 600 kB Code of WikEd on every displayed page, even if the page is not edited now. Just to conclude that there is no editing, or the current browser does not support WikEd. The same goes for any other tool.

The defaults on a glance:

{ CodeEditor:   { css:        "\\.css$",
                  javascript: "\\.js$",
                  lua:        [ "/sandbox[^/]*/Module:", 2 ]
                },
  VisualEditor: false,
  WikEd:        true
}

Rules[edit]

A “rule” is either

  • true (respective default)
  • false (turn off explicitly)
  • string (Regular expression, which is to be matched by the current page name; might be an empty string)
  • Array of a string as before and some numbers of namespaces, from which one has to be met.

Particular Editors[edit]

CodeEditor[edit]

Precondition by namespace number:

  • > 0
  • even
  • not 828

If the precondition is not satisfied, no further rule comes into effect.

For every single mode (programming language) to be considered a keyword is to be defined together with a rule.

The CodeEditor integration at MediaWiki was equipped recently with the following mode capabilities:

css
Default: true
Meaning: page name terminated by .css (lowercase letters)
javascript
Default: true
Meaning: page name terminated by .js (lowercase letters)
json
Currently no general rule known.
lua
Default: true
Meaning: rule (user space sandbox subpage)
[ "/sandbox[^/]*/Module:", 2 ]

Any other keyword automatically causes loading of the RL module with additional mode support. Example (after user configuration of the opt object):

mw.libs.editorContent.opt.CodeEditor = { c_cpp: "\\.cpp$" };

The same action will be taken, if the global configuration variable wgCodeEditorCurrentLanguage was found; independent of the rules the CodeEditor will be loaded.

If more than one rule is matching and different keywords will result, choice and behaviour cannot be predicted.

The general statement .opt.CodeEditor = false; wlll exclude the CodeEditor from user defined loading (with exception of Module: namespace 828).

VisualEditor[edit]

The VisualEditor is supposed to be activated explicitly by the user, or can be turned off by preferences. If that is not possible one day, any link to VE can be hidden to avoid misclicks.

  • VisualEditor “Edit” link will be removed if any kind of non-wikitext content is detected.
    • CSS and Javascript sources are assumed if page title is terminated by .css or .js “extension”.

WikEd[edit]

Precondition by browser type:

  • Only if Gecko based WikEd will be taken into account.

WikEd must not be loaded by preferences page in advance for any visited page.

  • The default value true loads WikEd, if not CodeEditor is used automatically or on non-documentation pages in Module: namespace 828 (page name ends with /doc).
  • The specification false won’t activate WikEd.

wikiEditor[edit]

No actions possible here.

User options[edit]

Individual configuration is possible: Insert the lines below into your common.js etc. (best before mw.loader.load, if present):

if ( typeof mw.libs.editorContent !== "object" ) {
   mw.libs.editorContent  =  {};
}
mw.libs.editorContent.opt = { editor1: rule1,
                              editor2: rule2
                            };

Codes[edit]

Source code
ResourceLoader
Namespaces 0
mw.libs editorContent

Other languages[edit]

This gadget is prepared for multilingual support.

  • If you like a version in your own language, please forward translations to me:
    • This documentation page.
    • Name of the standard template sandbox (and Module: namespace).