jenkins-bot has submitted this change and it was merged.

Change subject: Order template title results by provided index
......................................................................


Order template title results by provided index

This only comes back in results from certain modules, so I'm not entirely
sure whether we want to do this in here or mw.widgets.TitleInputWidget.

Bug: T111598
Change-Id: If2916706db359d520c41c2dec7ded44e0d3a56a9
---
M modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
1 file changed, 30 insertions(+), 6 deletions(-)

Approvals:
  Jforrester: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
index c8c20ab..ca78338 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
@@ -51,18 +51,42 @@
 
        if ( this.showTemplateDescriptions ) {
                return promise
-                       // Also get descriptions
                        .then( function ( response ) {
-                               var xhr, index, params,
-                                       pages = ( response.query && 
response.query.pages ) || {},
+                               var xhr, pageId, index, params, indexFound, 
redirIndex,
+                                       redirects = ( response.query && 
response.query.redirects ) || {},
+                                       origPages = ( response.query && 
response.query.pages ) || {},
+                                       newPages = [],
                                        titles = [];
 
-                               for ( index in pages ) {
-                                       titles.push( pages[ index ].title );
+                               // Build a new array to replace 
response.query.pages, ensuring everything goes into
+                               // the order defined by the page's index key, 
instead of whatever random order the
+                               // browser would let you iterate over the old 
object in.
+                               for ( pageId in origPages ) {
+                                       indexFound = false;
+                                       if ( 'index' in origPages[ pageId ] ) {
+                                               newPages[ origPages[ pageId 
].index - 1 ] = origPages[ pageId ];
+                                               indexFound = true;
+                                       } else {
+                                               // Watch out for cases where 
the index is specified on the redirect object
+                                               // rather than the page object.
+                                               for ( redirIndex in redirects ) 
{
+                                                       if ( redirects[ 
redirIndex ].to === origPages[ pageId ].title ) {
+                                                               newPages[ 
redirects[ redirIndex ].index - 1 ] = origPages[ pageId ];
+                                                               indexFound = 
true;
+                                                               break;
+                                                       }
+                                               }
+                                       }
                                }
 
-                               originalResponse = response;
+                               for ( index in newPages ) {
+                                       titles.push( newPages[ index ].title );
+                               }
 
+                               response.query.pages = newPages;
+                               originalResponse = response; // lie!
+
+                               // Also get descriptions
                                if ( titles.length > 0 ) {
                                        params = {
                                                action: 'templatedata',

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

Gerrit-MessageType: merged
Gerrit-Change-Id: If2916706db359d520c41c2dec7ded44e0d3a56a9
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <kren...@gmail.com>
Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to