[MediaWiki-commits] [Gerrit] MT: Store the MT provider preference in localstorage - change (mediawiki...ContentTranslation)

2016-03-23 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: MT: Store the MT provider preference in localstorage
..


MT: Store the MT provider preference in localstorage

* Use the stored preference as default MT provider.
* Do not show the new MT preferences announcement if there is a stored
  MT provider preference.

Bug: T128059
Change-Id: Ie13ea5c6c1911746888c67224ccee9212f5635dc
---
M extension.json
M modules/tools/ext.cx.tools.mt.js
2 files changed, 43 insertions(+), 12 deletions(-)

Approvals:
  Nikerabbit: Checked; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index 0959b2b..544dca7 100644
--- a/extension.json
+++ b/extension.json
@@ -642,7 +642,8 @@
"ext.cx.tools.manager",
"ext.cx.translation",
"ext.cx.translationview",
-   "ext.cx.util"
+   "ext.cx.util",
+   "mediawiki.storage"
]
},
"ext.cx.tools.reference": {
diff --git a/modules/tools/ext.cx.tools.mt.js b/modules/tools/ext.cx.tools.mt.js
index bca4ef6..71ca028 100644
--- a/modules/tools/ext.cx.tools.mt.js
+++ b/modules/tools/ext.cx.tools.mt.js
@@ -20,8 +20,8 @@
providerIdPrefix = 'cx-provider-',
disableMT = 'disable-mt',
noMT = 'no-mt',
-   sourceMT = 'source-mt';
-
+   sourceMT = 'source-mt',
+   translationOptions = [ disableMT, noMT, sourceMT ];
/**
 * Fetch token for authentication with cxserver.
 *
@@ -78,7 +78,8 @@
 * @return {jQuery.Promise}
 */
function getProviders( from, to ) {
-   var fetchProvidersUrl;
+   var fetchProvidersUrl,
+   translationPreference;
 
if ( MTControlCard.provider ) {
return $.Deferred().resolve();
@@ -93,20 +94,27 @@
return $.get( fetchProvidersUrl )
.done( function ( response ) {
MTControlCard.providers = response.mt;
+   translationPreference = mw.storage.get( 
getMTProviderStorageKey() );
+   if ( MTControlCard.providers.indexOf( 
translationPreference ) < 0 &&
+   translationOptions.indexOf( 
translationPreference ) < 0 ) {
+   // Stored MT preference is not 
available now.
+   translationPreference = null;
+   }
 
if ( $.isEmptyObject( MTControlCard.providers ) 
) {
-   MTControlCard.provider = noMT;
+   MTControlCard.provider = 
translationPreference || noMT;
// For languages with different 
directionality,
// provide disable MT as default 
option. It gives
// an empty editor to translator.
if ( $.uls.data.getDir( 
mw.cx.sourceLanguage ) !==
$.uls.data.getDir( 
mw.cx.targetLanguage )
) {
-   MTControlCard.provider = 
disableMT;
+   MTControlCard.provider = 
translationPreference || disableMT;
}
} else {
-   // TODO: Consider user preferences
-   MTControlCard.provider = 
MTControlCard.providers[ 0 ];
+   // There are MT providers. If there is 
a saved mt provider preference
+   // select that from the providers. 
Otherwise select the first one.
+   MTControlCard.provider = 
translationPreference || MTControlCard.providers[ 0 ];
}
} )
.fail( function ( response ) {
@@ -116,6 +124,17 @@
response.responseText
);
} );
+   }
+
+   /**
+* Get the localStorage key for the MT preference
+*
+* @return {string} The storage key.
+*/
+   function getMTProviderStorageKey() {
+   return [
+   'cxMTProvider', mw.cx.sourceLanguage, 
mw.cx.targetLanguage
+   ].join( '-' );
}
 
/**
@@ -371,7 +390,6 @@

[MediaWiki-commits] [Gerrit] MT: Store the MT provider preference in localstorage - change (mediawiki...ContentTranslation)

2016-03-06 Thread Santhosh (Code Review)
Santhosh has uploaded a new change for review.

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

Change subject: MT: Store the MT provider preference in localstorage
..

MT: Store the MT provider preference in localstorage

* Use the stored preference as default MT provider.
* Do not show the new MT preferences announcement if there is a stored
  MT prrovider preference.

Bug: T128059
Change-Id: Ie13ea5c6c1911746888c67224ccee9212f5635dc
---
M extension.json
M modules/tools/ext.cx.tools.mt.js
2 files changed, 35 insertions(+), 7 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation 
refs/changes/65/275365/1

diff --git a/extension.json b/extension.json
index 0959b2b..544dca7 100644
--- a/extension.json
+++ b/extension.json
@@ -642,7 +642,8 @@
"ext.cx.tools.manager",
"ext.cx.translation",
"ext.cx.translationview",
-   "ext.cx.util"
+   "ext.cx.util",
+   "mediawiki.storage"
]
},
"ext.cx.tools.reference": {
diff --git a/modules/tools/ext.cx.tools.mt.js b/modules/tools/ext.cx.tools.mt.js
index 098a52c..9671ec2 100644
--- a/modules/tools/ext.cx.tools.mt.js
+++ b/modules/tools/ext.cx.tools.mt.js
@@ -78,7 +78,8 @@
 * @return {jQuery.Promise}
 */
function getProviders( from, to ) {
-   var fetchProvidersUrl;
+   var fetchProvidersUrl,
+   storedMTProvider;
 
if ( MTControlCard.provider ) {
return $.Deferred().resolve();
@@ -105,8 +106,16 @@
MTControlCard.provider = 
disableMT;
}
} else {
-   // TODO: Consider user preferences
-   MTControlCard.provider = 
MTControlCard.providers[ 0 ];
+   // There are MT providers. If there is 
a saved mt provider preference
+   // select that from the providers. 
Otherwise select the first one.
+   storedMTProvider = mw.storage.get( 
getMTProviderStorageKey() );
+   if (
+   [ disableMT, noMT, sourceMT 
].indexOf( storedMTProvider ) >= 0 || MTControlCard.providers.indexOf( 
storedMTProvider ) >= 0
+   ) {
+   MTControlCard.provider = 
storedMTProvider;
+   } else {
+   MTControlCard.provider = 
MTControlCard.providers[ 0 ];
+   }
}
} )
.fail( function ( response ) {
@@ -116,6 +125,17 @@
response.responseText
);
} );
+   }
+
+   /**
+* Get the localStorage key for the MT preference
+*
+* @return {string} The storage key.
+*/
+   function getMTProviderStorageKey() {
+   return [
+   'cxMTProvider', mw.cx.sourceLanguage, 
mw.cx.targetLanguage
+   ].join( '-' );
}
 
/**
@@ -371,7 +391,6 @@
$providerItem.addClass( 'selected' );
 
// Set the global engine
-   // TODO: This should be saved in a preference or a cookie
if ( MTControlCard.provider !== providerId ) {
MTControlCard.provider = providerId;
// Apply this choice to the current section.
@@ -383,6 +402,10 @@
// Must be an MT engine. Restore.
this.restoreTranslation();
}
+
+   // Save the current provider
+   mw.storage.set( getMTProviderStorageKey(), providerId );
+
}
// Set the main label
this.$providerSelectorTrigger.text( this.getProviderTitle( 
providerId ) );
@@ -433,9 +456,13 @@
};
 
MTControlCard.prototype.buildProvidersMenu = function () {
-   var provider, items, nonDefaultMT, newProvider = false;
+   var provider, items, nonDefaultMT, storedMTProvider, 
newProvider = false;
 
-   if ( MTControlCard.providers && MTControlCard.providers.length 
> 1 ) {
+   storedMTProvider = mw.storage.get( getMTProviderStorageKey() );
+   if ( MTControlCard.providers &&
+