Santhosh has uploaded a new change for review.

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


Change subject: Simplify the language settings display
......................................................................

Simplify the language settings display

Directly show language settings instead of showing ULS language selector
and then simulating click on language settings

Change-Id: Iafb15ac9a7140fcce9e71ed933be6c55be81dc7e
---
M resources/css/ext.uls.css
M resources/js/ext.uls.interface.js
2 files changed, 23 insertions(+), 76 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UniversalLanguageSelector 
refs/changes/40/63840/1

diff --git a/resources/css/ext.uls.css b/resources/css/ext.uls.css
index f41fb70..0449202 100644
--- a/resources/css/ext.uls.css
+++ b/resources/css/ext.uls.css
@@ -7,7 +7,7 @@
        padding-left: 30px;
 }
 
-#p-lang .uls-trigger {
+#p-lang .uls-settings-trigger {
        /* @embed */
        background: transparent url('../images/cog-sprite.png') right top 
no-repeat;
        background-image: -webkit-linear-gradient(transparent, transparent), 
url('../images/cog-sprite.svg');
@@ -16,16 +16,17 @@
        background-size: 14px auto;
        border-radius: 0 0 5px 5px;
        height: 14px;
+       width: 14px;
        float: right;
        cursor: pointer;
 }
 
-.skin-vector #p-lang .uls-trigger {
+.skin-vector #p-lang .uls-settings-trigger {
        /* Put it in the middle of the first row of the section title */
        margin-top: 4px;
 }
 
-#p-lang .uls-trigger:hover {
+#p-lang .uls-settings-trigger:hover {
        background-position: right -18px;
 }
 
diff --git a/resources/js/ext.uls.interface.js 
b/resources/js/ext.uls.interface.js
index 3d09e5e..71b0516 100644
--- a/resources/js/ext.uls.interface.js
+++ b/resources/js/ext.uls.interface.js
@@ -21,7 +21,10 @@
        'use strict';
 
        $( document ).ready( function () {
-               var $ulsTrigger, $pLang,
+               var $ulsTrigger,
+                       $ulsSettingsTrigger,
+                       ulsTriggerOffset,
+                       $pLang,
                        ulsOptions,
                        previousLanguages, previousLang,
                        anonMode,
@@ -40,10 +43,10 @@
                        // The interlanguage links section
                        $pLang = $( '#p-lang' );
                        // Add an element near the interlanguage links header
-                       $pLang.prepend( $( '<span>' )
-                               .addClass( 'uls-trigger' )
-                               .attr( 'title', $.i18n( 
'ext-uls-language-settings-title' ) )
-                       );
+                       $ulsSettingsTrigger = $( '<span>' )
+                               .addClass( 'uls-settings-trigger' )
+                               .attr( 'title', $.i18n( 
'ext-uls-language-settings-title' ) );
+                       $pLang.prepend( $ulsSettingsTrigger );
 
                        // Remove the dummy link that was added to make sure 
that the section appears
                        $pLang.find( '.uls-p-lang-dummy' ).remove();
@@ -159,80 +162,23 @@
                };
 
                if ( ulsPosition === 'interlanguage' ) {
-                       $ulsTrigger.attr( 'title', $.i18n( 
'ext-uls-select-language-settings-icon-tooltip' ) );
-
-                       // This is a hook that runs in the ULS scope
-                       ulsOptions.onVisible = function () {
-                               var scrollPosition,
-                                       $currentMenu,
-                                       ulsHeight, ulsTop, ulsBottom,
-                                       $languageSettingsTrigger = 
this.$menu.find( '#display-settings-block' ),
-                                       padding = 10,
-                                       $window = $( window ),
-                                       windowHeight = $window.height(),
-                                       windowScrollTop = $window.scrollTop(),
-                                       windowBottom = windowScrollTop + 
windowHeight,
-                                       ulsTriggerOffset = 
this.$element.offset();
-
-                               // Reposition the element -
-                               // the sidebar elements may have changed
-                               this.top = ulsTriggerOffset.top - 45;
-                               this.left = rtlPage ?
-                                       ulsTriggerOffset.left - 22 - 
this.$menu.width() :
-                                       ulsTriggerOffset.left + 50;
-                               this.$menu.css( this.position() );
-
-                               // Show the Display settings panel:
-                               // We are using the ULS trigger in the sidebar,
-                               // so we don't want to switch the language, but
-                               // to change the settings.
-                               $languageSettingsTrigger.click();
-
-                               $currentMenu = $( '.uls-menu:visible' );
-                               $currentMenu.css( this.position() );
-                               ulsHeight = $currentMenu.height();
-                               ulsTop = $currentMenu.offset().top;
-                               ulsBottom = ulsTop + ulsHeight;
-
-                               // If the ULS panel is out of the viewport,
-                               // scroll the window to show it
-                               if ( ( ulsTop < windowScrollTop ) || ( 
ulsBottom > windowBottom ) ) {
-                                       if ( ulsHeight > windowHeight ) {
-                                               // Scroll to show as much of 
the upper
-                                               // part of ULS as possible
-                                               scrollPosition = ulsTop - 
padding;
-                                       } else {
-                                               // Scroll just enough to show 
the ULS panel
-                                               scrollPosition = ulsBottom - 
windowHeight + padding;
-                                       }
-
-                                       $( 'html, body' ).stop().animate( {
-                                               scrollTop: scrollPosition
-                                       }, 500 );
-                               }
-
-                               // Set the position of the caret according to 
the height
-                               // of the top row of the menu
-                               $currentMenu.find( '.caret-before, 
.caret-after' ).css( 'top',
-                                       $currentMenu.find( '.row' ).height()
-                               );
-
-                       };
-               } else if ( anonMode ) {
-                       ulsOptions.onVisible = function () {
-                               this.$menu.find( '#display-settings-block' 
).click();
-                       };
-               }
-
-               $ulsTrigger.uls( ulsOptions );
-
-               if ( ulsPosition === 'interlanguage' ) {
+                       $ulsSettingsTrigger.attr( 'title', $.i18n( 
'ext-uls-select-language-settings-icon-tooltip' ) );
+                       ulsTriggerOffset = $ulsSettingsTrigger.offset();
+                       $ulsSettingsTrigger.languagesettings( {
+                               left: rtlPage ? ulsTriggerOffset.left - 22
+                                       :ulsTriggerOffset.left + 50,
+                               top: ulsTriggerOffset.top - 50
+                       } );
                        $( '.uls-menu' ).each( function () {
                                $( this ).prepend(
                                        $( '<span>' ).addClass( 'caret-before' 
),
                                        $( '<span>' ).addClass( 'caret-after' )
                                );
                        } );
+               } else if ( anonMode ) {
+                       $ulsTrigger.languagesettings();
+               } else {
+                       $ulsTrigger.uls( ulsOptions );
                }
 
                if ( previousLang === currentLang  ) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iafb15ac9a7140fcce9e71ed933be6c55be81dc7e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
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