Santhosh has uploaded a new change for review. https://gerrit.wikimedia.org/r/54827
Change subject: (Bug 46237) - [TUX] "You have unsaved changes" warning broken ...................................................................... (Bug 46237) - [TUX] "You have unsaved changes" warning broken Change-Id: I958d9ca420100b0bedd919955283149d1bd3c23e --- M Resources.php M resources/js/ext.translate.base.js M resources/js/ext.translate.editor.js M resources/js/ext.translate.special.translate.js 4 files changed, 32 insertions(+), 33 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate refs/changes/27/54827/1 diff --git a/Resources.php b/Resources.php index c34acd7..591ea7d 100644 --- a/Resources.php +++ b/Resources.php @@ -22,6 +22,9 @@ 'mediawiki.util', 'mediawiki.api', ), + 'messages' => array( + 'translate-js-support-unsaved-warning', + ), ) + $resourcePaths; $wgResourceModules['ext.translate.editor'] = array( @@ -295,7 +298,6 @@ 'translate-workflow-set-done', 'translate-workflowstatus', 'translate-workflow-set-error-alreadyset', - 'translate-js-support-unsaved-warning', 'translate-documentation-language', 'translate-workflow-state-', 'tpt-discouraged-language-force', diff --git a/resources/js/ext.translate.base.js b/resources/js/ext.translate.base.js index 4ccc5c7..5d917dd 100644 --- a/resources/js/ext.translate.base.js +++ b/resources/js/ext.translate.base.js @@ -4,6 +4,7 @@ mw.translate = mw.translate || {}; mw.translate = $.extend( mw.translate, { + dirty: false, // A cache for language stats loaded from API, // indexed by language code languagestats: {}, @@ -94,4 +95,28 @@ return mw.config.get( 'TranslateMessageReviewRight' ); } } ); + + /** + * A warning to be shown if a user tries to close the page or navigate away + * from it without saving the written translation. + */ + function translateOnBeforeUnloadRegister() { + pageShowHandler(); + $( window ).on( 'pageshow.translate', pageShowHandler ); + } + + function pageShowHandler() { + $( window ).on( 'beforeunload.translate', function () { + if ( $( '.mw-ajax-dialog:visible' ).length // For old Translate + || mw.translate.dirty // For new Translate + ) { + // Return our message + return mw.msg( 'translate-js-support-unsaved-warning' ); + } + } ); + } + + $( document ).ready( function () { + translateOnBeforeUnloadRegister(); + } ); }( jQuery, mediaWiki ) ); diff --git a/resources/js/ext.translate.editor.js b/resources/js/ext.translate.editor.js index b896f67..1d8698f 100644 --- a/resources/js/ext.translate.editor.js +++ b/resources/js/ext.translate.editor.js @@ -155,6 +155,8 @@ if ( translateEditor.options.onSave ) { translateEditor.options.onSave( translation ); } + + mw.translate.dirty = false; } ).fail( function ( errorCode, results ) { translateEditor.savingError( results.error.info ); @@ -356,7 +358,7 @@ } translateEditor.dirty = true; - + mw.translate.dirty = true; // Expand the text area height as content grows while ( $this.outerHeight() < this.scrollHeight + @@ -377,6 +379,7 @@ // is not changed in content. if ( translationMessage === $textArea.val() ) { translateEditor.dirty = false; + mw.translate.dirty = true; } $saveButton.text( mw.msg( 'tux-editor-save-button-label' ) ); diff --git a/resources/js/ext.translate.special.translate.js b/resources/js/ext.translate.special.translate.js index 899d6cf..1112f53 100644 --- a/resources/js/ext.translate.special.translate.js +++ b/resources/js/ext.translate.special.translate.js @@ -187,36 +187,6 @@ } } ); - /** - * A warning to be shown if a user tries to close the page or navigate away - * from it without saving the written translation. - * - * Based on editWarning from the Vector extension, but greatly - * simplified. - */ - function ourWindowOnBeforeUnloadRegister() { - pageShowHandler(); - - if ( window.addEventListener ) { - window.addEventListener( 'pageshow', pageShowHandler, false ); - } else if ( window.attachEvent ) { - window.attachEvent( 'pageshow', pageShowHandler ); - } - - } - - function pageShowHandler() { - // Re-add onbeforeunload handler - window.onbeforeunload = ourWindowOnBeforeUnload; - } - - function ourWindowOnBeforeUnload() { - if ( $( '.mw-ajax-dialog:visible' ).length ) { - // Return our message - return mw.msg( 'translate-js-support-unsaved-warning' ); - } - } - // Returns an array of jQuery objects of rows of translated // and proofread messages in the TUX editors. // Used several times. @@ -297,7 +267,6 @@ targetLanguage = $messageList.data( 'targetlangcode' ) // for tux=1 || mw.config.get( 'wgUserLanguage' ); // for tux=0 - ourWindowOnBeforeUnloadRegister(); prepareWorkflowSelector(); $( '.ext-translate-msggroup-selector .grouplink' ).msggroupselector( { onSelect: mw.translate.changeGroup -- To view, visit https://gerrit.wikimedia.org/r/54827 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I958d9ca420100b0bedd919955283149d1bd3c23e 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