Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/215062

Change subject: Revert "Update extension.json and empty out PHP entry point"
......................................................................

Revert "Update extension.json and empty out PHP entry point"

This reverts commit e951084fb67e61f33d4d5e276bdaab1eebe55ded.

Change-Id: I4b1ce4deda58235cd13b5f63ac6220b8b566dfcc
---
M VisualEditor.php
M extension.json
2 files changed, 1,855 insertions(+), 167 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/62/215062/1

diff --git a/VisualEditor.php b/VisualEditor.php
index ed360e7..ba06924 100755
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -11,21 +11,1710 @@
  * @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
-if ( function_exists( 'wfLoadExtension' ) ) {
-       wfLoadExtension( 'VisualEditor' );
 
-       // Keep i18n globals so mergeMessageFileList.php doesn't break
-       $wgMessagesDirs['VisualEditor'] = array(
-               __DIR__ . '/lib/ve/i18n',
-               __DIR__ . '/modules/ve-mw/i18n',
-               __DIR__ . '/modules/ve-wmf/i18n'
-       );
+/* Setup */
 
-       /* wfWarn(
-       'Deprecated PHP entry point used for VisualEditor extension. Please use 
wfLoadExtension '.
-       'instead, see https://www.mediawiki.org/wiki/Extension_registration for 
more details.'
-       ); */
-       return true;
-}
+$wgExtensionCredits['other'][] = array(
+       'path' => __FILE__,
+       'name' => 'VisualEditor',
+       'author' => array(
+               'Alex Monk',
+               'Bartosz Dziewoński',
+               'Christian Williams',
+               'David Chan',
+               'Ed Sanders',
+               'Inez Korczyński',
+               'James D. Forrester',
+               'Moriel Schottlender',
+               'Roan Kattouw',
+               'Rob Moen',
+               'Sucheta Ghoshal',
+               'Timo Tijhof',
+               'Trevor Parscal',
+               '...',
+       ),
+       'version' => '0.1.0',
+       'url' => 'https://www.mediawiki.org/wiki/Extension:VisualEditor',
+       'descriptionmsg' => 'visualeditor-desc',
+       'license-name' => 'MIT',
+);
 
