jenkins-bot has submitted this change and it was merged.

Change subject: Support for image resizing
......................................................................


Support for image resizing

This reverts commit 10a271a82adbf3462d37c6e82939102fc2d4daa1.

Change-Id: Id95de48c956dcb9ad6dd62f81bee6ce68d793cb0
---
M js/lib/ext.core.LinkHandler.js
M js/lib/mediawiki.WikitextSerializer.js
M js/tests/mockAPI.js
M js/tests/parserTests.txt
4 files changed, 45 insertions(+), 19 deletions(-)

Approvals:
  GWicke: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/js/lib/ext.core.LinkHandler.js b/js/lib/ext.core.LinkHandler.js
index 6311c8b..47978e3 100644
--- a/js/lib/ext.core.LinkHandler.js
+++ b/js/lib/ext.core.LinkHandler.js
@@ -446,12 +446,10 @@
 function handleDims( height, width, info, dataAttribs ) {
        if ( info.height ) {
                height = info.height;
-               dataAttribs.img.h = height;
        }
 
        if ( info.width ) {
                width = info.width;
-               dataAttribs.img.w = width;
        }
 
        if ( info.thumburl && info.thumbheight ) {
@@ -461,7 +459,10 @@
        if ( info.thumburl && info.thumbwidth ) {
                width = info.thumbwidth;
        }
-
+       // Keep final size of the image in dataAttribs so it can be used on the 
way back to compare with
+       // new size (width and height of img tag) to detect if image was 
resized.
+       dataAttribs.img.h = height;
+       dataAttribs.img.w = width;
        return {
                h: height,
                w: width
diff --git a/js/lib/mediawiki.WikitextSerializer.js 
b/js/lib/mediawiki.WikitextSerializer.js
index 03f0e60..22cb06c 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -1105,6 +1105,14 @@
                        }
                        break;
 
+               /* TODO: Cleanup - size, width and height should be combined 
into one option */
+               case 'size':
+                       cb( optName.replace(
+                               '$1',
+                               optVal + 'x' + optVal
+                       ) );
+                       break;
+
                case 'width':
                        val = DU.getAttributeShadowInfo( imgnode, 'width' );
 
@@ -1153,6 +1161,17 @@
                }
        }
        return false;
+};
+
+WSP.removeOpt = function ( opts, optName ) {
+       var ix;
+
+       for ( ix = 0; ix < opts.length; ix++ ) {
+               if ( opts[ix].ck === optName ) {
+                       opts = opts.splice( ix, 1 );
+                       return;
+               }
+       }
 };
 
 // XXX: This should probably be refactored. -rsmith
@@ -1341,22 +1360,19 @@
                htAttr = imgnode.getAttribute( 'height' );
                wdAttr = imgnode.getAttribute( 'width' );
 
-               if ( htAttr && !this.hasOpt( opts, 'height' ) ) {
+               // Detect image size change
+               if ( !dp.img.h || !dp.img.w || dp.img.h.toString() !== 
htAttr.toString() || dp.img.w.toString() !== wdAttr.toString() ) {
+                       // If size of the image was changed handle it as a 
'size' option and remove two other
+                       // options - 'height' and 'width'.
+                       this.removeOpt( opts, 'height' );
+                       this.removeOpt( opts, 'width' );
+
                        dp.img.htset = true;
-
-                       opts.push( {
-                               ck: 'height',
-                               v: 'x' + htAttr,
-                               ak: mwAliases.img_width.last()
-                       } );
-               }
-
-               if ( wdAttr && !this.hasOpt( opts, 'width' ) ) {
                        dp.img.wdset = true;
 
                        opts.push( {
-                               ck: 'width',
-                               v: wdAttr,
+                               ck: 'size',
+                               v: Math.max( htAttr, wdAttr ),
                                ak: mwAliases.img_width.last()
                        } );
                }
diff --git a/js/tests/mockAPI.js b/js/tests/mockAPI.js
index 60c58fc..9dbe2ff 100644
--- a/js/tests/mockAPI.js
+++ b/js/tests/mockAPI.js
@@ -100,12 +100,12 @@
 
                        if ( twidth ) {
                                if ( theight === undefined || theight === null 
) {
-                                       theight = Math.ceil( height * ( twidth 
/ width ) );
+                                       theight = Math.round( height * twidth / 
width );
                                } else {
-                                       if ( Math.ceil( height * ( twidth / 
width ) ) > theight ) {
-                                               twidth = Math.ceil( width * ( 
theight / height ) );
+                                       if ( Math.round( height * twidth / 
width ) > theight ) {
+                                               twidth = Math.ceil( width * 
theight / height );
                                        } else {
-                                               theight = Math.ceil( height * ( 
twidth / width ) );
+                                               theight = Math.round( height * 
twidth / width );
                                        }
                                }
 
diff --git a/js/tests/parserTests.txt b/js/tests/parserTests.txt
index 2f0c471..36ca53d 100644
--- a/js/tests/parserTests.txt
+++ b/js/tests/parserTests.txt
@@ -15808,6 +15808,15 @@
 </p>
 !!end
 
+!! test
+Image: Modyfing size of an imge
+!! options
+parsoid=html2wt
+!! input
+[[Image:Wiki.png|230x230px]]
+!! result
+<p data-parsoid='{"dsr":[0,24,0,0]}'><span typeof="mw:Image" 
data-parsoid='{"optList":[{"ck":"width","ak":"100px"}],"cacheKey":"[[Image:Wiki.png|100px]]","img":{"h":115,"w":100,"wdset":true},"dsr":[0,24,null,null]}'><a
 href="./File:Wiki.png" data-parsoid='{"a":{"href":"./File:Wiki.png"}}'><img 
resource="./File:Wiki.png" 
src="//upload.wikimedia.org/wikipedia/en/thumb/b/bc/Wiki.png/100px-Wiki.png" 
height="230" width="200" 
data-parsoid='{"a":{"resource":"./File:Wiki.png"},"sa":{"resource":"Image:Wiki.png"}}'></a></span></p>
+!!end
 
 TODO:
 more images

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Id95de48c956dcb9ad6dd62f81bee6ce68d793cb0
Gerrit-PatchSet: 11
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Inez <i...@wikia-inc.com>
Gerrit-Reviewer: GWicke <gwi...@wikimedia.org>
Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to