Automattic / newspack-blocks

Gutenberg blocks for the Newspack project.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Image scale set in gutenberg editor not respected without photon

grasbauer opened this issue · comments

Is your feature request related to a problem? Please describe.
I'm always frustrated when [...] :) I be forced to use external Services.

Describe the solution you'd like
Respect the ImageScale setting available in Gutenberg Editor

Describe alternatives you've considered
see diff

--- a/wp-content/plugins/newspack-blocks/includes/class-newspack-blocks.php
+++ b/wp-content/plugins/newspack-blocks/includes/class-newspack-blocks.php
@@ -413,7 +413,7 @@ class Newspack_Blocks {
 	 *
 	 * @return string Returns the thumbnail key to use.
 	 */
-	public static function image_size_for_orientation( $orientation = 'landscape' ) {
+	public static function image_size_for_orientation( $orientation = 'landscape', $scale = false ) {
 		$sizes = array(
 			'landscape' => array(
 				'large'  => array(
@@ -469,7 +469,23 @@ class Newspack_Blocks {
 					200,
 				),
 			),
-		);
+        );
+
+      if ($scale) {
+
+        $scale = (intval($scale) - 1);
+        $candidates = array_reverse(array_keys($sizes[ $orientation ]));
+
+        $key = $candidates[$scale];
+        $attachment = wp_get_attachment_image_src(
+            get_post_thumbnail_id( get_the_ID() ),
+            'newspack-article-block-' . $orientation . '-' . $key
+        );
+
+        if ( ! empty( $attachment )) {
+            return 'newspack-article-block-' . $orientation . '-' . $key;
+            }
+        }
 
 		foreach ( $sizes[ $orientation ] as $key => $dimensions ) {
 			$attachment = wp_get_attachment_image_src(
--- a/wp-content/plugins/newspack-blocks/src/blocks/homepage-articles/templates/article.php
+++ b/wp-content/plugins/newspack-blocks/src/blocks/homepage-articles/templates/article.php
@@ -32,8 +32,8 @@ call_user_func(
 			$styles = 'min-height: ' . $attributes['minHeight'] . 'vh; padding-top: ' . ( $attributes['minHeight'] / 5 ) . 'vh;';
 		}
 		$image_size = 'newspack-article-block-uncropped';
-		if ( has_post_thumbnail() && 'uncropped' !== $attributes['imageShape'] ) {
-			$image_size = Newspack_Blocks::image_size_for_orientation( $attributes['imageShape'] );
+        if ( has_post_thumbnail() && 'uncropped' !== $attributes['imageShape'] ) {
+            $image_size = Newspack_Blocks::image_size_for_orientation( $attributes['imageShape'], $attributes['imageScale'] );
 		}
 		$thumbnail_args = array(
 			'data-hero-candidate' => true,

(Sorry for the wrong indent - I'm a python developer and do not find which code style you are using.)

I think the Homepage-Articles should respect an explicitly set ImageScale. This can also be the source of further computation at photon.