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

Reply via email to