[MediaWiki-commits] [Gerrit] MT: Store the MT provider preference in localstorage - change (mediawiki...ContentTranslation)
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 @@ $providerItem.ad
[MediaWiki-commits] [Gerrit] MT: Store the MT provider preference in localstorage - change (mediawiki...ContentTranslation)
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 && + MTControlCa