Extension:VisualEditor

The VisualEditor project aims to create a reliable rich-text editor for the Web and for MediaWiki. More information can be found on the project page; this page is just about the VisualEditor-MediaWiki extension itself. The extension relies on the separate nodeJS-based Parsoid parser service to be up and running in order to edit pages. Stable release is planned for 2014-15.

Download
If you're using the latest stable version of MediaWiki you will need to download the VisualEditor-MediaWiki extension from the ExtensionDistributor page. The following download instructions are for use with the latest nightly build of MediaWiki only. cd extensions git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/VisualEditor.git cd VisualEditor git submodule update --init

If you cannot use git (e.g. you are in an air-gapped installation), you can download a snapshot of VisualEditor-MediaWiki for master or for a release version of MediaWiki from the ExtensionDistributor page. After you've got the code, save it into the extensions/VisualEditor directory of your wiki.
 * VisualEditor-MediaWiki's master branch contains the latest code, as used at Wikimedia. This code is potentially slightly buggy or unstable, but is likely to have fewer bugs and more features than old builds.
 * The master branch requires alpha builds of MediaWiki (currently, 1.25wmf16 ) and will not work with the older, official releases of MediaWiki like 1.24.1, for that use the REL1_24 branch.
 * The  command is vital, as MediaWiki-VisualEditor needs the core VisualEditor submodule to work. If you do not use this command, VisualEditor will fail to work.

Not supported on on shared hosting
It's highly unlikely you'd be successful getting VisualEditor to work on shared hosting. The biggest reason isn't VE itself, but the parsoid service that's needed to parse the wikitext/HTML. Parsoid requires that you have node.js running in the background at all times. Most shared-hosting companies (HostGator, Bluehost, Dreamhost, etc.) don't allow you to do that. You are better served, for performance and security reasons, to use a dedicated hosting solution such as a VPS.

Dependencies
VisualEditor depends on the following extension:
 * UniversalLanguageSelector

Setup a Parsoid service
Without the Parsoid node.js service you will not be able to edit existing pages or save pages!

If you want to be able to edit existing pages and save pages with VisualEditor you need a Parsoid service.

To setup your own Parsoid service follow the Parsoid installation instructions first. Note that it is particularly complicated to set up Parsoid in non-standard systems for running NodeJS, like those running Windows or Debian.

Basic configuration for MediaWiki-VisualEditor
For the initial setup, before you have installed the Parsoid node.js service you can experiment with loading MediaWiki-VisualEditor on your own wiki.

Add the following lines to your wiki's  after you have downloaded the extension:

Other extensions which load plugins for VE (e.g. Math) should be loaded after VE for those plugins to work.

Linking with Parsoid
To get VisualEditor to talk to Parsoid, add the following code to your  to specify your Parsoid instance:

Additionally, you may need to set the  prefix. If you only run a single wiki then you can leave its unique ID as "localhost" in parsoid's localsettings.js configuration file and do not need to set this. But if you are running multiple wikis on the same host then each will need a different interwiki name for parsoid (see Parsoid/Setup for more detail), and you must set  to the interwiki name you give this wiki in parsoid's localsettings.js:

Linking with Parsoid in private wikis
The private wiki cookie forwarding feature described below does not appear to work for many private wikis. A solution using a modification to LocalSettings.php and the $_SERVER['REMOTE_ADDR'] variable appears to allow Parsoid to function with private wikis, by granting read access to connections that originate from the local server.

Forwarding Cookies to Parsoid
Note that this configuration is not available in the old version of VisualEditor that is compatible with MediaWiki 1.22.

ONLY enable this on private wikis and ONLY IF you understand the SECURITY IMPLICATIONS of sending Cookie headers to Parsoid over HTTP!

Note for MediaWiki 1.23 users
For MediaWiki 1.23, as well as the Parsoid nodejs service, you will also need to install the the Parsoid PHP extension. Without this, VisualEditor will fail to load (as it supplied key styling code until that was moved in MediaWiki itself in MediaWiki 1.24 onwards).

Note for Parsoid on Windows, Debian and other systems
Note that it is particularly complicated and time consuming to set up VisualEditor with Parsoid in non-standard systems, like those running Windows or Debian - those difficulties might even prevent the successful installation of VisualEditor for some people on some platforms.

Troubleshooting

 * parsoidserver-http-curl-error: couldn't connect to host.
 * Parsoid is not running, or  is not set correctly


 * parsoidserver-http-curl-error : Failed to connect to .... : Permission denied.
 * Can be caused by a cURL request on a Security-Enhanced Linux (SELinux, like CentOS) to a non standard port like 8000 in the example configuration above, see http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied


 * parsoidserver-http-bad-status : 401
 * Caused by read or edit restrictions. If you've set up a private wiki and don't want to use cookie forwarding, you can explicitly remove restrictions for Parsoid by IP address.


 * parsoidserver-http-not-found : 404 (or timeout)
 * Caused by wrong path to MediaWiki API endpoint. Set correct url to the right path to  in Parsoid's   config file. If you have set up following the recommendations, your API path would be "http://localhost/w/api.php". Add this API path to "localsettings.js" like "parsoidConfig.setInterwiki( 'localhost', 'http://localhost/w/api.php ' );".