Merge "(bug 26909) follow up r102947: fix the navigation with 'dir' and 'continue...
[lhc/web/wiklou.git] / resources / Resources.php
index f2692dc..2855f9a 100644 (file)
@@ -2,60 +2,81 @@
 
 return array(
 
-       /* Special resources who have their own classes */
+       /* Special modules who have their own classes */
 
+       // Scripts managed by the local wiki (stored in the MediaWiki namespace)
        'site' => array( 'class' => 'ResourceLoaderSiteModule' ),
        'noscript' => array( 'class' => 'ResourceLoaderNoscriptModule' ),
        'startup' => array( 'class' => 'ResourceLoaderStartUpModule' ),
-       'user' => array( 'class' => 'ResourceLoaderUserModule' ),
+       'filepage' => array( 'class' => 'ResourceLoaderFilePageModule' ),
        'user.groups' => array( 'class' => 'ResourceLoaderUserGroupsModule' ),
+
+       // Scripts managed by the current user (stored in their user space)
+       'user' => array( 'class' => 'ResourceLoaderUserModule' ),
+
+       // Scripts generated based on the current user's preferences
+       'user.cssprefs' => array( 'class' => 'ResourceLoaderUserCSSPrefsModule' ),
+
+       // Populate mediawiki.user placeholders with information about the current user
        'user.options' => array( 'class' => 'ResourceLoaderUserOptionsModule' ),
        'user.tokens' => array( 'class' => 'ResourceLoaderUserTokensModule' ),
-       'filepage' => array( 'class' => 'ResourceLoaderFilePageModule' ),
+
+       // Scripts for the dynamic language specific data, like grammar forms.
+       'mediawiki.language.data' => array( 'class' => 'ResourceLoaderLanguageDataModule' ),
 
        /* Skins */
 
-       'skins.vector' => array(
-               'styles' => array( 'vector/screen.css' => array( 'media' => 'screen' ) ),
-               'scripts' => 'vector/vector.js',
+       'skins.chick' => array(
+               'styles' => array( 'chick/main.css' => array( 'media' => 'screen, handheld' ) ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.monobook' => array(
-               'styles' => array(
-                       'monobook/main.css' => array( 'media' => 'screen' ),
-               ),
+       'skins.cologneblue' => array(
+               'styles' => array( 'cologneblue/screen.css' => array( 'media' => 'screen' ) ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.simple' => array(
-               'styles' => array( 'simple/main.css' => array( 'media' => 'screen' ) ),
+       'skins.modern' => array(
+               'styles' => array(
+                       'modern/main.css' => array( 'media' => 'screen' ),
+                       'modern/print.css' => array( 'media' => 'print' ),
+               ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.chick' => array(
-               'styles' => array( 'chick/main.css' => array( 'media' => 'screen,handheld' ) ),
+       'skins.monobook' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+                       'common/commonInterface.css' => array( 'media' => 'screen' ),
+                       'monobook/main.css' => array( 'media' => 'screen' ),
+               ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.modern' => array(
-               'styles' => array( 'modern/main.css' => array( 'media' => 'screen' ),
-                               'modern/print.css' => array( 'media' => 'print' ) ),
+       'skins.nostalgia' => array(
+               'styles' => array( 'nostalgia/screen.css' => array( 'media' => 'screen' ) ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.cologneblue' => array(
-               'styles' => array( 'cologneblue/screen.css' => array( 'media' => 'screen' ) ),
+       'skins.simple' => array(
+               'styles' => array( 'simple/main.css' => array( 'media' => 'screen' ) ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.nostalgia' => array(
-               'styles' => array( 'nostalgia/screen.css' => array( 'media' => 'screen' ) ),
+       'skins.standard' => array(
+               'styles' => array( 'standard/main.css' => array( 'media' => 'screen' ) ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.standard' => array(
-               'styles' => array( 'common/wikistandard.css' => array( 'media' => 'screen' ) ),
+       'skins.vector' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+                       'common/commonInterface.css' => array( 'media' => 'screen' ),
+                       'vector/screen.css' => array( 'media' => 'screen' ),
+               ),
+               'scripts' => 'vector/vector.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
@@ -64,17 +85,21 @@ return array(
 
        'jquery' => array(
                'scripts' => 'resources/jquery/jquery.js',
-               'debugRaw' => false
+               'debugRaw' => false,
        ),
 
        /* jQuery Plugins */
 
-       'jquery.async' => array(
-               'scripts' => 'resources/jquery/jquery.async.js',
-       ),
        'jquery.appear' => array(
                'scripts' => 'resources/jquery/jquery.appear.js',
        ),
+       'jquery.arrowSteps' => array(
+               'scripts' => 'resources/jquery/jquery.arrowSteps.js',
+               'styles' => 'resources/jquery/jquery.arrowSteps.css',
+       ),
+       'jquery.async' => array(
+               'scripts' => 'resources/jquery/jquery.async.js',
+       ),
        'jquery.autoEllipsis' => array(
                'scripts' => 'resources/jquery/jquery.autoEllipsis.js',
                'dependencies' => 'jquery.highlightText',
@@ -95,13 +120,13 @@ return array(
        'jquery.collapsibleTabs' => array(
                'scripts' => 'resources/jquery/jquery.collapsibleTabs.js',
        ),
-       'jquery.colorUtil' => array(
-               'scripts' => 'resources/jquery/jquery.colorUtil.js',
-       ),
        'jquery.color' => array(
                'scripts' => 'resources/jquery/jquery.color.js',
                'dependencies' => 'jquery.colorUtil',
        ),
+       'jquery.colorUtil' => array(
+               'scripts' => 'resources/jquery/jquery.colorUtil.js',
+       ),
        'jquery.cookie' => array(
                'scripts' => 'resources/jquery/jquery.cookie.js',
        ),
@@ -110,23 +135,29 @@ return array(
        ),
        'jquery.expandableField' => array(
                'scripts' => 'resources/jquery/jquery.expandableField.js',
+               'dependencies' => 'jquery.delayedBind',
+       ),
+       'jquery.farbtastic' => array(
+               'scripts' => 'resources/jquery/jquery.farbtastic.js',
+               'styles' => 'resources/jquery/jquery.farbtastic.css',
+               'dependencies' => 'jquery.colorUtil',
+       ),
+       'jquery.footHovzer' => array(
+               'scripts' => 'resources/jquery/jquery.footHovzer.js',
+               'styles' => 'resources/jquery/jquery.footHovzer.css',
        ),
        'jquery.form' => array(
                'scripts' => 'resources/jquery/jquery.form.js',
        ),
+       'jquery.getAttrs' => array(
+               'scripts' => 'resources/jquery/jquery.getAttrs.js',
+       ),
        'jquery.highlightText' => array(
                'scripts' => 'resources/jquery/jquery.highlightText.js',
        ),
        'jquery.hoverIntent' => array(
                'scripts' => 'resources/jquery/jquery.hoverIntent.js',
        ),
-       'jquery.messageBox' => array(
-               'scripts' => 'resources/jquery/jquery.messageBox.js',
-               'styles' => 'resources/jquery/jquery.messageBox.css',
-       ),
-       'jquery.placeholder' => array(
-               'scripts' => 'resources/jquery/jquery.placeholder.js',
-       ),
        'jquery.json' => array(
                'scripts' => 'resources/jquery/jquery.json.js',
        ),
@@ -138,12 +169,34 @@ return array(
                'styles' => 'resources/jquery/jquery.makeCollapsible.css',
                'messages' => array( 'collapsible-expand', 'collapsible-collapse' ),
        ),
-       'jquery.mwPrototypes' => array(
-               'scripts' => 'resources/jquery/jquery.mwPrototypes.js',
+       'jquery.messageBox' => array(
+               'scripts' => 'resources/jquery/jquery.messageBox.js',
+               'styles' => 'resources/jquery/jquery.messageBox.css',
+       ),
+       'jquery.mockjax' => array(
+               'scripts' => 'resources/jquery/jquery.mockjax.js',
+       ),
+       'jquery.mw-jump' => array(
+               'scripts' => 'resources/jquery/jquery.mw-jump.js',
+       ),
+       'jquery.mwExtension' => array(
+               'scripts' => 'resources/jquery/jquery.mwExtension.js',
+       ),
+       'jquery.placeholder' => array(
+               'scripts' => 'resources/jquery/jquery.placeholder.js',
        ),
        'jquery.qunit' => array(
                'scripts' => 'resources/jquery/jquery.qunit.js',
                'styles' => 'resources/jquery/jquery.qunit.css',
+               'position' => 'top',
+       ),
+       'jquery.qunit.completenessTest' => array(
+               'scripts' => 'resources/jquery/jquery.qunit.completenessTest.js',
+               'dependencies' => 'jquery.qunit',
+       ),
+       'jquery.spinner' => array(
+               'scripts' => 'resources/jquery/jquery.spinner.js',
+               'styles' => 'resources/jquery/jquery.spinner.css',
        ),
        'jquery.suggestions' => array(
                'scripts' => 'resources/jquery/jquery.suggestions.js',
@@ -155,11 +208,22 @@ return array(
        ),
        'jquery.tablesorter' => array(
                'scripts' => 'resources/jquery/jquery.tablesorter.js',
+               'styles' => 'resources/jquery/jquery.tablesorter.css',
                'messages' => array( 'sort-descending', 'sort-ascending' ),
        ),
        'jquery.textSelection' => array(
                'scripts' => 'resources/jquery/jquery.textSelection.js',
+               'dependencies' => 'jquery.client',
+       ),
+       'jquery.validate' => array(
+               'scripts' => 'resources/jquery/jquery.validate.js',
+       ),
+       'jquery.xmldom' => array(
+               'scripts' => 'resources/jquery/jquery.xmldom.js',
        ),
+
+       /* jQuery Tipsy */
+
        'jquery.tipsy' => array(
                'scripts' => 'resources/jquery.tipsy/jquery.tipsy.js',
                'styles' => 'resources/jquery.tipsy/jquery.tipsy.css',
@@ -288,7 +352,9 @@ return array(
                        'fo' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-fo.js',
                        'fr-ch' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js',
                        'fr' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-fr.js',
+                       'gl' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-gl.js',
                        'he' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-he.js',
+                       'hi' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-hi.js',
                        'hr' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-hr.js',
                        'hu' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-hu.js',
                        'hy' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-hy.js',
@@ -296,14 +362,21 @@ return array(
                        'is' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-is.js',
                        'it' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-it.js',
                        'ja' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js',
+                       'kk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js',
+                       'km' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-km.js',
                        'ko' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ko.js',
+                       'lb' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-lb.js',
                        'lt' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-lt.js',
                        'lv' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-lv.js',
+                       'mk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-mk.js',
+                       'ml' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ml.js',
                        'ms' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ms.js',
                        'nl' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-nl.js',
                        'no' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-no.js',
                        'pl' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-pl.js',
+                       'pt' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-pt.js',
                        'pt-br' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js',
+                       'rm' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-rm.js',
                        'ro' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ro.js',
                        'ru' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ru.js',
                        'sk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-sk.js',
@@ -398,6 +471,11 @@ return array(
                'dependencies' => 'jquery.effects.core',
                'group' => 'jquery.ui',
        ),
+       'jquery.effects.fade' => array(
+               'scripts' => 'resources/jquery.effects/jquery.effects.fade.js',
+               'dependencies' => 'jquery.effects.core',
+               'group' => 'jquery.ui',
+       ),
        'jquery.effects.fold' => array(
                'scripts' => 'resources/jquery.effects/jquery.effects.fold.js',
                'dependencies' => 'jquery.effects.core',
@@ -441,11 +519,89 @@ return array(
                'debugScripts' => 'resources/mediawiki/mediawiki.log.js',
                'debugRaw' => false,
        ),
+       'mediawiki.api' => array(
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.js',
+               'dependencies' => 'mediawiki.util',
+       ),
+       'mediawiki.api.category' => array( 
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.category.js',
+               'dependencies' => array( 
+                       'mediawiki.api',
+                       'mediawiki.Title' 
+               ),
+       ),
+       'mediawiki.api.edit' => array( 
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.edit.js',
+               'dependencies' => array( 
+                       'mediawiki.api',
+                       'mediawiki.Title' 
+               ),
+       ),
+       'mediawiki.api.parse' => array( 
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.parse.js',
+               'dependencies' => 'mediawiki.api',
+       ),
+       'mediawiki.api.titleblacklist' => array( 
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.titleblacklist.js',
+               'dependencies' => array( 
+                       'mediawiki.api',
+                       'mediawiki.Title' 
+               ),
+       ),
+       'mediawiki.api.watch' => array( 
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.watch.js',
+               'dependencies' => array(
+                       'mediawiki.api',
+                       'user.tokens',
+               ),
+       ),
+       'mediawiki.debug' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.debug.js',
+               'styles' => 'resources/mediawiki/mediawiki.debug.css',
+               'dependencies' => 'jquery.footHovzer',
+               'position' => 'bottom',
+       ),
+       'mediawiki.debug.init' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.debug.init.js',
+               'dependencies' => 'mediawiki.debug',
+               // Uses a custom mw.config variable that is set in debughtml,
+               // must be loaded on the bottom
+               'position' => 'bottom',
+       ),
+       'mediawiki.feedback' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.feedback.js',
+               'styles' => 'resources/mediawiki/mediawiki.feedback.css',
+               'dependencies' => array( 
+                       'mediawiki.api.edit', 
+                       'mediawiki.Title',
+                       'mediawiki.jqueryMsg',
+                       'jquery.ui.dialog',
+               ),
+               'messages' => array( 
+                       'feedback-bugornote',
+                       'feedback-subject',
+                       'feedback-message',
+                       'feedback-cancel',
+                       'feedback-submit',
+                       'feedback-adding',
+                       'feedback-error1',
+                       'feedback-error2',
+                       'feedback-error3',
+                       'feedback-thanks',
+                       'feedback-close',
+                       'feedback-bugcheck',
+                       'feedback-bugnew',
+               ),
+       ),
        'mediawiki.htmlform' => array(
                'scripts' => 'resources/mediawiki/mediawiki.htmlform.js',
        ),
        'mediawiki.Title' => array(
                'scripts' => 'resources/mediawiki/mediawiki.Title.js',
+               'dependencies' => 'mediawiki.util',
+       ),
+       'mediawiki.Uri' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.Uri.js',
        ),
        'mediawiki.user' => array(
                'scripts' => 'resources/mediawiki/mediawiki.user.js',
@@ -453,39 +609,27 @@ return array(
                        'jquery.cookie',
                ),
        ),
-       'mediawiki.page.startup' => array(
-               'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js',
-               'dependencies' => array(
-                       'jquery.client',
-               ),
-               'position' => 'top',
-       ),
-       'mediawiki.page.ready' => array(
-               'scripts' => 'resources/mediawiki.page/mediawiki.page.ready.js',
-               'dependencies' => array(
-                       'jquery.checkboxShiftClick',
-                       'jquery.makeCollapsible',
-                       'jquery.placeholder',
-               ),
-       ),
        'mediawiki.util' => array(
                'scripts' => 'resources/mediawiki/mediawiki.util.js',
                'dependencies' => array(
                        'jquery.client',
                        'jquery.cookie',
                        'jquery.messageBox',
-                       'jquery.mwPrototypes',
+                       'jquery.mwExtension',
                ),
+               'messages' => array( 'showtoc', 'hidetoc' ),
+               'position' => 'top', // For $wgPreloadJavaScriptMwUtil
        ),
-       'mediawiki.page.mwsuggest' => array(
-               'scripts' => 'resources/mediawiki.page/mediawiki.page.mwsuggest.js',
-               'dependencies' => array( 
-                       'jquery.ui.autocomplete',
+
+       /* MediaWiki Action */
+
+       'mediawiki.action.edit' => array(
+               'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.js',
+               'dependencies' => array(
+                       'jquery.textSelection',
+                       'jquery.byteLimit',
                ),
        ),
-       'mediawiki.libs.jpegmeta' => array(
-               'scripts' => 'resources/mediawiki.libs/mediawiki.libs.jpegmeta.js',
-       ),
        'mediawiki.action.history' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.history.js',
                'dependencies' => 'jquery.ui.button',
@@ -495,22 +639,26 @@ return array(
                'styles' => 'resources/mediawiki.action/mediawiki.action.history.diff.css',
                'group' => 'mediawiki.action.history',
        ),
-       'mediawiki.action.edit' => array(
-               'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.js',
-               'dependencies' => array(
-                       'jquery.textSelection',
-                       'jquery.byteLimit',
+       'mediawiki.action.view.dblClickEdit' => array(
+               'scripts' => 'resources/mediawiki.action/mediawiki.action.view.dblClickEdit.js',
+               'dependencies' => 'mediawiki.util',
+       ),
+       'mediawiki.action.view.metadata' => array(
+               'scripts' => 'resources/mediawiki.action/mediawiki.action.view.metadata.js',
+               'messages' => array(
+                       'metadata-expand',
+                       'metadata-collapse',
                ),
        ),
        'mediawiki.action.view.rightClickEdit' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
        ),
-       'mediawiki.action.view.metadata' => array(
-               'scripts' => 'resources/mediawiki.action/mediawiki.action.view.metadata.js',
-               'messages' => array( 'metadata-expand', 'metadata-collapse' ),
-       ),
        'mediawiki.action.watch.ajax' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js',
+               'dependencies' => array(
+                       'mediawiki.api.watch',
+                       'mediawiki.util',
+               ),
                'messages' => array(
                        'watch',
                        'unwatch',
@@ -522,53 +670,7 @@ return array(
                ),
        ),
 
-       /* Special pages */
-
-       'mediawiki.special' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.js',
-               'styles' => 'resources/mediawiki.special/mediawiki.special.css',
-       ),
-       'mediawiki.special.preferences' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.preferences.js',
-               'styles' => 'resources/mediawiki.special/mediawiki.special.preferences.css',
-               'messages' => array( 'email-address-validity-valid', 'email-address-validity-invalid' ),
-       ),
-       'mediawiki.special.changeslist' => array(
-               'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
-               'dependencies' => array( 'jquery.makeCollapsible' ),
-       ),
-       'mediawiki.special.search' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js',
-               'styles'  => 'resources/mediawiki.special/mediawiki.special.search.css',
-       ),
-       'mediawiki.special.block' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js',
-       ),
-       'mediawiki.special.undelete' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js',
-       ),
-       'mediawiki.special.movePage' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.movePage.js',
-               'dependencies' => 'jquery.byteLimit',
-       ),
-       'mediawiki.special.recentchanges' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
-               'dependencies' => array( 'mediawiki.special' ),
-               'position' => 'top',
-       ),
-       'mediawiki.special.upload' => array(
-               // @TODO: merge in remainder of mediawiki.legacy.upload
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.upload.js',
-               'messages' => array(
-                       'widthheight',
-                       'size-bytes',
-                       'size-kilobytes',
-                       'size-megabytes',
-                       'size-gigabytes',
-                       'largefileserver',
-               ),
-               'dependencies' => array( 'mediawiki.libs.jpegmeta' ),
-       ),
+       /* MediaWiki Language */
 
        'mediawiki.language' => array(
                'scripts' => 'resources/mediawiki.language/mediawiki.language.js',
@@ -601,8 +703,10 @@ return array(
                        'mk' => 'resources/mediawiki.language/languages/mk.js',
                        'mo' => 'resources/mediawiki.language/languages/mo.js',
                        'mt' => 'resources/mediawiki.language/languages/mt.js',
+                       'nl' => 'resources/mediawiki.language/languages/nl.js',
                        'nso' => 'resources/mediawiki.language/languages/nso.js',
                        'pl' => 'resources/mediawiki.language/languages/pl.js',
+                       'pt' => 'resources/mediawiki.language/languages/pt.js',
                        'pt-br' => 'resources/mediawiki.language/languages/pt-br.js',
                        'ro' => 'resources/mediawiki.language/languages/ro.js',
                        'ru' => 'resources/mediawiki.language/languages/ru.js',
@@ -621,13 +725,133 @@ return array(
                ),
        ),
 
-       /* mediawiki Legacy */
+       'mediawiki.jqueryMsg' => array(
+               'dependencies' => array( 'mediawiki.language', 'mediawiki.util' ),
+               'scripts' => 'resources/mediawiki/mediawiki.jqueryMsg.js'
+       ),
+
+       /* MediaWiki Libs */
+
+       'mediawiki.libs.jpegmeta' => array(
+               'scripts' => 'resources/mediawiki.libs/mediawiki.libs.jpegmeta.js',
+       ),
+
+       /* MediaWiki Page */
+
+       'mediawiki.page.ready' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.ready.js',
+               'dependencies' => array(
+                       'jquery.checkboxShiftClick',
+                       'jquery.makeCollapsible',
+                       'jquery.placeholder',
+                       'jquery.mw-jump',
+                       'mediawiki.util',
+               ),
+       ),
+       'mediawiki.page.startup' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js',
+               'dependencies' => array(
+                       'jquery.client',
+                       'mediawiki.util',
+               ),
+               'position' => 'top',
+       ),
+
+
+       /* MediaWiki Special pages */
+
+       'mediawiki.special' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.js',
+               'styles' => 'resources/mediawiki.special/mediawiki.special.css',
+       ),
+       'mediawiki.special.block' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js',
+               'dependencies' => array(
+                       'mediawiki.util',
+               ),
+       ),
+       'mediawiki.special.changeemail' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.changeemail.js',
+               'styles' => 'resources/mediawiki.special/mediawiki.special.changeemail.css',
+               'dependencies' => array(
+                       'mediawiki.util',
+               ),
+               'messages' => array(
+                       'email-address-validity-valid',
+                       'email-address-validity-invalid',
+               ),
+       ),
+       'mediawiki.special.changeslist' => array(
+               'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
+               'dependencies' => array( 'jquery.makeCollapsible' ),
+       ),
+       'mediawiki.special.movePage' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.movePage.js',
+               'dependencies' => 'jquery.byteLimit',
+       ),
+       'mediawiki.special.preferences' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.preferences.js',
+               'styles'  => 'resources/mediawiki.special/mediawiki.special.preferences.css',
+       ),
+       'mediawiki.special.recentchanges' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
+               'dependencies' => array( 'mediawiki.special' ),
+               'position' => 'top',
+       ),
+       'mediawiki.special.search' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js',
+               'styles' => 'resources/mediawiki.special/mediawiki.special.search.css',
+       ),
+       'mediawiki.special.undelete' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js',
+       ),
+       'mediawiki.special.upload' => array(
+               // @TODO: merge in remainder of mediawiki.legacy.upload
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.upload.js',
+               'messages' => array(
+                       'widthheight',
+                       'size-bytes',
+                       'size-kilobytes',
+                       'size-megabytes',
+                       'size-gigabytes',
+                       'largefileserver',
+               ),
+               'dependencies' => array( 'mediawiki.libs.jpegmeta', 'mediawiki.util' ),
+       ),
+       'mediawiki.special.javaScriptTest' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.javaScriptTest.js',
+               'messages' => array_merge( Skin::getSkinNameMessages(), array(
+                       'colon-separator',
+                       'javascripttest-pagetext-skins',
+               ) ),
+               'dependencies' => array( 'jquery.qunit' ),
+               'position' => 'top',
+       ),
+
+       /* MediaWiki Tests */
+
+       'mediawiki.tests.qunit.testrunner' => array(
+               'scripts' => 'tests/qunit/data/testrunner.js',
+               'dependencies' => array(
+                       'jquery.qunit',
+                       'jquery.qunit.completenessTest',
+                       'mediawiki.page.startup',
+                       'mediawiki.page.ready',
+               ),
+               'position' => 'top',
+       ),
+
+       /* MediaWiki Legacy */
 
        'mediawiki.legacy.ajax' => array(
                'scripts' => 'common/ajax.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
-               'dependencies' => 'mediawiki.legacy.wikibits',
+               'dependencies' => array(
+                       'mediawiki.util',
+                       'mediawiki.legacy.wikibits',
+               ),
+               'position' => 'top', // Temporary hack for legacy support
        ),
        'mediawiki.legacy.commonPrint' => array(
                'styles' => array( 'common/commonPrint.css' => array( 'media' => 'print' ) ),
@@ -647,6 +871,13 @@ return array(
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
                'dependencies' => 'mediawiki.legacy.wikibits',
        ),
+       'mediawiki.legacy.mwsuggest' => array(
+               'scripts' => 'common/mwsuggest.js',
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+               'dependencies' => 'mediawiki.legacy.wikibits',
+               'messages' => array( 'search-mwsuggest-enabled', 'search-mwsuggest-disabled' ),
+       ),
        'mediawiki.legacy.preview' => array(
                'scripts' => 'common/preview.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
@@ -661,6 +892,7 @@ return array(
                        'mediawiki.legacy.wikibits',
                        'jquery.byteLimit',
                ),
+               'position' => 'top',
        ),
        'mediawiki.legacy.shared' => array(
                'styles' => array( 'common/shared.css' => array( 'media' => 'screen' ) ),
@@ -676,14 +908,19 @@ return array(
                'scripts' => 'common/upload.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
-               'dependencies' => 'mediawiki.legacy.wikibits',
+               'dependencies' => array(
+                       'mediawiki.legacy.wikibits',
+                       'mediawiki.util',
+               ),
        ),
        'mediawiki.legacy.wikibits' => array(
                'scripts' => 'common/wikibits.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
-               'dependencies' => 'mediawiki.language',
-               'messages' => array( 'showtoc', 'hidetoc' ),
+               'dependencies' => array(
+                       'mediawiki.util',
+               ),
+               'position' => 'top',
        ),
        'mediawiki.legacy.wikiprintable' => array(
                'styles' => array( 'common/wikiprintable.css' => array( 'media' => 'print' ) ),