Santhosh has uploaded a new change for review. https://gerrit.wikimedia.org/r/55253
Change subject: (Bug 46155) Compact long message group facet lists on search ...................................................................... (Bug 46155) Compact long message group facet lists on search Change-Id: I175df7a231cd1fac3f208003dfb1b812dd2edafb --- M Resources.php M Translate.i18n.php M resources/css/ext.translate.special.searchtranslations.css M resources/js/ext.translate.special.searchtranslations.js M specials/SpecialSearchTranslations.php 5 files changed, 110 insertions(+), 25 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate refs/changes/53/55253/1 diff --git a/Resources.php b/Resources.php index 57b4a5a..20aa0c2 100644 --- a/Resources.php +++ b/Resources.php @@ -274,10 +274,12 @@ 'dependencies' => array( 'ext.translate.editor', 'ext.uls.init', + 'ext.translate.groupselector', ), 'messages' => array( 'translate-documentation-language', - 'translate-search-more-languages-info' + 'translate-search-more-languages-info', + 'translate-search-more-groups-info', ), 'position' => 'top', ) + $resourcePaths; diff --git a/Translate.i18n.php b/Translate.i18n.php index 1ce2dc7..91009c4 100644 --- a/Translate.i18n.php +++ b/Translate.i18n.php @@ -502,6 +502,7 @@ 'tux-editor-collapse-tooltip' => 'Collapse', 'tux-editor-loading' => 'Loading...', 'translate-search-more-languages-info' => '$1 more {{PLURAL:$1|language|languages}}', + 'translate-search-more-groups-info' => '$1 more {{PLURAL:$1|group|groups}}', ); /** Message documentation (Message documentation) @@ -1136,6 +1137,9 @@ 'translate-search-more-languages-info' => 'Information shown as number of languages matching the query using [[Special:SearchTranslations]] * $1 - number of languages', + 'translate-search-more-groups-info'=> 'Information shown as number of message groups matching the query using +[[Special:SearchTranslations]] +* $1 - number of groups', ); /** Afrikaans (Afrikaans) diff --git a/resources/css/ext.translate.special.searchtranslations.css b/resources/css/ext.translate.special.searchtranslations.css index b7e6b01..ce61488 100644 --- a/resources/css/ext.translate.special.searchtranslations.css +++ b/resources/css/ext.translate.special.searchtranslations.css @@ -125,6 +125,7 @@ display: none; } +.translate-search-more-groups, .translate-search-more-languages { background-color: #F0F0F0; font-size: 16px; @@ -134,11 +135,13 @@ border: 1px solid #EEE; } +.translate-search-more-groups:hover, .translate-search-more-languages:hover { border: 1px solid #CCC; text-decoration: none; } +.translate-search-more-groups-info, .translate-search-more-languages-info { padding: 5px; color: #888; diff --git a/resources/js/ext.translate.special.searchtranslations.js b/resources/js/ext.translate.special.searchtranslations.js index e90a337..26235cf 100644 --- a/resources/js/ext.translate.special.searchtranslations.js +++ b/resources/js/ext.translate.special.searchtranslations.js @@ -21,7 +21,7 @@ } ); showLanguages(); - + showMessageGroups(); } ); // ES5-compatible Chrome, IE 9+, FF 4+, or Safari 5+ has Object.keys. @@ -140,6 +140,7 @@ window.location = languages[language].url; }, lazyload: false, + compact: true, languages: ulslanguages, top: $languages.offset().top, showRegions: regions @@ -147,6 +148,89 @@ } } + function showMessageGroups() { + var $grouSelectorTrigger, + selectedClasss = '', + currentGroup, + resultCount, + $count, + i, + group, + groupId, + groupList, + $groups; + + $groups = $( '.facet.groups' ); + currentGroup = $groups.data( 'group' ); + + mw.translate.messageGroups = $groups.data( 'facets' ); + + groupList = Object.keys( mw.translate.messageGroups ); + resultCount = groupList.length; + + if ( currentGroup && $.inArray( currentGroup, groupList ) < 0 ) { + groupList = groupList.splice( 0, 5 ); + groupList = groupList.concat( currentGroup ); + groupList.sort( sortGroups ); + } else { + groupList = groupList.splice( 0, 6 ); + } + groupList.sort( sortGroups ); + for ( i = 0; i <= groupList.length; i++ ) { + groupId = groupList[i]; + group = mw.translate.messageGroups[groupId]; + if ( !group ) { + continue; + } + if ( currentGroup === groupId ) { + selectedClasss = 'selected'; + } else { + selectedClasss = ''; + } + + $groups.append( $( '<div>') + .addClass( 'row facet-item ' + selectedClasss ) + .append( $( '<span>') + .addClass('facet-name') + .append( $('<a>') + .attr( { + href: group.url, + title: group.description + } ) + .text( group.label ) + ), + $( '<span>') + .addClass('facet-count') + .text( group.count ) + ) + ); + } + + if ( resultCount > 6 ) { + $grouSelectorTrigger = $( '<a>' ) + .text( '...' ) + .addClass( 'translate-search-more-groups' ); + + $count = $( '<span>' ) + .addClass( 'translate-search-more-groups-info' ) + .text( mw.msg( 'translate-search-more-groups-info', resultCount - groupList.length ) ); + $groups.append( $grouSelectorTrigger, $count ); + + $grouSelectorTrigger.msggroupselector( { + onSelect: function ( group ) { + window.location = group.url; + } + } ); + } + } + + function sortGroups ( groupIdA, groupIdB ) { + var groupAName = mw.translate.messageGroups[groupIdA].label, + groupBName = mw.translate.messageGroups[groupIdB].label; + + return groupAName.localeCompare( groupBName ); + } + function sortLanguages ( languageA, languageB ) { var languageNameA = window.wgULSLanguages[languageA] || languageA, languageNameB = window.wgULSLanguages[languageB] || languageB; diff --git a/specials/SpecialSearchTranslations.php b/specials/SpecialSearchTranslations.php index 2873a84..23ac748 100644 --- a/specials/SpecialSearchTranslations.php +++ b/specials/SpecialSearchTranslations.php @@ -91,12 +91,15 @@ $this->msg( 'tux-sst-facet-language' ) ); + $facet = $resultset->getFacetSet()->getFacet( 'group' ); $facets .= Html::element( 'div', - array( 'class' => 'row facet' ), + array( 'class' => 'row facet groups', + 'data-facets' => FormatJson::encode( $this->getGroups( $facet) ), + 'data-group' => $opts->getValue( 'group' ), ), $this->msg( 'tux-sst-facet-group' ) ); - $facet = $resultset->getFacetSet()->getFacet( 'group' ); - $facets .= $this->renderGroupFacet( $facet ); + + //$facets .= $this->renderGroupFacet( $facet ); // Part 2: results $results = ''; @@ -241,19 +244,17 @@ } - protected function renderGroupFacet( Solarium_Result_Select_Facet_Field $facet ) { + protected function getGroups( Solarium_Result_Select_Facet_Field $facet ) { $structure = MessageGroups::getGroupStructure(); $counts = iterator_to_array( $facet ); return $this->makeGroupFacetRows( $structure, $counts ); } protected function makeGroupFacetRows( array $groups, $counts, $level = 0, $pathString = '' ) { - $output = ''; + $output = array(); $nondefaults = $this->opts->getChangedValues(); $selected = $this->opts->getValue( 'group' ); - - $path = explode( '|', $this->opts->getValue( 'grouppath' ) ); foreach ( $groups as $mixed ) { $subgroups = $group = $mixed; @@ -279,27 +280,18 @@ } $url = $this->getTitle()->getLocalUrl( $nondefaults ); - $link = Html::element( 'a', array( 'href' => $url ), $group->getLabel() ); - $name = Html::rawElement( 'span', array( 'class' => 'facet-name' ), $link ); $value = isset( $counts[$id] ) ? $counts[$id] : 0; $count = $this->getLanguage()->formatNum( $value ); - $count = Html::element( 'span', array( 'class' => 'facet-count' ), $count ); - - $class = "row facet-item facet-level-$level"; - if ( isset( $path[$level] ) && $path[$level] === $id ) { - $class .= ' selected'; - } - - $output .= Html::rawElement( 'div', - array( 'class' => $class ), - $name . $count + $output[$id] = array( + 'id' => $id, + 'count' => $value, + 'url' => $url, + 'label' => $group->getLabel(), + 'description' => $group->getDescription(), + // FIXME we need icon too ); - - if ( isset( $path[$level] ) && $path[$level] === $id ) { - $output .= $this->makeGroupFacetRows( $subgroups, $counts, $level + 1, "$pathString$id|" ); - } } return $output; } -- To view, visit https://gerrit.wikimedia.org/r/55253 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I175df7a231cd1fac3f208003dfb1b812dd2edafb Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Translate Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits