Santhosh has uploaded a new change for review.

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


Change subject: Fix text change detection in IE
......................................................................

Fix text change detection in IE

Introduce textchange event that get triggered when something changed
on input fields.

Bug: 47019
Change-Id: Ib5a7fecdf3cc42c7f5463bb03cae2326e1a3afbc
---
M Resources.php
M resources/js/ext.translate.editor.js
M resources/js/ext.translate.messagetable.js
A resources/js/jquery.textchange.js
4 files changed, 52 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/87/58287/1

diff --git a/Resources.php b/Resources.php
index c8bdce0..e8fd0dc 100644
--- a/Resources.php
+++ b/Resources.php
@@ -52,6 +52,7 @@
                'mediawiki.jqueryMsg',
                'jquery.makeCollapsible',
                'jquery.tipsy',
+               'jquery.textchange',
        ),
        'messages' => array(
                'tux-status-translated',
@@ -142,6 +143,7 @@
                'mediawiki.jqueryMsg',
                'ext.translate.parsers',
                'ext.translate.loader',
+               'jquery.textchange',
        ),
        'messages' => array(
                'translate-messagereview-submit',
@@ -349,3 +351,7 @@
 $wgResourceModules['jquery.autoresize'] = array(
        'scripts' => 'resources/js/jquery.autoresize.js',
 ) + $resourcePaths;
+
+$wgResourceModules['jquery.textchange'] = array(
+       'scripts' => 'resources/js/jquery.textchange.js',
+) + $resourcePaths;
diff --git a/resources/js/ext.translate.editor.js 
b/resources/js/ext.translate.editor.js
index 5b6bd98..610b864 100644
--- a/resources/js/ext.translate.editor.js
+++ b/resources/js/ext.translate.editor.js
@@ -376,7 +376,7 @@
                                        lang: $messageList.data( 
'targetlangcode' ),
                                        dir: $messageList.data( 'targetlangdir' 
)
                                } )
-                               .on( 'input propertychange', function () {
+                               .on( 'textchange', function () {
                                        var $this = $( this );
 
                                        if ( originalTranslation !== null ) {
@@ -396,7 +396,7 @@
                                        }
                                } );
 
-                       $textArea.on( 'input propertychange', function () {
+                       $textArea.on( 'textchange', function () {
                                var $textArea = $( this ),
                                        $saveButton = 
translateEditor.$editor.find( '.tux-editor-save-button' ),
                                        $pasteSourceButton = 
translateEditor.$editor.find( '.tux-editor-paste-original-button' ),
@@ -670,7 +670,7 @@
                                                        .attr( {
                                                                placeholder: 
mw.msg( 'tux-editor-doc-editor-placeholder' )
                                                        } )
-                                                       .on( 'input 
propertychange', function () {
+                                                       .on( 'textchange', 
function () {
                                                                
$messageDescSaveButton.prop( 'disabled', false );
                                                        } ),
                                                $( '<div>' )
diff --git a/resources/js/ext.translate.messagetable.js 
b/resources/js/ext.translate.messagetable.js
index 143e59b..3aae108 100644
--- a/resources/js/ext.translate.messagetable.js
+++ b/resources/js/ext.translate.messagetable.js
@@ -83,7 +83,7 @@
                                $( '.tux-action-bar' ).width( $( 
'.tux-messagelist' ).width() );
                        } );
 
-                       $( '.tux-message-filter-box' ).on( 'input 
propertychange', function () {
+                       $( '.tux-message-filter-box' ).on( 'textchange', 
function () {
                                delay( messageTable.search( $( this ).val() ), 
300 );
                        } );
 
diff --git a/resources/js/jquery.textchange.js 
b/resources/js/jquery.textchange.js
new file mode 100644
index 0000000..266e060
--- /dev/null
+++ b/resources/js/jquery.textchange.js
@@ -0,0 +1,42 @@
+/*
+ * Trigger a textchange event text change in input fields.
+ * And make it cross browser compatible
+ * @author Santhosh Thottingal, 2013
+ * @see https://gist.github.com/mkelly12/424774
+ */
+( function ( $ ) {
+       'use strict';
+
+       $.event.special.textchange = {
+
+               setup: function () {
+                       $( this ).data( 'lastValue', $( this ).val() );
+                       $( this ).on( 'keyup.textchange', 
$.event.special.textchange.handler );
+                       $( this ).on( 'cut.textchange paste.textchange 
input.textchange', $.event.special.textchange.delayedHandler );
+               },
+
+               teardown: function () {
+                       $( this ).unbind( '.textchange' );
+               },
+
+               handler: function () {
+                       $.event.special.textchange.triggerIfChanged( $( this ) 
);
+               },
+
+               delayedHandler: function () {
+                       var element = $( this );
+                       setTimeout( function () {
+                               $.event.special.textchange.triggerIfChanged( 
element );
+                       }, 25 );
+               },
+
+               triggerIfChanged: function ( element ) {
+                       var current = element.val();
+                       if ( current !== element.data( 'lastValue' ) ) {
+                               element.trigger( 'textchange', [ element.data( 
'lastValue' ) ] );
+                               element.data( 'lastValue', current );
+                       }
+               }
+       };
+
+} )( jQuery );

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

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