Santhosh has uploaded a new change for review.

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


Change subject: (bug 45421) Avoid inconsistencies in breadcrumbs of project 
selector
......................................................................

(bug 45421) Avoid inconsistencies in breadcrumbs of project selector

* Avoid empty selector
* Keep the "All" link always in the beginning
* Keep the selector open if the current group has child groups
* Make the group selector breadcrumb consistant

Change-Id: Ic959ea4946101f56771a6467e668c9decfa0e1dd
---
M resources/js/ext.translate.groupselector.js
M resources/js/ext.translate.special.translate.js
M specials/SpecialTranslate.php
3 files changed, 37 insertions(+), 34 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/37/51637/1

diff --git a/resources/js/ext.translate.groupselector.js 
b/resources/js/ext.translate.groupselector.js
index dbf0b27..21fec90 100644
--- a/resources/js/ext.translate.groupselector.js
+++ b/resources/js/ext.translate.groupselector.js
@@ -9,7 +9,7 @@
                this.flatGroupList = null;
 
                this.init();
-               this.listen();
+
        }
 
        TranslateMessageGroupSelector.prototype = {
@@ -21,10 +21,12 @@
                 */
                init: function () {
                        this.parentGroupId = this.$group.data( 'msggroupid' );
+
                        this.prepareSelectorMenu();
                        this.position();
-
-                       this.loadGroups( this.parentGroupId );
+                       if ( this.loadGroups( this.parentGroupId ) ) {
+                               this.listen();
+                       }
                },
 
                /**
@@ -145,17 +147,30 @@
                        } );
 
                        groupSelector.$menu.on( 'click', 
'.ext-translate-msggroup-item', function () {
-                               var messageGroup = $( this ).data( 'msggroup' );
-
-                               groupSelector.$group
-                                       .text( messageGroup.label )
-                                       .removeClass( 'tail' )
-                                       .nextAll().remove();
+                               var $newLink,
+                                       messageGroup = $( this ).data( 
'msggroup' );
 
                                groupSelector.hide();
 
-                               if ( messageGroup.groupcount > 0 ) {
-                                       groupSelector.$group.addClass( 
'expanded' );
+                               groupSelector.$group
+                                       .removeClass( 'tail' )
+                                       .nextAll().remove();
+
+                               groupSelector.$group.addClass( 'expanded' );
+                               $( '.ext-translate-msggroup-selector .tail' 
).remove();
+
+                               $newLink = $( '<span>' )
+                                       .addClass( 'grouptitle grouplink tail' )
+                                       .text( messageGroup.label );
+                               $( '.ext-translate-msggroup-selector 
.grouplink:last' ).after( $newLink );
+                               $newLink.data( 'msggroupid', messageGroup.id );
+
+                               if ( messageGroup.groups && 
messageGroup.groups.length > 0 ) {
+                                       $newLink.msggroupselector( {
+                                               onSelect: 
groupSelector.options.onSelect
+                                       } );
+                                       // keep it open
+                                       $newLink.data( 'msggroupselector' 
).show();
                                }
 
                                if ( groupSelector.options.onSelect ) {
@@ -352,10 +367,11 @@
                 * in the group selector.
                 *
                 * @param parentGroupId
+                * @return {boolean} Whether this group has child groups or not
                 */
                loadGroups: function ( parentGroupId ) {
                        this.$menu.data( 'msggroups', 
mw.translate.messageGroups );
-                       this.addGroupRows( parentGroupId, null );
+                       return this.addGroupRows( parentGroupId, null );
                },
 
                /**
@@ -363,6 +379,7 @@
                 *
                 * @param {string|null} parentGroupId. If it's null, all groups 
are loaded. Otherwise, groups under this id are loaded.
                 * @param {Array} msgGroups - array of message group objects to 
add.
+                * @return {boolean} Whether this group has child groups or not
                 */
                addGroupRows: function ( parentGroupId, msgGroups ) {
                        var $msgGroupRows,
@@ -380,7 +397,7 @@
                        }
 
                        if ( !messageGroups ) {
-                               return;
+                               return false;
                        }
 
                        $msgGroupRows = [];
@@ -413,6 +430,8 @@
                        } else {
                                $msgGroupList.append( $msgGroupRows );
                        }
+
+                       return true;
                },
 
                /**
diff --git a/resources/js/ext.translate.special.translate.js 
b/resources/js/ext.translate.special.translate.js
index 1ff1b82..582aac1 100644
--- a/resources/js/ext.translate.special.translate.js
+++ b/resources/js/ext.translate.special.translate.js
@@ -207,24 +207,6 @@
                }
        }
 
-       function groupSelectorHandler( msgGroup ) {
-               var $newLink;
-
-               if ( msgGroup.groups && msgGroup.groups.length > 0 ) {
-                       $( '.ext-translate-msggroup-selector .tail' ).remove();
-                       $newLink = $( '<span>' ).addClass( 'grouptitle 
grouplink tail' )
-                               .text( mw.msg( 
'translate-msggroupselector-search-all' ) );
-                       $( '.ext-translate-msggroup-selector .grouplink:last' 
).after( $newLink );
-                       $newLink.data( 'msggroupid', msgGroup.id );
-                       $newLink.msggroupselector( {
-                               onSelect: groupSelectorHandler
-                       } );
-               }
-
-               mw.translate.changeGroup( msgGroup );
-
-       }
-
        // Returns an array of jQuery objects of rows of translated
        // and proofread messages in the TUX editors.
        // Used several times.
@@ -314,7 +296,9 @@
                        mw.translate.loadMessageGroups()
                ).then( function () {
                        $( '.ext-translate-msggroup-selector .grouplink' 
).msggroupselector( {
-                               onSelect: groupSelectorHandler
+                               onSelect: function ( msgGroup ) {
+                                       mw.translate.changeGroup( msgGroup );
+                               }
                        } );
 
                        $( '.tux-message-list-statsbar' ).languagestatsbar( {
diff --git a/specials/SpecialTranslate.php b/specials/SpecialTranslate.php
index 2631d15..75c22ba 100644
--- a/specials/SpecialTranslate.php
+++ b/specials/SpecialTranslate.php
@@ -466,12 +466,12 @@
                                $this->msg( 
'translate-msggroupselector-projects' )->escaped()
                        ) .
                        Html::element( 'span',
-                               array( 'class' => 'grouptitle grouplink 
expanded tail' ),
+                               array( 'class' => 'grouptitle grouplink 
expanded' ),
                                $this->msg( 
'translate-msggroupselector-search-all' )->escaped()
                        ) .
                        Html::element( 'span',
                                array(
-                                       'class' => 'grouptitle grouplink',
+                                       'class' => 'grouptitle grouplink tail',
                                        'data-msggroupid' => 
$this->options['group'],
                                ),
                                $group->getLabel()

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic959ea4946101f56771a6467e668c9decfa0e1dd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to