-die( 'This version of the VisualEditor extension requires MediaWiki 1.25+.' );
+$dir = __DIR__ . '/';
+
+// Register files
+$wgAutoloadClasses['ApiVisualEditor'] = $dir . 'ApiVisualEditor.php';
+$wgAutoloadClasses['ApiVisualEditorEdit'] = $dir . 'ApiVisualEditorEdit.php';
+$wgAutoloadClasses['VisualEditorHooks'] = $dir . 'VisualEditor.hooks.php';
+$wgAutoloadClasses['VisualEditorDataModule'] = $dir . 
'VisualEditorDataModule.php';
+$wgAutoloadClasses['VisualEditorViewPageTargetInitModule'] =
+       $dir . 'VisualEditorViewPageTargetInitModule.php';
+$wgMessagesDirs['VisualEditor'] = array(
+       __DIR__ . '/lib/ve/i18n',
+       __DIR__ . '/modules/ve-mw/i18n',
+       __DIR__ . '/modules/ve-wmf/i18n'
+);
+
+// Register API modules
+$wgAPIModules['visualeditor'] = array(
+       'class' => 'ApiVisualEditor',
+       'factory' => 'VisualEditorHooks::VisualEditorApiFactory',
+);
+$wgAPIModules['visualeditoredit'] = array(
+       'class' => 'ApiVisualEditorEdit',
+       'factory' => 'VisualEditorHooks::VisualEditorApiFactory',
+);
+
+// Register Config instance
+$wgConfigRegistry['visualeditor'] = 'GlobalVarConfig::newInstance';
+
+// Register Hooks
+$wgHooks['BeforePageDisplay'][] = 'VisualEditorHooks::onBeforePageDisplay';
+$wgHooks['ContentHandlerDefaultModelFor'][] = 
'VisualEditorHooks::onContentHandlerDefaultModelFor';
+$wgHooks['SkinEditSectionLinks'][] = 
'VisualEditorHooks::onSkinEditSectionLinks';
+$wgHooks['GetBetaFeaturePreferences'][] = 
'VisualEditorHooks::onGetBetaPreferences';
+$wgHooks['GetPreferences'][] = 'VisualEditorHooks::onGetPreferences';
+$wgHooks['ListDefinedTags'][] = 'VisualEditorHooks::onListDefinedTags';
+$wgHooks['ChangeTagsListActive'][] = 'VisualEditorHooks::onListDefinedTags';
+$wgHooks['MakeGlobalVariablesScript'][] = 
'VisualEditorHooks::onMakeGlobalVariablesScript';
+$wgHooks['RedirectSpecialArticleRedirectParams'][] =
+       'VisualEditorHooks::onRedirectSpecialArticleRedirectParams';
+$wgHooks['ResourceLoaderGetConfigVars'][] = 
'VisualEditorHooks::onResourceLoaderGetConfigVars';
+$wgHooks['ResourceLoaderRegisterModules'][] = 
'VisualEditorHooks::onResourceLoaderRegisterModules';
+$wgHooks['ResourceLoaderTestModules'][] = 
'VisualEditorHooks::onResourceLoaderTestModules';
+$wgHooks['SkinTemplateNavigation'][] = 
'VisualEditorHooks::onSkinTemplateNavigation';
+$wgHooks['ParserTestGlobals'][] = 'VisualEditorHooks::onParserTestGlobals';
+$wgHooks['EditPage::showEditForm:fields'][] = 
'VisualEditorHooks::onEditPageShowEditFormFields';
+$wgHooks['RecentChange_save'][] = 'VisualEditorHooks::onRecentChange_save';
+$wgHooks['BeforeInitialize'][] = 'VisualEditorHooks::onBeforeInitialize';
+$wgExtensionFunctions[] = 'VisualEditorHooks::onSetup';
+
+// Run split test in production if $wgVisualEditorEnableSplitTest is true.
+$wgHooks['AddNewAccount'][] = 'VisualEditorHooks::onAddNewAccount';
+
+// Register resource modules
+
+$wgVisualEditorResourceTemplate = array(
+       'localBasePath' => __DIR__,
+       'remoteExtPath' => 'VisualEditor',
+);
+
+$wgResourceModules += array(
+       'Base64.js' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'lib/Base64.js/base64.js',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       // This includes typed arrays and base64 polyfills for IE9
+       // All the other polyfills Easy-Deflate provides are
+       // already VE requirements.
+       'easy-deflate.core' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'lib/Easy-Deflate/easydeflate.js',
+                       'lib/Easy-Deflate/typedarrays.js',
+               ),
+               'dependencies' => array(
+                       'Base64.js'
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'easy-deflate.deflate' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'lib/Easy-Deflate/deflate.js',
+               ),
+               'dependencies' => array(
+                       'easy-deflate.core'
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'unicodejs' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'lib/ve/lib/unicodejs/unicodejs.js',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       // Back compat alias, can be removed after October 2014 or so
+       'unicodejs.wordbreak' => $wgVisualEditorResourceTemplate + array(
+               'dependencies' => 'unicodejs'
+       ),
+
+       'papaparse' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => 'lib/ve/lib/papaparse/papaparse.js',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'rangefix' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => 'lib/ve/lib/rangefix/rangefix.js',
+               'targets' => array( 'desktop', 'mobile' )
+       ),
+
+       'ext.visualEditor.viewPageTarget.init' => 
$wgVisualEditorResourceTemplate + array(
+               'class' => 'VisualEditorViewPageTargetInitModule',
+               'scripts' => 
'modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.init.js',
+               'styles' => 
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget.init.css',
+               'dependencies' => array(
+                       'jquery.client',
+                       'mediawiki.page.startup',
+                       'mediawiki.Title',
+                       'mediawiki.Uri',
+                       'mediawiki.util',
+                       'user.options',
+                       'ext.visualEditor.track',
+               ),
+               'messages' => array(
+                       'accesskey-ca-editsource',
+                       'accesskey-ca-ve-edit',
+                       'accesskey-save',
+                       'pipe-separator',
+                       'tooltip-ca-createsource',
+                       'tooltip-ca-editsource',
+                       'tooltip-ca-ve-edit',
+                       'visualeditor-ca-editsource-section',
+                       'postedit-confirmation-created',
+                       'postedit-confirmation-restored',
+                       'postedit-confirmation-saved',
+               ),
+               'position' => 'top',
+       ),
+
+       'ext.visualEditor.viewPageTarget.noscript' => 
$wgVisualEditorResourceTemplate + array(
+               'position' => 'top',
+               'styles' => 
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget.noscript.css',
+       ),
+
+       'ext.visualEditor.targetLoader' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => 'modules/ve-mw/init/ve.init.mw.TargetLoader.js',
+               'dependencies' => array(
+                       'ext.visualEditor.track',
+                       'mediawiki.api'
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.viewPageTarget' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       
'modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget.css',
+               ),
+               'skinStyles' => array(
+                       'vector' => array(
+                               
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget-shared.css',
+                               
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget-vector.css',
+                       ),
+                       'apex' => array(
+                               
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget-shared.css',
+                               
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget-apex.css',
+                       ),
+                       'monobook' => array(
+                               
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget-shared.css',
+                               
'modules/ve-mw/init/styles/ve.init.mw.ViewPageTarget-monobook.css',
+                       )
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.base',
+                       'ext.visualEditor.mediawiki',
+                       'ext.visualEditor.core.desktop',
+                       'mediawiki.jqueryMsg',
+                       'mediawiki.util',
+               ),
+               'messages' => array(
+                       // MW core messages
+                       'creating',
+                       'editing',
+                       'lastmodifiedat',
+                       'parentheses',
+                       'redirectpagesub',
+                       'spamprotectionmatch',
+                       'spamprotectiontext',
+                       'summary-preview',
+
+                       // Messages needed by VE in init phase only (rest go 
below)
+                       'visualeditor-loadwarning',
+                       'visualeditor-loadwarning-token',
+                       'visualeditor-savedialog-identify-anon',
+                       'visualeditor-savedialog-identify-user',
+                       'visualeditor-timeout',
+                       'visualeditor-saveerror-titleblacklist',
+               ),
+       ),
+       'ext.visualEditor.mobileViewTarget' => $wgVisualEditorResourceTemplate 
+ array(
+               'scripts' => array(
+                       
'modules/ve-mw/init/targets/ve.init.mw.MobileViewTarget.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/init/styles/ve.init.mw.MobileViewTarget.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.base',
+                       'ext.visualEditor.mediawiki.mobile',
+                       'ext.visualEditor.core.mobile',
+                       'ext.visualEditor.mwimage.core',
+               ),
+               'targets' => array( 'mobile' ),
+       ),
+
+       'ext.visualEditor.ve' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => 'lib/ve/src/ve.js',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.track' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => 'lib/ve/src/ve.track.js',
+               'dependencies' => 'ext.visualEditor.ve',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.base' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       // ve
+                       'lib/ve/src/ve.utils.js',
+                       'lib/ve/src/ve.TriggerListener.js',
+
+                       // init
+                       'lib/ve/src/init/ve.init.js',
+                       'lib/ve/src/init/ve.init.Platform.js',
+                       'lib/ve/src/init/ve.init.Target.js',
+               ),
+               'debugScripts' => array(
+                       'lib/ve/src/ve.debug.js',
+               ),
+               'dependencies' => array(
+                       'oojs',
+                       'oojs-ui',
+                       'unicodejs',
+                       'ext.visualEditor.ve',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mediawiki' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       // init
+                       'modules/ve-mw/init/ve.init.mw.js',
+                       'modules/ve-mw/init/ve.init.mw.ApiResponseCache.js',
+                       'modules/ve-mw/init/ve.init.mw.LinkCache.js',
+                       'modules/ve-mw/init/ve.init.mw.ImageInfoCache.js',
+                       'modules/ve-mw/init/ve.init.mw.Platform.js',
+                       'modules/ve-mw/init/ve.init.mw.Platform.init.js',
+                       'modules/ve-mw/init/ve.init.mw.Target.js',
+                       'modules/ve-mw/init/ve.init.mw.TargetEvents.js',
+                       'modules/ve-mw/init/ve.init.mw.trackSubscriber.js',
+               ),
+               'styles' => array(
+                       'modules/ve-mw/init/styles/ve.init.mw.Target.css',
+               ),
+               'dependencies' => array(
+                       'jquery.byteLength',
+                       'jquery.client',
+                       'mediawiki.api',
+                       'mediawiki.language',
+                       'mediawiki.Title',
+                       'mediawiki.Uri',
+                       'mediawiki.user',
+                       'mediawiki.util',
+                       'user.options',
+                       'user.tokens',
+                       'moment',
+                       'ext.visualEditor.base',
+                       'ext.visualEditor.track',
+                       'ext.visualEditor.targetLoader',
+                       'jquery.uls.data',
+               ),
+               'messages' => array(
+                       'visualeditor-quick-access-characters.json',
+                       'visualeditor-special-characters-group-other'
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mediawiki.mobile' => $wgVisualEditorResourceTemplate 
+ array(
+               'scripts' => array(
+                       'modules/ve-mw/ui/ve.ui.MWMobileContext.js',
+                       'modules/ve-mw/ui/ve.ui.MWMobileSurface.js',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mediawiki',
+                       'ext.visualEditor.core.mobile',
+               ),
+               'targets' => array( 'mobile' ),
+       ),
+
+       'ext.visualEditor.standalone' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       // init
+                       'lib/ve/src/init/sa/ve.init.sa.js',
+                       'lib/ve/src/init/sa/ve.init.sa.Platform.js',
+                       'lib/ve/src/init/sa/ve.init.sa.Target.js',
+               ),
+               'styles' => array(
+                       'lib/ve/src/init/sa/styles/ve.init.sa.css'
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.base',
+                       'jquery.i18n',
+                       'jquery.uls.data',
+               ),
+       ),
+
+       'ext.visualEditor.data' => $wgVisualEditorResourceTemplate + array(
+               'class' => 'VisualEditorDataModule',
+       ),
+
+       'ext.visualEditor.core' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       // ve
+                       'lib/ve/src/ve.Range.js',
+                       'lib/ve/src/ve.Node.js',
+                       'lib/ve/src/ve.BranchNode.js',
+                       'lib/ve/src/ve.LeafNode.js',
+                       'lib/ve/src/ve.Document.js',
+                       'lib/ve/src/ve.EventSequencer.js',
+
+                       // dm
+                       'lib/ve/src/dm/ve.dm.js',
+                       'lib/ve/src/dm/ve.dm.Model.js',
+                       'lib/ve/src/dm/ve.dm.ModelRegistry.js',
+                       'lib/ve/src/dm/ve.dm.ModelFactory.js',
+                       'lib/ve/src/dm/ve.dm.NodeFactory.js',
+                       'lib/ve/src/dm/ve.dm.AnnotationFactory.js',
+                       'lib/ve/src/dm/ve.dm.AnnotationSet.js',
+                       'lib/ve/src/dm/ve.dm.MetaItemFactory.js',
+                       'lib/ve/src/dm/ve.dm.Node.js',
+                       'lib/ve/src/dm/ve.dm.ClassAttributeNode.js',
+                       'lib/ve/src/dm/ve.dm.AlignableNode.js',
+                       'lib/ve/src/dm/ve.dm.FocusableNode.js',
+                       'lib/ve/src/dm/ve.dm.Scalable.js',
+                       'lib/ve/src/dm/ve.dm.APIResultsProvider.js',
+                       'lib/ve/src/dm/ve.dm.APIResultsQueue.js',
+                       'lib/ve/src/dm/ve.dm.ResizableNode.js',
+                       'lib/ve/src/dm/ve.dm.BranchNode.js',
+                       'lib/ve/src/dm/ve.dm.ContentBranchNode.js',
+                       'lib/ve/src/dm/ve.dm.LeafNode.js',
+                       'lib/ve/src/dm/ve.dm.Annotation.js',
+                       'lib/ve/src/dm/ve.dm.InternalList.js',
+                       'lib/ve/src/dm/ve.dm.MetaItem.js',
+                       'lib/ve/src/dm/ve.dm.MetaList.js',
+                       'lib/ve/src/dm/ve.dm.TableMatrix.js',
+                       'lib/ve/src/dm/ve.dm.TransactionProcessor.js',
+                       'lib/ve/src/dm/ve.dm.Transaction.js',
+                       'lib/ve/src/dm/ve.dm.Selection.js',
+                       'lib/ve/src/dm/ve.dm.Surface.js',
+                       'lib/ve/src/dm/ve.dm.SurfaceFragment.js',
+                       'lib/ve/src/dm/ve.dm.DataString.js',
+                       'lib/ve/src/dm/ve.dm.Document.js',
+                       'lib/ve/src/dm/ve.dm.DocumentSlice.js',
+                       'lib/ve/src/dm/ve.dm.LinearData.js',
+                       'lib/ve/src/dm/ve.dm.DocumentSynchronizer.js',
+                       'lib/ve/src/dm/ve.dm.IndexValueStore.js',
+                       'lib/ve/src/dm/ve.dm.Converter.js',
+
+                       'lib/ve/src/dm/selections/ve.dm.LinearSelection.js',
+                       'lib/ve/src/dm/selections/ve.dm.NullSelection.js',
+                       'lib/ve/src/dm/selections/ve.dm.TableSelection.js',
+
+                       'lib/ve/src/dm/lineardata/ve.dm.FlatLinearData.js',
+                       'lib/ve/src/dm/lineardata/ve.dm.ElementLinearData.js',
+                       'lib/ve/src/dm/lineardata/ve.dm.MetaLinearData.js',
+
+                       'lib/ve/src/dm/nodes/ve.dm.GeneratedContentNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.AlienNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.BlockquoteNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.BreakNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.CenterNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.CommentNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.DefinitionListItemNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.DefinitionListNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.DivNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.DocumentNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.HeadingNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.InternalItemNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.InternalListNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.ListItemNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.ListNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.ParagraphNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.PreformattedNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.TableCaptionNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.TableCellNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.TableNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.TableRowNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.TableSectionNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.TextNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.ImageNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.BlockImageNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.BlockImageCaptionNode.js',
+                       'lib/ve/src/dm/nodes/ve.dm.InlineImageNode.js',
+
+                       'lib/ve/src/dm/annotations/ve.dm.LinkAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.TextStyleAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.AbbreviationAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.BigAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.BoldAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.CodeSampleAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.CodeAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.DatetimeAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.DefinitionAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.FontAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.HighlightAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.ItalicAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.QuotationAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.SmallAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.SpanAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.StrikethroughAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.SubscriptAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.SuperscriptAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.UnderlineAnnotation.js',
+                       
'lib/ve/src/dm/annotations/ve.dm.UserInputAnnotation.js',
+                       'lib/ve/src/dm/annotations/ve.dm.VariableAnnotation.js',
+
+                       'lib/ve/src/dm/metaitems/ve.dm.AlienMetaItem.js',
+                       'lib/ve/src/dm/metaitems/ve.dm.CommentMetaItem.js',
+
+                       // ce
+                       'lib/ve/src/ce/ve.ce.js',
+                       'lib/ve/src/ce/ve.ce.RangeState.js',
+                       'lib/ve/src/ce/ve.ce.AnnotationFactory.js',
+                       'lib/ve/src/ce/ve.ce.NodeFactory.js',
+                       'lib/ve/src/ce/ve.ce.Document.js',
+                       'lib/ve/src/ce/ve.ce.View.js',
+                       'lib/ve/src/ce/ve.ce.Annotation.js',
+                       'lib/ve/src/ce/ve.ce.Node.js',
+                       'lib/ve/src/ce/ve.ce.BranchNode.js',
+                       'lib/ve/src/ce/ve.ce.ContentBranchNode.js',
+                       'lib/ve/src/ce/ve.ce.LeafNode.js',
+                       'lib/ve/src/ce/ve.ce.ClassAttributeNode.js',
+                       'lib/ve/src/ce/ve.ce.AlignableNode.js',
+                       'lib/ve/src/ce/ve.ce.FocusableNode.js',
+                       'lib/ve/src/ce/ve.ce.ResizableNode.js',
+                       'lib/ve/src/ce/ve.ce.Surface.js',
+                       'lib/ve/src/ce/ve.ce.SurfaceObserver.js',
+
+                       'lib/ve/src/ce/nodes/ve.ce.GeneratedContentNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.AlienNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.BlockquoteNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.BreakNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.CenterNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.CommentNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.DefinitionListItemNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.DefinitionListNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.DivNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.DocumentNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.HeadingNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.InternalItemNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.InternalListNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.ListItemNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.ListNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.ParagraphNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.PreformattedNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.TableCaptionNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.TableCellNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.TableNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.TableRowNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.TableSectionNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.TextNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.ImageNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.BlockImageNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.BlockImageCaptionNode.js',
+                       'lib/ve/src/ce/nodes/ve.ce.InlineImageNode.js',
+
+                       'lib/ve/src/ce/annotations/ve.ce.LinkAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.TextStyleAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.AbbreviationAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.BigAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.BoldAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.CodeAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.CodeSampleAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.DatetimeAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.DefinitionAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.FontAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.HighlightAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.ItalicAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.QuotationAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.SmallAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.SpanAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.StrikethroughAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.SubscriptAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.SuperscriptAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.UnderlineAnnotation.js',
+                       
'lib/ve/src/ce/annotations/ve.ce.UserInputAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.VariableAnnotation.js',
+
+                       // ui
+                       'lib/ve/src/ui/ve.ui.js',
+
+                       'lib/ve/src/ui/ve.ui.Overlay.js',
+                       'lib/ve/src/ui/ve.ui.Surface.js',
+                       'lib/ve/src/ui/ve.ui.Context.js',
+                       'lib/ve/src/ui/ve.ui.LinearContext.js',
+                       'lib/ve/src/ui/ve.ui.ModeledFactory.js',
+                       'lib/ve/src/ui/ve.ui.ContextItem.js',
+                       'lib/ve/src/ui/ve.ui.ContextItemFactory.js',
+                       'lib/ve/src/ui/ve.ui.TableContext.js',
+                       'lib/ve/src/ui/ve.ui.Tool.js',
+                       'lib/ve/src/ui/ve.ui.Toolbar.js',
+                       'lib/ve/src/ui/ve.ui.TargetToolbar.js',
+                       'lib/ve/src/ui/ve.ui.ToolFactory.js',
+                       'lib/ve/src/ui/ve.ui.Command.js',
+                       'lib/ve/src/ui/ve.ui.CommandRegistry.js',
+                       'lib/ve/src/ui/ve.ui.Trigger.js',
+                       'lib/ve/src/ui/ve.ui.TriggerRegistry.js',
+                       'lib/ve/src/ui/ve.ui.Sequence.js',
+                       'lib/ve/src/ui/ve.ui.SequenceRegistry.js',
+                       'lib/ve/src/ui/ve.ui.Action.js',
+                       'lib/ve/src/ui/ve.ui.ActionFactory.js',
+                       'lib/ve/src/ui/ve.ui.DataTransferHandler.js',
+                       'lib/ve/src/ui/ve.ui.FileTransferHandler.js',
+                       'lib/ve/src/ui/ve.ui.DataTransferHandlerFactory.js',
+                       'lib/ve/src/ui/ve.ui.DataTransferItem.js',
+                       'lib/ve/src/ui/ve.ui.WindowManager.js',
+                       
'lib/ve/src/ui/windowmanagers/ve.ui.SurfaceWindowManager.js',
+
+                       'lib/ve/src/ui/actions/ve.ui.AnnotationAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.ContentAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.FormatAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.HistoryAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.IndentationAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.ListAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.TableAction.js',
+                       'lib/ve/src/ui/actions/ve.ui.WindowAction.js',
+
+                       
'lib/ve/src/ui/contextitems/ve.ui.AlignableContextItem.js',
+                       
'lib/ve/src/ui/contextitems/ve.ui.CommentContextItem.js',
+                       
'lib/ve/src/ui/contextitems/ve.ui.LanguageContextItem.js',
+                       'lib/ve/src/ui/contextitems/ve.ui.LinkContextItem.js',
+                       'lib/ve/src/ui/contextitems/ve.ui.ToolContextItem.js',
+                       'lib/ve/src/ui/contextitems/ve.ui.TableContextItem.js',
+
+                       
'lib/ve/src/ui/commands/ve.ui.ClearAnnotationCommand.js',
+                       'lib/ve/src/ui/commands/ve.ui.HistoryCommand.js',
+                       'lib/ve/src/ui/commands/ve.ui.IndentationCommand.js',
+                       'lib/ve/src/ui/commands/ve.ui.MergeCellsCommand.js',
+                       'lib/ve/src/ui/commands/ve.ui.TableCaptionCommand.js',
+
+                       'lib/ve/src/ui/dialogs/ve.ui.FragmentDialog.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.NodeDialog.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.ToolbarDialog.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.CommandHelpDialog.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.FindAndReplaceDialog.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.ProgressDialog.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.SpecialCharacterDialog.js',
+
+                       
'lib/ve/src/ui/datatransferhandlers/ve.ui.PlainTextStringTransferHandler.js',
+                       
'lib/ve/src/ui/datatransferhandlers/ve.ui.HTMLStringTransferHandler.js',
+                       
'lib/ve/src/ui/datatransferhandlers/ve.ui.DSVFileTransferHandler.js',
+                       
'lib/ve/src/ui/datatransferhandlers/ve.ui.PlainTextFileTransferHandler.js',
+                       
'lib/ve/src/ui/datatransferhandlers/ve.ui.HTMLFileTransferHandler.js',
+
+                       
'lib/ve/src/ui/windowmanagers/ve.ui.ToolbarDialogWindowManager.js',
+
+                       'lib/ve/src/ui/widgets/ve.ui.AlignWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.SurfaceWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.LinkAnnotationWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.ContextSelectWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.ContextOptionWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.DimensionsWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.MediaSizeWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.PreviewWidget.js',
+                       
'lib/ve/src/ui/widgets/ve.ui.WhitespacePreservingTextInputWidget.js',
+
+                       'lib/ve/src/ui/tools/ve.ui.AnnotationTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.ClearAnnotationTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.DialogTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.ToolbarDialogTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.FormatTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.HistoryTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.IndentationTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.InspectorTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.ListTool.js',
+                       'lib/ve/src/ui/tools/ve.ui.TableTool.js',
+
+                       'lib/ve/src/ui/inspectors/ve.ui.FragmentInspector.js',
+                       'lib/ve/src/ui/inspectors/ve.ui.AnnotationInspector.js',
+                       'lib/ve/src/ui/inspectors/ve.ui.NodeInspector.js',
+                       'lib/ve/src/ui/inspectors/ve.ui.CommentInspector.js',
+                       
'lib/ve/src/ui/inspectors/ve.ui.LinkAnnotationInspector.js',
+
+                       'lib/ve/src/ui/pages/ve.ui.SpecialCharacterPage.js',
+               ),
+               'debugScripts' => array(
+                       'lib/ve/src/ui/ve.ui.DebugBar.js',
+                       'lib/ve/src/ve.Filibuster.js',
+               ),
+               'styles' => array(
+                       // ce
+                       'lib/ve/src/ce/styles/nodes/ve.ce.CommentNode.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.FocusableNode.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.AlienNode.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.BranchNode.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.DocumentNode.css',
+                       
'lib/ve/src/ce/styles/nodes/ve.ce.GeneratedContentNode.css',
+                       
'lib/ve/src/ce/styles/annotations/ve.ce.LanguageAnnotation.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.ResizableNode.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.TableCellNode.css',
+                       'lib/ve/src/ce/styles/nodes/ve.ce.TableNode.css',
+                       'lib/ve/src/ce/styles/ve.ce.Surface.css',
+                       'lib/ve/src/ui/styles/ve.ui.css',
+
+                       // ui
+                       'lib/ve/src/ui/styles/dialogs/ve.ui.ToolbarDialog.css',
+                       
'lib/ve/src/ui/styles/dialogs/ve.ui.CommandHelpDialog.css',
+                       
'lib/ve/src/ui/styles/dialogs/ve.ui.FindAndReplaceDialog.css',
+                       'lib/ve/src/ui/styles/dialogs/ve.ui.ProgressDialog.css',
+                       
'lib/ve/src/ui/styles/dialogs/ve.ui.SpecialCharacterDialog.css',
+                       'lib/ve/src/ui/styles/tools/ve.ui.FormatTool.css',
+                       
'lib/ve/src/ui/styles/widgets/ve.ui.ContextOptionWidget.css',
+                       
'lib/ve/src/ui/styles/widgets/ve.ui.ContextSelectWidget.css',
+                       
'lib/ve/src/ui/styles/widgets/ve.ui.DimensionsWidget.css',
+                       
'lib/ve/src/ui/styles/widgets/ve.ui.MediaSizeWidget.css',
+                       
'lib/ve/src/ui/styles/inspectors/ve.ui.CommentInspector.css',
+                       
'lib/ve/src/ui/styles/inspectors/ve.ui.FragmentInspector.css',
+                       'lib/ve/src/ui/styles/widgets/ve.ui.SurfaceWidget.css',
+                       'lib/ve/src/ui/styles/ve.ui.ContextItem.css',
+                       
'lib/ve/src/ui/styles/contextitems/ve.ui.AlignableContextItem.css',
+                       
'lib/ve/src/ui/styles/contextitems/ve.ui.CommentContextItem.css',
+                       
'lib/ve/src/ui/styles/contextitems/ve.ui.LanguageContextItem.css',
+                       
'lib/ve/src/ui/styles/contextitems/ve.ui.LinkContextItem.css',
+                       
'lib/ve/src/ui/styles/contextitems/ve.ui.ToolContextItem.css',
+                       
'lib/ve/src/ui/styles/contextitems/ve.ui.TableContextItem.css',
+                       'lib/ve/src/ui/styles/ve.ui.Overlay.css',
+                       'lib/ve/src/ui/styles/ve.ui.Surface.css',
+                       'lib/ve/src/ui/styles/ve.ui.Toolbar.css',
+                       'lib/ve/src/ui/styles/ve.ui.TableContext.css',
+
+                       // TODO: add debugStyles to ResourceLoader
+                       'lib/ve/src/ui/styles/ve.ui.DebugBar.css',
+
+                       'lib/ve/src/themes/mediawiki/dialogs.css',
+                       'lib/ve/src/themes/mediawiki/widgets.css',
+               ),
+               'dependencies' => array(
+                       'unicodejs',
+                       'rangefix',
+                       'papaparse',
+                       'jquery.client',
+                       'ext.visualEditor.base',
+               ),
+               'messages' => array(
+                       'visualeditor',
+                       'visualeditor-aliennode-tooltip',
+                       'visualeditor-align-widget-center',
+                       'visualeditor-align-widget-left',
+                       'visualeditor-align-widget-right',
+                       'visualeditor-annotationbutton-bold-tooltip',
+                       'visualeditor-annotationbutton-code-tooltip',
+                       'visualeditor-annotationbutton-italic-tooltip',
+                       'visualeditor-annotationbutton-link-tooltip',
+                       'visualeditor-annotationbutton-strikethrough-tooltip',
+                       'visualeditor-annotationbutton-subscript-tooltip',
+                       'visualeditor-annotationbutton-superscript-tooltip',
+                       'visualeditor-annotationbutton-underline-tooltip',
+                       'visualeditor-clearbutton-tooltip',
+                       'visualeditor-clipboard-copy',
+                       'visualeditor-clipboard-cut',
+                       'visualeditor-clipboard-paste',
+                       'visualeditor-clipboard-paste-special',
+                       'visualeditor-commentinspector-edit',
+                       'visualeditor-commentinspector-title',
+                       'visualeditor-commentinspector-tooltip',
+                       'visualeditor-content-select-all',
+                       'visualeditor-contextitemwidget-label-secondary',
+                       'visualeditor-dialog-action-apply',
+                       'visualeditor-dialog-action-cancel',
+                       'visualeditor-dialog-action-done',
+                       'visualeditor-dialog-action-goback',
+                       'visualeditor-dialog-action-insert',
+                       'visualeditor-dialog-command-help-title',
+                       'visualeditor-dialog-error',
+                       'visualeditor-dialog-error-dismiss',
+                       'visualeditor-dialog-media-change-image',
+                       'visualeditor-dimensionswidget-px',
+                       'visualeditor-dimensionswidget-times',
+                       'visualeditor-find-and-replace-done',
+                       'visualeditor-find-and-replace-find-text',
+                       'visualeditor-find-and-replace-invalid-regex',
+                       'visualeditor-find-and-replace-match-case',
+                       'visualeditor-find-and-replace-next-button',
+                       'visualeditor-find-and-replace-previous-button',
+                       'visualeditor-find-and-replace-regular-expression',
+                       'visualeditor-find-and-replace-replace-all-button',
+                       'visualeditor-find-and-replace-replace-button',
+                       'visualeditor-find-and-replace-replace-text',
+                       'visualeditor-find-and-replace-results',
+                       'visualeditor-find-and-replace-title',
+                       'visualeditor-formatdropdown-format-blockquote',
+                       'visualeditor-formatdropdown-format-heading-label',
+                       'visualeditor-formatdropdown-format-heading1',
+                       'visualeditor-formatdropdown-format-heading2',
+                       'visualeditor-formatdropdown-format-heading3',
+                       'visualeditor-formatdropdown-format-heading4',
+                       'visualeditor-formatdropdown-format-heading5',
+                       'visualeditor-formatdropdown-format-heading6',
+                       'visualeditor-formatdropdown-format-paragraph',
+                       'visualeditor-formatdropdown-format-preformatted',
+                       'visualeditor-formatdropdown-title',
+                       'visualeditor-help-tool',
+                       'visualeditor-historybutton-redo-tooltip',
+                       'visualeditor-historybutton-undo-tooltip',
+                       'visualeditor-indentationbutton-indent-tooltip',
+                       'visualeditor-indentationbutton-outdent-tooltip',
+                       'visualeditor-inspector-close-tooltip',
+                       'visualeditor-inspector-remove-tooltip',
+                       'visualeditor-linkinspector-open',
+                       'visualeditor-linkinspector-title',
+                       'visualeditor-listbutton-bullet-tooltip',
+                       'visualeditor-listbutton-number-tooltip',
+                       
'visualeditor-mediasizewidget-button-originaldimensions',
+                       'visualeditor-mediasizewidget-label-custom',
+                       'visualeditor-mediasizewidget-label-defaulterror',
+                       'visualeditor-mediasizewidget-label-scale',
+                       'visualeditor-mediasizewidget-label-scale-percent',
+                       'visualeditor-mediasizewidget-sizeoptions-custom',
+                       'visualeditor-mediasizewidget-sizeoptions-default',
+                       'visualeditor-mediasizewidget-sizeoptions-scale',
+                       'visualeditor-shortcuts-clipboard',
+                       'visualeditor-shortcuts-formatting',
+                       'visualeditor-shortcuts-history',
+                       'visualeditor-shortcuts-other',
+                       'visualeditor-shortcuts-text-style',
+                       'visualeditor-slug-insert',
+                       'visualeditor-specialcharacter-button-tooltip',
+                       'visualeditor-specialcharacterinspector-title',
+                       'visualeditor-table-caption',
+                       'visualeditor-table-delete-col',
+                       'visualeditor-table-delete-row',
+                       'visualeditor-table-delete-table',
+                       'visualeditor-table-format-data',
+                       'visualeditor-table-format-header',
+                       'visualeditor-table-insert-col-after',
+                       'visualeditor-table-insert-col-before',
+                       'visualeditor-table-insert-row-after',
+                       'visualeditor-table-insert-row-before',
+                       'visualeditor-table-insert-table',
+                       'visualeditor-table-merge-cells',
+                       'visualeditor-tablecell-tooltip',
+                       'visualeditor-toolbar-format-tooltip',
+                       'visualeditor-toolbar-history',
+                       'visualeditor-toolbar-insert',
+                       'visualeditor-toolbar-paragraph-format',
+                       'visualeditor-toolbar-structure',
+                       'visualeditor-toolbar-style-tooltip',
+                       'visualeditor-toolbar-table',
+                       'visualeditor-toolbar-text-style',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.core.desktop' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       'lib/ve/src/ui/ve.ui.DesktopSurface.js',
+                       'lib/ve/src/ui/ve.ui.DesktopContext.js',
+                       
'lib/ve/src/ui/windowmanagers/ve.ui.DesktopInspectorWindowManager.js',
+               ),
+               'styles' => array(
+                       'lib/ve/src/ui/styles/ve.ui.DesktopContext.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.core',
+               ),
+               'targets' => array( 'desktop' ),
+       ),
+
+       'ext.visualEditor.core.mobile' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       'lib/ve/src/ui/ve.ui.MobileSurface.js',
+                       'lib/ve/src/ui/ve.ui.MobileContext.js',
+                       
'lib/ve/src/ui/windowmanagers/ve.ui.MobileWindowManager.js'
+               ),
+               'styles' => array(
+                       'lib/ve/src/ui/styles/ve.ui.MobileContext.css',
+                       'lib/ve/src/ui/styles/ve.ui.MobileSurface.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.core',
+               ),
+               'targets' => array( 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwcore' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       // dm
+                       'modules/ve-mw/dm/nodes/ve.dm.MWEntityNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWTableNode.js',
+
+                       
'modules/ve-mw/dm/annotations/ve.dm.MWNowikiAnnotation.js',
+
+                       'modules/ve-mw/dm/metaitems/ve.dm.MWAlienMetaItem.js',
+
+                       // ce
+                       'modules/ve-mw/ce/nodes/ve.ce.MWEntityNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWTableNode.js',
+
+                       
'modules/ve-mw/ce/annotations/ve.ce.MWNowikiAnnotation.js',
+
+                       // ui
+                       'modules/ve-mw/ui/ve.ui.MWCommandRegistry.js',
+                       'modules/ve-mw/ui/ve.ui.MWSequenceRegistry.js',
+
+                       
'modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js',
+
+                       'modules/ve-mw/ui/widgets/ve.ui.MWSurfaceWidget.js',
+                       'modules/ve-mw/ui/widgets/ve.ui.MWTitleInputWidget.js',
+                       'modules/ve-mw/ui/widgets/ve.ui.MWTocItemWidget.js',
+                       'modules/ve-mw/ui/widgets/ve.ui.MWTocWidget.js',
+
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js',
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWBetaWelcomeDialog.js',
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWCommandHelpDialog.js',
+                       
'modules/ve-mw/ui/dialogs/ve.ui.MWCancelConfirmDialog.js',
+                       
'modules/ve-mw/ui/dialogs/ve.ui.MWWikitextSwitchConfirmDialog.js',
+
+                       'modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js',
+                       'modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js',
+
+                       
'modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js',
+                       
'modules/ve-mw/ui/inspectors/ve.ui.MWLiveExtensionInspector.js',
+
+                       'modules/ve-mw/ui/actions/ve.ui.MWLinkAction.js',
+               ),
+               'styles' => array(
+                       // ui
+                       
'modules/ve-mw/ui/styles/inspectors/ve.ui.MWExtensionInspector.css',
+                       
'modules/ve-mw/ui/styles/dialogs/ve.ui.MWCommandHelpDialog.css',
+                       
'modules/ve-mw/ui/styles/dialogs/ve.ui.MWSaveDialog.css',
+                       'modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWTitleInputWidget.css',
+                       'modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.core',
+                       'mediawiki.Title',
+                       'mediawiki.action.history.diff',
+                       'mediawiki.user',
+                       'mediawiki.util',
+                       'mediawiki.jqueryMsg',
+                       'jquery.autoEllipsis',
+                       'jquery.byteLimit',
+                       'mediawiki.skinning.content.parsoid',
+                       'mediawiki.language.specialCharacters',
+               ),
+               'messages' => array(
+                       'visualeditor-beta-label',
+                       'visualeditor-beta-warning',
+                       'visualeditor-browserwarning',
+                       'visualeditor-dialog-beta-welcome-action-continue',
+                       'visualeditor-dialog-beta-welcome-content',
+                       'visualeditor-dialog-beta-welcome-title',
+                       'visualeditor-diff-nochanges',
+                       'visualeditor-differror',
+                       'visualeditor-editconflict',
+                       'visualeditor-editnotices-tool',
+                       'visualeditor-editnotices-tooltip',
+                       'visualeditor-editsummary',
+                       'visualeditor-editsummary-bytes-remaining',
+                       'visualeditor-feedback-tool',
+                       'visualeditor-help-label',
+                       'visualeditor-help-link',
+                       'visualeditor-help-title',
+                       'visualeditor-mweditmodesource-title',
+                       'visualeditor-mweditmodesource-tool',
+                       'visualeditor-mweditmodesource-warning',
+                       'visualeditor-mweditmodesource-warning-cancel',
+                       'visualeditor-mweditmodesource-warning-switch',
+                       'visualeditor-mweditmodesource-warning-switch-discard',
+                       'visualeditor-pagemenu-tooltip',
+                       'visualeditor-pagetranslationwarning',
+                       'visualeditor-savedialog-error-badtoken',
+                       'visualeditor-savedialog-label-create',
+                       'visualeditor-savedialog-label-error',
+                       'visualeditor-savedialog-label-report',
+                       'visualeditor-savedialog-label-resolve-conflict',
+                       'visualeditor-savedialog-label-restore',
+                       'visualeditor-savedialog-label-resume-editing',
+                       'visualeditor-savedialog-label-review',
+                       'visualeditor-savedialog-label-review-good',
+                       'visualeditor-savedialog-label-save',
+                       'visualeditor-savedialog-label-warning',
+                       'visualeditor-savedialog-title-conflict',
+                       'visualeditor-savedialog-title-nochanges',
+                       'visualeditor-savedialog-title-review',
+                       'visualeditor-savedialog-title-save',
+                       'visualeditor-savedialog-warning-dirty',
+                       'visualeditor-saveerror',
+                       'visualeditor-serializeerror',
+                       'visualeditor-recreate',
+                       'visualeditor-toolbar-cite-label',
+                       'visualeditor-toolbar-savedialog',
+                       'visualeditor-version-label',
+                       'visualeditor-viewpage-savewarning',
+                       'visualeditor-viewpage-savewarning-discard',
+                       'visualeditor-viewpage-savewarning-keep',
+                       'visualeditor-viewpage-savewarning-title',
+                       'visualeditor-wikitext-warning-title',
+                       'visualeditor-window-title',
+
+                       // Mentioned in another message
+                       'ooui-dialog-process-continue',
+
+                       // Used by the TOC widget (currently experimental)
+                       'toc',
+                       'showtoc',
+                       'hidetoc',
+
+                       'captcha-edit',
+                       'captcha-label',
+                       'colon-separator',
+                       // Only used if FancyCaptcha is installed and triggered 
on save
+                       'fancycaptcha-edit',
+                       // Only used if QuestyCaptcha is installed and 
triggered on save
+                       'questycaptcha-edit'
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwformatting' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/nodes/ve.dm.MWHeadingNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWPreformattedNode.js',
+
+                       'modules/ve-mw/ce/nodes/ve.ce.MWHeadingNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWPreformattedNode.js',
+
+                       'modules/ve-mw/ui/tools/ve.ui.MWFormatTool.js',
+               ),
+               'skinStyles' => array(
+                       'vector' => array(
+                               
'modules/ve-mw/ui/themes/vector/ve.ui.MWFormatTool.css',
+                       ),
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'messages' => array(
+                       'visualeditor-formatdropdown-format-mw-heading1',
+                       'visualeditor-formatdropdown-format-mw-heading2',
+                       'visualeditor-formatdropdown-format-mw-heading3',
+                       'visualeditor-formatdropdown-format-mw-heading4',
+                       'visualeditor-formatdropdown-format-mw-heading5',
+                       'visualeditor-formatdropdown-format-mw-heading6',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwimage.core' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWInlineImageNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWImageCaptionNode.js',
+
+                       'modules/ve-mw/ce/ve.ce.MWResizableNode.js',
+
+                       'modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWInlineImageNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWBlockImageNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWImageCaptionNode.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ce/styles/nodes/ve.ce.MWBlockImageNode.css',
+                       
'modules/ve-mw/ce/styles/nodes/ve.ce.MWInlineImageNode.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwimage' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/models/ve.dm.MWImageModel.js',
+                       
'modules/ve-mw/dm/models/ve.dm.MWMediaResourceProvider.js',
+                       'modules/ve-mw/dm/models/ve.dm.MWMediaResourceQueue.js',
+
+                       'modules/ve-mw/ui/widgets/ve.ui.MWMediaSearchWidget.js',
+                       'modules/ve-mw/ui/widgets/ve.ui.MWMediaResultWidget.js',
+
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWMediaInfoFieldWidget.js',
+
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js',
+                       'modules/ve-mw/ui/tools/ve.ui.MWMediaDialogTool.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ui/styles/dialogs/ve.ui.MWMediaDialog.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWMediaSearchWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWMediaResultWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWMediaInfoFieldWidget.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwimage.core',
+               ),
+               'messages' => array(
+                       'visualeditor-dialog-media-alttext-section',
+                       'visualeditor-dialog-media-alttext-section-help',
+                       'visualeditor-dialog-media-change-image',
+                       'visualeditor-dialog-media-choose-image',
+                       'visualeditor-dialog-media-content-filename',
+                       'visualeditor-dialog-media-content-section',
+                       'visualeditor-dialog-media-content-section-help',
+                       'visualeditor-dialog-media-dimensionseparator',
+                       'visualeditor-dialog-media-goback',
+                       'visualeditor-dialog-media-info-artist',
+                       'visualeditor-dialog-media-info-audiofile',
+                       'visualeditor-dialog-media-info-created',
+                       'visualeditor-dialog-media-info-credit',
+                       'visualeditor-dialog-media-info-dateformat',
+                       'visualeditor-dialog-media-info-ellipsis',
+                       'visualeditor-dialog-media-info-imagedescription',
+                       'visualeditor-dialog-media-info-licenseshortname',
+                       'visualeditor-dialog-media-info-meta-artist',
+                       'visualeditor-dialog-media-info-moreinfo',
+                       'visualeditor-dialog-media-info-readmore',
+                       'visualeditor-dialog-media-info-separator',
+                       'visualeditor-dialog-media-info-uploaded',
+                       'visualeditor-dialog-media-noresults',
+                       'visualeditor-dialog-media-originaldimensions',
+                       'visualeditor-dialog-media-page-advanced',
+                       'visualeditor-dialog-media-page-general',
+                       'visualeditor-dialog-media-position-center',
+                       'visualeditor-dialog-media-position-checkbox',
+                       'visualeditor-dialog-media-position-checkbox-help',
+                       'visualeditor-dialog-media-position-left',
+                       'visualeditor-dialog-media-position-none',
+                       'visualeditor-dialog-media-position-right',
+                       'visualeditor-dialog-media-position-section',
+                       'visualeditor-dialog-media-position-section-help',
+                       'visualeditor-dialog-media-searchselect',
+                       'visualeditor-dialog-media-size-originalsize-error',
+                       'visualeditor-dialog-media-size-section',
+                       'visualeditor-dialog-media-size-section-help',
+                       'visualeditor-dialog-media-thumbdimensions',
+                       'visualeditor-dialog-media-title',
+                       'visualeditor-dialog-media-type-border',
+                       'visualeditor-dialog-media-type-frame',
+                       'visualeditor-dialog-media-type-frameless',
+                       'visualeditor-dialog-media-type-none',
+                       'visualeditor-dialog-media-type-section',
+                       'visualeditor-dialog-media-type-section-help',
+                       'visualeditor-dialog-media-type-thumb',
+                       'visualeditor-dialogbutton-media-tooltip',
+                       'visualeditor-media-input-placeholder',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwlink' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       
'modules/ve-mw/dm/nodes/ve.dm.MWNumberedExternalLinkNode.js',
+
+                       
'modules/ve-mw/dm/annotations/ve.dm.MWExternalLinkAnnotation.js',
+                       
'modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js',
+
+                       
'modules/ve-mw/ce/nodes/ve.ce.MWNumberedExternalLinkNode.js',
+
+                       
'modules/ve-mw/ce/annotations/ve.ce.MWExternalLinkAnnotation.js',
+                       
'modules/ve-mw/ce/annotations/ve.ce.MWInternalLinkAnnotation.js',
+
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWLinkMenuOptionWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWInternalLinkMenuOptionWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWInternalLinkAnnotationWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWExternalLinkAnnotationWidget.js',
+
+                       
'modules/ve-mw/ui/inspectors/ve.ui.MWLinkAnnotationInspector.js',
+                       
'modules/ve-mw/ui/inspectors/ve.ui.MWLinkNodeInspector.js',
+
+                       'modules/ve-mw/ui/tools/ve.ui.MWLinkInspectorTool.js',
+
+                       
'modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ui/styles/contextitems/ve.ui.MWInternalLinkContextItem.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWLinkTargetInputWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWInternalLinkMenuOptionWidget.css',
+                       
'modules/ve-mw/ui/styles/inspectors/ve.ui.MWLinkAnnotationInspector.css',
+               ),
+               'skinStyles' => array(
+                       'apex' => array(
+                               
'modules/ve-mw/ui/themes/apex/ve.ui.MWLinkTargetInputWidget.css'
+                       ),
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'messages' => array(
+                       'visualeditor-annotationbutton-linknode-tooltip',
+                       'visualeditor-linkinspector-button-link-external',
+                       'visualeditor-linkinspector-button-link-internal',
+                       'visualeditor-linkinspector-description-new-page',
+                       'visualeditor-linkinspector-description-redirect',
+                       'visualeditor-linkinspector-illegal-title',
+                       'visualeditor-linknodeinspector-add-label',
+                       'visualeditor-linknodeinspector-title',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwmeta' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWCategoryMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWDefaultSortMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWHiddenCategoryMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWIndexDisableMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWIndexForceMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWLanguageMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWNewSectionEditDisableMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWNewSectionEditForceMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWNoContentConvertMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWNoEditSectionMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWNoGalleryMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWNoTitleConvertMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWRedirectMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWStaticRedirectMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWTOCDisableMetaItem.js',
+                       
'modules/ve-mw/dm/metaitems/ve.dm.MWTOCForceMetaItem.js',
+
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js',
+                       'modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js',
+
+                       'modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js',
+                       
'modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js',
+                       'modules/ve-mw/ui/pages/ve.ui.MWCategoriesPage.js',
+                       'modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js',
+
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js',
+
+                       'modules/ve-mw/ui/tools/ve.ui.MWMetaDialogTool.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ui/styles/pages/ve.ui.MWCategoriesPage.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryInputWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryItemWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryPopupWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryWidget.css',
+                       
'modules/ve-mw/ui/styles/dialogs/ve.ui.MWMetaDialog.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+                       'ext.visualEditor.mwlink',
+                       'jquery.uls.data',
+               ),
+               'messages' => array(
+                       'visualeditor-advancedsettings-tool',
+                       'visualeditor-categories-tool',
+                       'visualeditor-dialog-meta-advancedsettings-label',
+                       'visualeditor-dialog-meta-advancedsettings-section',
+                       'visualeditor-dialog-meta-categories-category',
+                       'visualeditor-dialog-meta-categories-data-label',
+                       'visualeditor-dialog-meta-categories-defaultsort-help',
+                       'visualeditor-dialog-meta-categories-defaultsort-label',
+                       'visualeditor-dialog-meta-categories-hidden',
+                       
'visualeditor-dialog-meta-categories-input-hiddencategorieslabel',
+                       
'visualeditor-dialog-meta-categories-input-matchingcategorieslabel',
+                       
'visualeditor-dialog-meta-categories-input-movecategorylabel',
+                       
'visualeditor-dialog-meta-categories-input-newcategorylabel',
+                       'visualeditor-dialog-meta-categories-input-placeholder',
+                       'visualeditor-dialog-meta-categories-missing',
+                       'visualeditor-dialog-meta-categories-options',
+                       'visualeditor-dialog-meta-categories-section',
+                       'visualeditor-dialog-meta-categories-sortkey-label',
+                       'visualeditor-dialog-meta-languages-code-label',
+                       'visualeditor-dialog-meta-languages-label',
+                       'visualeditor-dialog-meta-languages-link-label',
+                       'visualeditor-dialog-meta-languages-name-label',
+                       'visualeditor-dialog-meta-languages-readonlynote',
+                       'visualeditor-dialog-meta-languages-section',
+                       'visualeditor-dialog-meta-settings-displaytitle',
+                       'visualeditor-dialog-meta-settings-displaytitle-enable',
+                       'visualeditor-dialog-meta-settings-displaytitle-help',
+                       'visualeditor-dialog-meta-settings-hiddencat-help',
+                       'visualeditor-dialog-meta-settings-hiddencat-label',
+                       'visualeditor-dialog-meta-settings-index-default',
+                       'visualeditor-dialog-meta-settings-index-disable',
+                       'visualeditor-dialog-meta-settings-index-force',
+                       'visualeditor-dialog-meta-settings-index-help',
+                       'visualeditor-dialog-meta-settings-index-label',
+                       'visualeditor-dialog-meta-settings-label',
+                       
'visualeditor-dialog-meta-settings-newsectioneditlink-default',
+                       
'visualeditor-dialog-meta-settings-newsectioneditlink-disable',
+                       
'visualeditor-dialog-meta-settings-newsectioneditlink-force',
+                       
'visualeditor-dialog-meta-settings-newsectioneditlink-help',
+                       
'visualeditor-dialog-meta-settings-newsectioneditlink-label',
+                       
'visualeditor-dialog-meta-settings-nocontentconvert-help',
+                       
'visualeditor-dialog-meta-settings-nocontentconvert-label',
+                       'visualeditor-dialog-meta-settings-noeditsection-help',
+                       'visualeditor-dialog-meta-settings-noeditsection-label',
+                       'visualeditor-dialog-meta-settings-nogallery-help',
+                       'visualeditor-dialog-meta-settings-nogallery-label',
+                       'visualeditor-dialog-meta-settings-notitleconvert-help',
+                       
'visualeditor-dialog-meta-settings-notitleconvert-label',
+                       'visualeditor-dialog-meta-settings-redirect-help',
+                       'visualeditor-dialog-meta-settings-redirect-label',
+                       
'visualeditor-dialog-meta-settings-redirect-placeholder',
+                       'visualeditor-dialog-meta-settings-redirect-statichelp',
+                       
'visualeditor-dialog-meta-settings-redirect-staticlabel',
+                       'visualeditor-dialog-meta-settings-section',
+                       'visualeditor-dialog-meta-settings-toc-default',
+                       'visualeditor-dialog-meta-settings-toc-disable',
+                       'visualeditor-dialog-meta-settings-toc-force',
+                       'visualeditor-dialog-meta-settings-toc-help',
+                       'visualeditor-dialog-meta-settings-toc-label',
+                       'visualeditor-dialog-meta-title',
+                       'visualeditor-dialogbutton-meta-tooltip',
+                       'visualeditor-languages-tool',
+                       'visualeditor-meta-tool',
+                       'visualeditor-settings-tool',
+
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwreference.core' => $wgVisualEditorResourceTemplate 
+ array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/models/ve.dm.MWReferenceModel.js',
+
+                       'modules/ve-mw/dm/nodes/ve.dm.MWReferencesListNode.js',
+                       'modules/ve-mw/dm/nodes/ve.dm.MWReferenceNode.js',
+
+                       'modules/ve-mw/ce/nodes/ve.ce.MWReferencesListNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWReferenceNode.js',
+
+                       
'modules/ve-mw/ui/commands/ve.ui.MWReferencesListCommand.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ce/styles/nodes/ve.ce.MWReferencesListNode.css',
+                       
'modules/ve-mw/ce/styles/nodes/ve.ce.MWReferenceNode.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'messages' => array(
+                       'visualeditor-referenceslist-isempty',
+                       'visualeditor-referenceslist-isempty-default',
+                       'visualeditor-referenceslist-missingref',
+               ),
+               'targets' => array( 'desktop', 'mobile' )
+       ),
+
+       'ext.visualEditor.mwreference' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWReferenceResultWidget.js',
+
+                       
'modules/ve-mw/ui/commands/ve.ui.MWUseExistingReferenceCommand.js',
+
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWCitationDialog.js',
+                       
'modules/ve-mw/ui/dialogs/ve.ui.MWReferencesListDialog.js',
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWReferenceDialog.js',
+
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWReferenceSourceSelectWidget.js',
+
+                       'modules/ve-mw/ui/tools/ve.ui.MWReferenceDialogTool.js',
+                       'modules/ve-mw/ui/tools/ve.ui.MWCitationDialogTool.js',
+
+                       
'modules/ve-mw/ui/contextitems/ve.ui.MWReferenceContextItem.js',
+                       
'modules/ve-mw/ui/contextitems/ve.ui.MWReferencesListContextItem.js',
+                       
'modules/ve-mw/ui/contextitems/ve.ui.MWCitationContextItem.js',
+                       'modules/ve-mw/ui/actions/ve.ui.MWCitationAction.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWReferenceGroupInputWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWReferenceResultWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWReferenceSearchWidget.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwreference.core',
+                       'ext.visualEditor.mwtransclusion',
+                       'ext.visualEditor.mediawiki'
+               ),
+               'messages' => array(
+                       'visualeditor-dialog-reference-editing-reused',
+                       'visualeditor-dialog-reference-options-group-label',
+                       
'visualeditor-dialog-reference-options-group-placeholder',
+                       'visualeditor-dialog-reference-options-name-label',
+                       'visualeditor-dialog-reference-options-section',
+                       'visualeditor-dialog-reference-title',
+                       'visualeditor-dialog-reference-useexisting-full-label',
+                       'visualeditor-dialog-reference-useexisting-label',
+                       'visualeditor-dialog-reference-useexisting-tool',
+                       
'visualeditor-dialog-referenceslist-contextitem-description-general',
+                       
'visualeditor-dialog-referenceslist-contextitem-description-named',
+                       'visualeditor-dialog-referenceslist-title',
+                       'visualeditor-dialogbutton-reference-full-label',
+                       'visualeditor-dialogbutton-reference-tooltip',
+                       'visualeditor-dialogbutton-referenceslist-tooltip',
+                       'visualeditor-reference-input-placeholder',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwtransclusion.core' => 
$wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js',
+
+                       'modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ce/styles/nodes/ve.ce.MWTransclusionNode.css'
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwtransclusion' => $wgVisualEditorResourceTemplate + 
array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js',
+                       
'modules/ve-mw/dm/models/ve.dm.MWTransclusionPartModel.js',
+                       
'modules/ve-mw/dm/models/ve.dm.MWTransclusionContentModel.js',
+                       'modules/ve-mw/dm/models/ve.dm.MWTemplateSpecModel.js',
+                       'modules/ve-mw/dm/models/ve.dm.MWTemplateModel.js',
+                       
'modules/ve-mw/dm/models/ve.dm.MWTemplatePlaceholderModel.js',
+                       'modules/ve-mw/dm/models/ve.dm.MWParameterModel.js',
+
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWParameterSearchWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWParameterResultWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWMoreParametersResultWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWNoParametersResultWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWTemplateMenuOptionWidget.js',
+                       
'modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js',
+
+                       'modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js',
+                       'modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js',
+                       
'modules/ve-mw/ui/pages/ve.ui.MWParameterPlaceholderPage.js',
+                       
'modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js',
+                       
'modules/ve-mw/ui/pages/ve.ui.MWTransclusionContentPage.js',
+
+                       
'modules/ve-mw/ui/dialogs/ve.ui.MWRequiredParamBlankConfirmDialog.js',
+                       'modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js',
+                       
'modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js',
+
+                       
'modules/ve-mw/ui/tools/ve.ui.MWTransclusionDialogTool.js',
+
+                       
'modules/ve-mw/ui/contextitems/ve.ui.MWTransclusionContextItem.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWParameterResultWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWMoreParametersResultWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWNoParametersResultWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWParameterSearchWidget.css',
+                       
'modules/ve-mw/ui/styles/widgets/ve.ui.MWTemplateMenuOptionWidget.css',
+                       
'modules/ve-mw/ui/styles/pages/ve.ui.MWTransclusionContentPage.css',
+                       
'modules/ve-mw/ui/styles/dialogs/ve.ui.MWTransclusionDialog.css',
+               ),
+               'skinStyles' => array(
+                       'default' => array(
+                               
'modules/ve-mw/ui/themes/apex/pages/ve.ui.MWParameterPage.css',
+                               
'modules/ve-mw/ui/themes/apex/pages/ve.ui.MWTemplatePage.css',
+                       ),
+                       'minerva' => array(
+                               
'modules/ve-mw/ui/themes/minerva/pages/ve.ui.MWParameterPage.css',
+                               
'modules/ve-mw/ui/themes/minerva/ve.ui.MobileWindowManager.css',
+                       ),
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwtransclusion.core',
+                       'mediawiki.jqueryMsg',
+                       'mediawiki.language',
+               ),
+               'messages' => array(
+                       'quotation-marks',
+                       'visualeditor-dialog-template-title',
+                       'visualeditor-dialog-transclusion-add-content',
+                       'visualeditor-dialog-transclusion-add-param',
+                       'visualeditor-dialog-transclusion-add-template',
+                       'visualeditor-dialog-transclusion-content',
+                       
'visualeditor-dialog-transclusion-contextitem-description',
+                       'visualeditor-dialog-transclusion-deprecated-parameter',
+                       
'visualeditor-dialog-transclusion-deprecated-parameter-description',
+                       'visualeditor-dialog-transclusion-loading',
+                       'visualeditor-dialog-transclusion-multiple-mode',
+                       
'visualeditor-dialog-transclusion-no-template-description',
+                       'visualeditor-dialog-transclusion-options',
+                       'visualeditor-dialog-transclusion-param-default',
+                       'visualeditor-dialog-transclusion-param-example',
+                       'visualeditor-dialog-transclusion-param-info',
+                       'visualeditor-dialog-transclusion-param-info-missing',
+                       'visualeditor-dialog-transclusion-placeholder',
+                       'visualeditor-dialog-transclusion-remove-content',
+                       'visualeditor-dialog-transclusion-remove-param',
+                       'visualeditor-dialog-transclusion-remove-template',
+                       'visualeditor-dialog-transclusion-required-parameter',
+                       
'visualeditor-dialog-transclusion-required-parameter-description',
+                       
'visualeditor-dialog-transclusion-required-parameter-dialog-cancel',
+                       
'visualeditor-dialog-transclusion-required-parameter-dialog-ok',
+                       
'visualeditor-dialog-transclusion-required-parameter-dialog-title',
+                       
'visualeditor-dialog-transclusion-required-parameter-is-blank',
+                       'visualeditor-dialog-transclusion-single-mode',
+                       'visualeditor-dialog-transclusion-title',
+                       'visualeditor-dialog-transclusion-wikitext-label',
+                       'visualeditor-dialogbutton-template-tooltip',
+                       'visualeditor-dialogbutton-transclusion-tooltip',
+                       'visualeditor-parameter-input-placeholder',
+                       'visualeditor-parameter-search-more',
+                       'visualeditor-parameter-search-no-unused',
+                       'visualeditor-parameter-search-unknown',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.language' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'lib/ve/src/dm/annotations/ve.dm.LanguageAnnotation.js',
+                       'lib/ve/src/ce/annotations/ve.ce.LanguageAnnotation.js',
+                       'lib/ve/src/ui/widgets/ve.ui.LanguageResultWidget.js',
+                       'lib/ve/src/ui/widgets/ve.ui.LanguageSearchWidget.js',
+                       'lib/ve/src/ui/dialogs/ve.ui.LanguageSearchDialog.js',
+                       'lib/ve/src/ui/inspectors/ve.ui.LanguageInspector.js',
+                       'lib/ve/src/ui/tools/ve.ui.LanguageInspectorTool.js',
+                       'lib/ve/src/ui/widgets/ve.ui.LanguageInputWidget.js',
+               ),
+               'styles' => array(
+                       
'lib/ve/src/ui/styles/widgets/ve.ui.LanguageInputWidget.css',
+                       
'lib/ve/src/ui/styles/widgets/ve.ui.LanguageSearchWidget.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.core',
+                       'mediawiki.language.names',
+               ),
+               'messages' => array(
+                       'visualeditor-annotationbutton-language-tooltip',
+                       'visualeditor-dialog-language-auto-direction',
+                       'visualeditor-dialog-language-search-title',
+                       'visualeditor-language-search-input-placeholder',
+                       'visualeditor-languageannotation-description',
+                       'visualeditor-languageannotation-description-with-dir',
+                       'visualeditor-languageinspector-title',
+                       'visualeditor-languageinspector-widget-changelang',
+                       'visualeditor-languageinspector-widget-label-direction',
+                       'visualeditor-languageinspector-widget-label-langcode',
+                       'visualeditor-languageinspector-widget-label-language',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwalienextension' => $wgVisualEditorResourceTemplate 
+ array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWAlienExtensionNode.js',
+                       
'modules/ve-mw/ui/inspectors/ve.ui.MWAlienExtensionInspector.js',
+                       
'modules/ve-mw/ui/contextitems/ve.ui.MWAlienExtensionContextItem.js',
+               ),
+               'styles' => array(
+                       
'modules/ve-mw/ui/styles/inspectors/ve.ui.MWAlienExtensionInspector.css',
+                       
'modules/ve-mw/ce/styles/nodes/ve.ce.MWAlienExtensionNode.css',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.mwgallery' => $wgVisualEditorResourceTemplate + array(
+               'scripts' => array(
+                       'modules/ve-mw/dm/nodes/ve.dm.MWGalleryNode.js',
+                       'modules/ve-mw/ce/nodes/ve.ce.MWGalleryNode.js',
+                       
'modules/ve-mw/ui/inspectors/ve.ui.MWGalleryInspector.js',
+                       
'modules/ve-mw/ui/tools/ve.ui.MWGalleryInspectorTool.js',
+               ),
+               'dependencies' => array(
+                       'ext.visualEditor.mwcore',
+               ),
+               'messages' => array(
+                       'visualeditor-mwgalleryinspector-placeholder',
+                       'visualeditor-mwgalleryinspector-title',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.experimental' => array(
+               'dependencies' => array(
+                       'ext.visualEditor.language',
+                       'ext.visualEditor.mwalienextension',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       'ext.visualEditor.icons' => $wgVisualEditorResourceTemplate + array(
+               'styles' => array(
+                       'modules/ve-mw/ui/styles/ve.ui.Icons.css',
+               ),
+               'dependencies' => array(
+                       'oojs-ui.styles.icons-editing-advanced',
+                       'oojs-ui.styles.icons-editing-core',
+                       'oojs-ui.styles.icons-editing-styling',
+                       'oojs-ui.styles.icons-editing-list',
+                       'oojs-ui.styles.indicators',
+                       'oojs-ui.styles.textures',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+);
+
+/* Extend MediaWiki configuration */
+
+// Set default values for new preferences
+$wgDefaultUserOptions['visualeditor-enable'] = 0;
+$wgDefaultUserOptions['visualeditor-betatempdisable'] = 0;
+$wgDefaultUserOptions['visualeditor-enable-experimental'] = 0;
+$wgDefaultUserOptions['visualeditor-enable-language'] = 0;
+$wgDefaultUserOptions['visualeditor-hidebetawelcome'] = 0;
+
+/* Configuration */
+
+// Array of ResourceLoader module names (strings) that should be loaded when 
VisualEditor is
+// loaded. Other extensions that extend VisualEditor should add to this array.
+//
+// WARNING: When removing a module, first remove it from this array, wait for 
the change
+// to propagate, and only then remove the module code and module registration. 
Otherwise
+// there may be a period of time during which VisualEditor depends on a module 
that no
+// longer exists.
+$wgVisualEditorPluginModules = array();
+
+// Array of modules to load based on a preference. Keys are preference names, 
values are
+// ResourceLoader module names.
+// Remember to also set defaults in $wgDefaultUserOptions!
+$wgVisualEditorPreferenceModules = array(
+       'visualeditor-enable-experimental' => 'ext.visualEditor.experimental',
+       //'visualeditor-enable-mwalienextension' => 
'ext.visualEditor.mwalienextension',
+);
+
+// URL to the Parsoid instance
+// MUST NOT end in a slash due to Parsoid bug
+$wgVisualEditorParsoidURL = 'http://localhost:8000';
+
+// Proxy to use for curl requests.
+// false: use direct connection to Parsoid daemon ($wgHTTPProxy is not used
+// either)
+$wgVisualEditorParsoidHTTPProxy = false;
+
+// Interwiki prefix to pass to the Parsoid instance
+// Parsoid will be called as $url/$prefix/$pagename
+$wgVisualEditorParsoidPrefix = 'localhost';
+
+// Forward users' Cookie: headers to Parsoid. Required for private wikis 
(login required to read).
+// If the wiki is not private (i.e. $wgGroupPermissions['*']['read'] is true) 
this configuration
+// variable will be ignored.
+//
+// This feature requires a non-locking session store. The default session 
store will not work and
+// will cause deadlocks when trying to use this feature. If you experience 
deadlock issues, enable
+// $wgSessionsInObjectCache.
+//
+// WARNING: ONLY enable this on private wikis and ONLY IF you understand the 
SECURITY IMPLICATIONS
+// of sending Cookie headers to Parsoid over HTTP. For security reasons, it is 
strongly recommended
+// that $wgVisualEditorParsoidURL be pointed to localhost if this setting is 
enabled.
+$wgVisualEditorParsoidForwardCookies = false;
+
+// Timeout for HTTP requests to Parsoid in seconds
+$wgVisualEditorParsoidTimeout = 100;
+
+// Serialization cache timeout, in seconds
+$wgVisualEditorSerializationCacheTimeout = 3600;
+
+// URL to RESTbase. The page name will be appended directly to this value, so 
this needs to be set
+// to something like 
'https://rest.wikimedia.org/en.wikipedia.org/v1/page/html/' including the
+// trailing slash.
+//
+// If this is set, the page HTML will be requested from RESTbase. If this is 
not set, the page HTML
+// will be requested from the API, which will send an HTTP request to Parsoid 
or to RESTbase
+// if available.
+$wgVisualEditorRestbaseURL = false;
+
+// Namespaces to enable VisualEditor in
+$wgVisualEditorNamespaces = array_merge( $wgContentNamespaces, array( NS_USER 
) );
+
+// Whether to enable the (experimental for now) TOC widget
+$wgVisualEditorEnableTocWidget = false;
+
+// List of skins VisualEditor integration supports
+$wgVisualEditorSupportedSkins = array( 'vector', 'apex', 'monobook', 
'minerva', 'blueprint' );
+
+// List of browsers VisualEditor is incompatibe with
+// See jQuery.client for specification
+$wgVisualEditorBrowserBlacklist = array(
+       // IE <= 8 has various incompatibilities in layout and feature support
+       // IE10 and 11 have problems but mostly work OK-ish so they're 
greylisted; IE9 to come
+       'msie' => array ( array( '<=', 9 ) ),
+       // Android 2.x and below "support" CE but don't trigger keyboard input
+       'android' => array( array( '<', 3 ) ),
+       // Firefox issues in versions 12 and below (bug 50780)
+       // Wikilink [[./]] bug in Firefox 14 and below (bug 50720)
+       'firefox' => array( array( '<=', 14 ) ),
+       // Safari corruption issues from various old browser plugins
+       'safari' => array( array( '<=', 6 ) ),
+       // Opera < 12 was not tested and it's userbase is almost nonexistent 
anyway
+       'opera' => array( array( '<', 12 ) ),
+       // Blacklist all versions:
+       'blackberry' => null,
+       'silk' => null,
+);
+
+// Whether to use change tagging for VisualEditor edits
+$wgVisualEditorUseChangeTagging = true;
+
+// Whether to disable for logged-in users
+// This allows you to enable the 'visualeditor-enable' preference by default
+// but still disable VE for logged-out users (by setting this to false).
+$wgVisualEditorDisableForAnons = false;
+
+// Whether to show the "welcome to the beta" dialog the first time a user uses 
VisualEditor
+$wgVisualEditorShowBetaWelcome = false;
+
+// Where to put the VisualEditor edit tab
+// 'before': put it right before the old edit tab
+// 'after': put it right after the old edit tab
+$wgVisualEditorTabPosition = 'before';
+
+$wgVisualEditorTabMessages = array(
+       // i18n message key to use for the VisualEditor edit tab
+       // If null, the default edit tab caption will be used
+       // The 'visualeditor-ca-ve-edit' message is available for this
+       'edit' => null,
+       // i18n message key to use for the old edit tab
+       // If null, the tab's caption will not be changed
+       'editsource' => 'visualeditor-ca-editsource',
+       // i18n message key to use for the VisualEditor create tab
+       // If null, the default create tab caption will be used
+       // The 'visualeditor-ca-ve-create' message is available for this
+       'create' => null,
+       // i18n message key to use for the old create tab
+       // If null, the tab's caption will not be changed
+       'createsource' => 'visualeditor-ca-createsource',
+       // i18n message key to use for the old create tab on pages for files in 
foreign repos
+       // If null, the tab's caption will not be changed
+       'editlocaldescriptionsource' => 
'visualeditor-ca-editlocaldescriptionsource',
+       // i18n message key to use for the old edit tab on pages for files in 
foreign repos
+       // If null, the tab's caption will not be changed
+       'createlocaldescriptionsource' => 
'visualeditor-ca-createlocaldescriptionsource',
+       // i18n message key to use for the VisualEditor section edit link
+       // If null, the default edit section link caption will be used
+       'editsection' => null,
+       // i18n message key to use for the source section edit link
+       // If null, the link's caption will not be changed
+       'editsectionsource' => 'visualeditor-ca-editsource-section',
+
+       // i18n message key for an optional appendix to add to each of these 
from JS
+       // Use this if you have HTML messages to add
+       // The 'visualeditor-beta-appendix' message is available for this 
purpose
+       'editappendix' => null,
+       'editsourceappendix' => null,
+       'createappendix' => null,
+       'createsourceappendix' => null,
+       'editsectionappendix' => null,
+       'editsectionsourceappendix' => null,
+);
+
+// Whether to enable VisualEditor for half of all new accounts (userID even).
+$wgVisualEditorEnableSplitTest = false;
+
+unset( $wgVisualEditorResourceTemplate );
diff --git a/extension.json b/extension.json
index 0e6c01f..912e825 100644
--- a/extension.json
+++ b/extension.json
@@ -21,19 +21,83 @@
        "descriptionmsg": "visualeditor-desc",
        "license-name": "MIT",
        "type": "other",
-       "DefaultUserOptions": {
-               "visualeditor-enable": 0,
-               "visualeditor-betatempdisable": 0,
-               "visualeditor-enable-experimental": 0,
-               "visualeditor-enable-language": 0,
-               "visualeditor-hidebetawelcome": 0
+       "config": {
+               "VisualEditorPreferenceModules": {
+                       "visualeditor-enable-experimental": 
"ext.visualEditor.experimental"
+               },
+               "VisualEditorRestbaseURL": false,
+               "VisualEditorSerializationCacheTimeout": 3600,
+               "VisualEditorUseChangeTagging": true,
+               "VisualEditorSupportedSkins": [
+                       "vector",
+                       "apex",
+                       "monobook",
+                       "minerva",
+                       "blueprint"
+               ],
+               "VisualEditorParsoidPrefix": "localhost",
+               "VisualEditorDisableForAnons": false,
+               "VisualEditorPluginModules": [],
+               "VisualEditorParsoidForwardCookies": false,
+               "VisualEditorTabMessages": {
+                       "edit": null,
+                       "editsource": "visualeditor-ca-editsource",
+                       "create": null,
+                       "createsource": "visualeditor-ca-createsource",
+                       "editlocaldescriptionsource": 
"visualeditor-ca-editlocaldescriptionsource",
+                       "createlocaldescriptionsource": 
"visualeditor-ca-createlocaldescriptionsource",
+                       "editsection": null,
+                       "editsectionsource": 
"visualeditor-ca-editsource-section",
+                       "editappendix": null,
+                       "editsourceappendix": null,
+                       "createappendix": null,
+                       "createsourceappendix": null,
+                       "editsectionappendix": null,
+                       "editsectionsourceappendix": null
+               },
+               "VisualEditorShowBetaWelcome": false,
+               "VisualEditorParsoidHTTPProxy": false,
+               "VisualEditorBrowserBlacklist": {
+                       "msie": [
+                               [
+                                       "<=",
+                                       9
+                               ]
+                       ],
+                       "android": [
+                               [
+                                       "<",
+                                       3
+                               ]
+                       ],
+                       "firefox": [
+                               [
+                                       "<=",
+                                       14
+                               ]
+                       ],
+                       "safari": [
+                               [
+                                       "<=",
+                                       6
+                               ]
+                       ],
+                       "opera": [
+                               [
+                                       "<",
+                                       12
+                               ]
+                       ],
+                       "blackberry": null,
+                       "silk": null
+               },
+               "VisualEditorTabPosition": "before",
+               "VisualEditorParsoidURL": "http://localhost:8000";,
+               "VisualEditorEnableSplitTest": false,
+               "VisualEditorEnableTocWidget": false,
+               "VisualEditorNamespaces": [],
+               "VisualEditorParsoidTimeout": 100
        },
-       "ConfigRegistry": {
-               "visualeditor": "GlobalVarConfig::newInstance"
-       },
-       "ExtensionFunctions": [
-               "VisualEditorHooks::onSetup"
-       ],
        "APIModules": {
                "visualeditor": {
                        "class": "ApiVisualEditor",
@@ -51,12 +115,61 @@
                        "modules/ve-wmf/i18n"
                ]
        },
-       "AutoloadClasses": {
-               "ApiVisualEditor": "ApiVisualEditor.php",
-               "ApiVisualEditorEdit": "ApiVisualEditorEdit.php",
-               "VisualEditorHooks": "VisualEditor.hooks.php",
-               "VisualEditorDataModule": "VisualEditorDataModule.php",
-               "VisualEditorViewPageTargetInitModule": 
"VisualEditorViewPageTargetInitModule.php"
+       "Hooks": {
+               "BeforePageDisplay": [
+                       "VisualEditorHooks::onBeforePageDisplay"
+               ],
+               "ContentHandlerDefaultModelFor": [
+                       "VisualEditorHooks::onContentHandlerDefaultModelFor"
+               ],
+               "SkinEditSectionLinks": [
+                       "VisualEditorHooks::onSkinEditSectionLinks"
+               ],
+               "GetBetaFeaturePreferences": [
+                       "VisualEditorHooks::onGetBetaPreferences"
+               ],
+               "GetPreferences": [
+                       "VisualEditorHooks::onGetPreferences"
+               ],
+               "ListDefinedTags": [
+                       "VisualEditorHooks::onListDefinedTags"
+               ],
+               "ChangeTagsListActive": [
+                       "VisualEditorHooks::onListDefinedTags"
+               ],
+               "MakeGlobalVariablesScript": [
+                       "VisualEditorHooks::onMakeGlobalVariablesScript"
+               ],
+               "RedirectSpecialArticleRedirectParams": [
+                       
"VisualEditorHooks::onRedirectSpecialArticleRedirectParams"
+               ],
+               "ResourceLoaderGetConfigVars": [
+                       "VisualEditorHooks::onResourceLoaderGetConfigVars"
+               ],
+               "ResourceLoaderRegisterModules": [
+                       "VisualEditorHooks::onResourceLoaderRegisterModules"
+               ],
+               "ResourceLoaderTestModules": [
+                       "VisualEditorHooks::onResourceLoaderTestModules"
+               ],
+               "SkinTemplateNavigation": [
+                       "VisualEditorHooks::onSkinTemplateNavigation"
+               ],
+               "ParserTestGlobals": [
+                       "VisualEditorHooks::onParserTestGlobals"
+               ],
+               "EditPage::showEditForm:fields": [
+                       "VisualEditorHooks::onEditPageShowEditFormFields"
+               ],
+               "RecentChange_save": [
+                       "VisualEditorHooks::onRecentChange_save"
+               ],
+               "BeforeInitialize": [
+                       "VisualEditorHooks::onBeforeInitialize"
+               ],
+               "AddNewAccount": [
+                       "VisualEditorHooks::onAddNewAccount"
+               ]
        },
        "ResourceModules": {
                "Base64.js": {
@@ -253,6 +366,7 @@
                        "dependencies": [
                                "oojs",
                                "oojs-ui",
+                               "oojs-ui.styles.icons-editing-core",
                                "unicodejs",
                                "ext.visualEditor.ve"
                        ],
@@ -1466,9 +1580,7 @@
                                "oojs-ui.styles.icons-editing-advanced",
                                "oojs-ui.styles.icons-editing-core",
                                "oojs-ui.styles.icons-editing-styling",
-                               "oojs-ui.styles.icons-editing-list",
-                               "oojs-ui.styles.indicators",
-                               "oojs-ui.styles.textures"
+                               "oojs-ui.styles.icons-editing-list"
                        ],
                        "targets": [
                                "desktop",
@@ -1480,137 +1592,24 @@
                "localBasePath": "",
                "remoteExtPath": "VisualEditor"
        },
-       "Hooks": {
-               "BeforePageDisplay": [
-                       "VisualEditorHooks::onBeforePageDisplay"
-               ],
-               "ContentHandlerDefaultModelFor": [
-                       "VisualEditorHooks::onContentHandlerDefaultModelFor"
-               ],
-               "SkinEditSectionLinks": [
-                       "VisualEditorHooks::onSkinEditSectionLinks"
-               ],
-               "GetBetaFeaturePreferences": [
-                       "VisualEditorHooks::onGetBetaPreferences"
-               ],
-               "GetPreferences": [
-                       "VisualEditorHooks::onGetPreferences"
-               ],
-               "ListDefinedTags": [
-                       "VisualEditorHooks::onListDefinedTags"
-               ],
-               "ChangeTagsListActive": [
-                       "VisualEditorHooks::onListDefinedTags"
-               ],
-               "MakeGlobalVariablesScript": [
-                       "VisualEditorHooks::onMakeGlobalVariablesScript"
-               ],
-               "RedirectSpecialArticleRedirectParams": [
-                       
"VisualEditorHooks::onRedirectSpecialArticleRedirectParams"
-               ],
-               "ResourceLoaderGetConfigVars": [
-                       "VisualEditorHooks::onResourceLoaderGetConfigVars"
-               ],
-               "ResourceLoaderRegisterModules": [
-                       "VisualEditorHooks::onResourceLoaderRegisterModules"
-               ],
-               "ResourceLoaderTestModules": [
-                       "VisualEditorHooks::onResourceLoaderTestModules"
-               ],
-               "SkinTemplateNavigation": [
-                       "VisualEditorHooks::onSkinTemplateNavigation"
-               ],
-               "ParserTestGlobals": [
-                       "VisualEditorHooks::onParserTestGlobals"
-               ],
-               "EditPage::showEditForm:fields": [
-                       "VisualEditorHooks::onEditPageShowEditFormFields"
-               ],
-               "RecentChange_save": [
-                       "VisualEditorHooks::onRecentChange_save"
-               ],
-               "BeforeInitialize": [
-                       "VisualEditorHooks::onBeforeInitialize"
-               ],
-               "AddNewAccount": [
-                       "VisualEditorHooks::onAddNewAccount"
-               ]
+       "DefaultUserOptions": {
+               "visualeditor-enable": 0,
+               "visualeditor-betatempdisable": 0,
+               "visualeditor-enable-experimental": 0,
+               "visualeditor-enable-language": 0,
+               "visualeditor-hidebetawelcome": 0
        },
-       "config": {
-               "VisualEditorPluginModules": [],
-               "VisualEditorPreferenceModules": {
-                       "visualeditor-enable-experimental": 
"ext.visualEditor.experimental"
-               },
-               "VisualEditorParsoidURL": "http://localhost:8000";,
-               "VisualEditorParsoidHTTPProxy": false,
-               "VisualEditorParsoidPrefix": "localhost",
-               "VisualEditorParsoidForwardCookies": false,
-               "VisualEditorParsoidTimeout": 100,
-               "VisualEditorSerializationCacheTimeout": 3600,
-               "VisualEditorRestbaseURL": false,
-               "VisualEditorNamespaces": [],
-               "VisualEditorEnableTocWidget": false,
-               "VisualEditorSupportedSkins": [
-                       "vector",
-                       "apex",
-                       "monobook",
-                       "minerva",
-                       "blueprint"
-               ],
-               "VisualEditorBrowserBlacklist": {
-                       "msie": [
-                               [
-                                       "<=",
-                                       9
-                               ]
-                       ],
-                       "android": [
-                               [
-                                       "<",
-                                       3
-                               ]
-                       ],
-                       "firefox": [
-                               [
-                                       "<=",
-                                       14
-                               ]
-                       ],
-                       "safari": [
-                               [
-                                       "<=",
-                                       6
-                               ]
-                       ],
-                       "opera": [
-                               [
-                                       "<",
-                                       12
-                               ]
-                       ],
-                       "blackberry": null,
-                       "silk": null
-               },
-               "VisualEditorUseChangeTagging": true,
-               "VisualEditorDisableForAnons": false,
-               "VisualEditorShowBetaWelcome": false,
-               "VisualEditorTabPosition": "before",
-               "VisualEditorTabMessages": {
-                       "edit": null,
-                       "editsource": "visualeditor-ca-editsource",
-                       "create": null,
-                       "createsource": "visualeditor-ca-createsource",
-                       "editlocaldescriptionsource": 
"visualeditor-ca-editlocaldescriptionsource",
-                       "createlocaldescriptionsource": 
"visualeditor-ca-createlocaldescriptionsource",
-                       "editsection": null,
-                       "editsectionsource": 
"visualeditor-ca-editsource-section",
-                       "editappendix": null,
-                       "editsourceappendix": null,
-                       "createappendix": null,
-                       "createsourceappendix": null,
-                       "editsectionappendix": null,
-                       "editsectionsourceappendix": null
-               },
-               "VisualEditorEnableSplitTest": false
+       "ExtensionFunctions": [
+               "VisualEditorHooks::onSetup"
+       ],
+       "AutoloadClasses": {
+               "ApiVisualEditor": "ApiVisualEditor.php",
+               "ApiVisualEditorEdit": "ApiVisualEditorEdit.php",
+               "VisualEditorHooks": "VisualEditor.hooks.php",
+               "VisualEditorDataModule": "VisualEditorDataModule.php",
+               "VisualEditorViewPageTargetInitModule": 
"VisualEditorViewPageTargetInitModule.php"
+       },
+       "ConfigRegistry": {
+               "visualeditor": "GlobalVarConfig::newInstance"
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/215062
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4b1ce4deda58235cd13b5f63ac6220b8b566dfcc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to