From: Brian Wolff Date: Wed, 21 Aug 2013 17:00:47 +0000 (-0700) Subject: Make last row of new gallery not be huge. X-Git-Tag: 1.31.0-rc.0~18867^2 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/gestion/rappel_supprimer.php?a=commitdiff_plain;h=3c87c311cf36689de8562b708bde36697e3f726e;p=lhc%2Fweb%2Fwiklou.git Make last row of new gallery not be huge. If we cannot make the last row fit the page width, make the image zoom factor be the average zoom factor (sans any shrinking) so that the last row doesn't have images that are super huge. Change-Id: I0caf8d1800808f14c9f53073f3b901eedec32bb7 --- diff --git a/resources/mediawiki.page/mediawiki.page.gallery.js b/resources/mediawiki.page/mediawiki.page.gallery.js index fd2af40752..ddf63a853a 100644 --- a/resources/mediawiki.page/mediawiki.page.gallery.js +++ b/resources/mediawiki.page/mediawiki.page.gallery.js @@ -94,7 +94,9 @@ $caption, hookInfo, i, - j; + j, + avgZoom, + totalZoom = 0; for ( i = 0; i < rows.length; i++ ) { maxWidth = $gallery.width(); @@ -135,7 +137,19 @@ // code, would prevent accidentally expanding to // be 10 billion pixels wide. mw.log( 'mw.page.gallery: Cannot fit row, aspect is ' + preferredHeight/curRowHeight ); - preferredHeight = 1.5 * curRowHeight; + if ( i === rows.length - 1 ) { + // If its the last row, and we can't fit it, + // don't make the entire row huge. + avgZoom = ( totalZoom / ( rows.length - 1 ) ) * curRowHeight; + if ( isFinite( avgZoom ) && avgZoom >= 1 && avgZoom <= 1.5 ) { + preferredHeight = avgZoom; + } else { + // Probably a single row gallery + preferredHeight = curRowHeight; + } + } else { + preferredHeight = 1.5 * curRowHeight; + } } if ( !isFinite( preferredHeight ) ) { // This *definitely* should not happen. @@ -150,6 +164,14 @@ // Skip this row. continue; } + + if ( preferredHeight / curRowHeight > 1 ) { + totalZoom += preferredHeight / curRowHeight; + } else { + // If we shrink, still consider that a zoom of 1 + totalZoom += 1; + } + for ( j = 0; j < curRow.length; j++ ) { newWidth = preferredHeight * curRow[j].aspect; padding = curRow[j].width - curRow[j].imgWidth;