]> git.mxchange.org Git - friendica.git/commitdiff
Revert "Merge pull request #13463 from MrPetovan/task/imagegrid-improvement"
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 24 Sep 2023 20:24:28 +0000 (16:24 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sun, 24 Sep 2023 20:24:28 +0000 (16:24 -0400)
This reverts commit dd7bea4bd146acf52086d303fce34a83d52f2516, reversing
changes made to ce16cd12ec4646413581f5ade6487387f56723e3.

src/Model/Item.php
src/Model/Post/Media.php
src/Model/Profile.php
src/Module/Photo.php
view/global.css
view/templates/content/image.tpl
view/templates/content/image_grid.tpl
view/theme/frio/scheme/black.css
view/theme/frio/scheme/dark.css
view/theme/frio/templates/search_item.tpl
view/theme/frio/templates/wall_thread.tpl

index 5d2f7ca3c87f43c09f212f582f26589cfb64904b..41aae04134374ef0a0a7b504d5f991556f0e1518 100644 (file)
@@ -33,7 +33,6 @@ use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Post\Category;
-use Friendica\Model\Post\Media;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\ActivityPub;
@@ -3274,65 +3273,25 @@ class Item
        }
 
        /**
-        * Creates a horizontally masoned gallery with a fixed maximum number of pictures per row.
-        *
-        * For each row, we calculate how much of the total width each picture will take depending on their aspect ratio
-        * and how much relative height it needs to accomodate all pictures next to each other with their height normalized.
-        *
         * @param array $images
         * @return string
         * @throws \Friendica\Network\HTTPException\ServiceUnavailableException
         */
        private static function makeImageGrid(array $images): string
        {
-               static $column_size = 2;
-
-               $rows = array_map(
-                       function (array $row_images) {
-                               if ($singleImageInRow = count($row_images) == 1) {
-                                       $row_images[] = $row_images[0];
-                               }
-
-                               $widths = [];
-                               $heights = [];
-                               foreach ($row_images as $image) {
-                                       $widths[] = $image['attachment']['width'];
-                                       $heights[] = $image['attachment']['height'];
-                               }
-
-                               $maxHeight = max($heights);
-
-                               // Corrected height preserving aspect ratio when all images on a row are
-                               $correctedWidths = [];
-                               foreach ($widths as $i => $width) {
-                                       $correctedWidths[] = $width * $maxHeight / $heights[$i];
-                               }
-
-                               $totalWidth = array_sum($correctedWidths);
-
-                               foreach ($row_images as $i => $image) {
-                                       $row_images[$i]['gridWidth'] = $correctedWidths[$i];
-                                       $row_images[$i]['gridHeight'] = $maxHeight;
-                                       $row_images[$i]['heightRatio'] = 100 * $maxHeight / $correctedWidths[$i];
-                                       // Ratio of the width of the image relative to the total width of the images on the row
-                                       $row_images[$i]['widthRatio'] = 100 * $correctedWidths[$i] / $totalWidth;
-                                       // This magic value will stay constant for each image of any given row and
-                                       // is ultimately used to determine the height of the row container
-                                       $row_images[$i]['commonHeightRatio'] = 100 * $correctedWidths[$i] / $totalWidth / ($widths[$i] / $heights[$i]);
-                               }
-
-                               if ($singleImageInRow) {
-                                       unset($row_images[1]);
-                               }
+               // Image for first column (fc) and second column (sc)
+               $images_fc = [];
+               $images_sc = [];
 
-                               return $row_images;
-                       },
-                       array_chunk($images, $column_size)
-               );
+               for ($i = 0; $i < count($images); $i++) {
+                       ($i % 2 == 0) ? ($images_fc[] = $images[$i]) : ($images_sc[] = $images[$i]);
+               }
 
                return Renderer::replaceMacros(Renderer::getMarkupTemplate('content/image_grid.tpl'), [
-                       '$rows' => $rows,
-                       '$column_size' => $column_size,
+                       'columns' => [
+                               'fc' => $images_fc,
+                               'sc' => $images_sc,
+                       ],
                ]);
        }
 
@@ -3350,20 +3309,7 @@ class Item
                        if (empty($attachment['preview']) || ($attachment['type'] != Post\Media::IMAGE)) {
                                continue;
                        }
-
-                       $pattern = '#<a href="' . preg_quote($attachment['url']) . '">(.*?)"></a>#';
-
-                       $s = preg_replace_callback($pattern, function () use ($attachment, $uri_id) {
-                               return Renderer::replaceMacros(Renderer::getMarkupTemplate('content/image.tpl'), [
-                                       '$image' => [
-                                               'src' => $attachment['url'],
-                                               'uri_id' => $uri_id,
-                                               'attachment' => $attachment,
-                                       ],
-                                       '$allocated_height' => Media::getAllocatedHeightByMedia($attachment),
-                                       '$allocated_max_width' => ($attachment['preview-width'] ?? $attachment['width']) . 'px',
-                               ]);
-                       }, $s);
+                       $s = str_replace('<a href="' . $attachment['url'] . '"', '<a data-fancybox="' . $uri_id . '" href="' . $attachment['url'] . '"', $s);
                }
                return $s;
        }
@@ -3478,10 +3424,8 @@ class Item
 
                        if ($attachment['filetype'] == 'image') {
                                $preview_url = Post\Media::getPreviewUrlForId($attachment['id'], ($attachment['width'] > $attachment['height']) ? Proxy::SIZE_MEDIUM : Proxy::SIZE_LARGE);
-                               $attachment['preview-width'] = ($attachment['width'] > $attachment['height']) ? Proxy::PIXEL_MEDIUM : Proxy::PIXEL_LARGE;
                        } elseif (!empty($attachment['preview'])) {
                                $preview_url = Post\Media::getPreviewUrlForId($attachment['id'], Proxy::SIZE_LARGE);
-                               $attachment['preview-width'] = Proxy::PIXEL_LARGE;
                        } else {
                                $preview_url = '';
                        }
@@ -3525,7 +3469,6 @@ class Item
                                if (self::containsLink($item['body'], $src_url)) {
                                        continue;
                                }
-
                                $images[] = ['src' => $src_url, 'preview' => $preview_url, 'attachment' => $attachment, 'uri_id' => $item['uri-id']];
                        }
                }
@@ -3536,8 +3479,6 @@ class Item
                } elseif (count($images) == 1) {
                        $media = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/image.tpl'), [
                                '$image' => $images[0],
-                               '$allocated_height' => Media::getAllocatedHeightByMedia($images[0]['attachment']),
-                               '$allocated_max_width' => ($images[0]['attachment']['preview-width'] ?? $images[0]['attachment']['width']) . 'px',
                        ]);
                }
 
index 8a2c731a2f29d5548d6fba964b7d75c1105a0763..e0c8d3561fdae90f8fc8a805bca7577752c62405 100644 (file)
@@ -1169,15 +1169,4 @@ class Media
                }
                return $url . $id;
        }
-
-       /**
-        * Computes the allocated height value used in the content/image.tpl template based on a post-media record
-        *
-        * @param array $media A post-media record array
-        * @return string
-        */
-       public static function getAllocatedHeightByMedia(array $media): string
-       {
-               return (100 * $media['height'] / $media['width']) . '%';
-       }
 }
index 9c7aab54ad6aa1b59ed4f3e079415b562f08ad17..b80c83881adda94b03b4788306bbcd476d7a3019 100644 (file)
@@ -813,14 +813,12 @@ class Profile
 
        /**
         * Set the visitor cookies (see remote_user()) for signed HTTP requests
-        *
-        * @param array $server The content of the $_SERVER superglobal
+        (
         * @return array Visitor contact array
-        * @throws InternalServerErrorException
         */
-       public static function addVisitorCookieForHTTPSigner(array $server): array
+       public static function addVisitorCookieForHTTPSigner(): array
        {
-               $requester = HTTPSignature::getSigner('', $server);
+               $requester = HTTPSignature::getSigner('', $_SERVER);
                if (empty($requester)) {
                        return [];
                }
index be2408edf21c94f70be6bbc1493d1522c045f1bd..c8e0656d2df62ac9014697cdabd14a636ad73526 100644 (file)
@@ -77,7 +77,7 @@ class Photo extends BaseApi
                        throw new NotModifiedException();
                }
 
-               Profile::addVisitorCookieForHTTPSigner($this->server);
+               Profile::addVisitorCookieForHTTPSigner();
 
                $customsize = 0;
                $square_resize = true;
index 25fe653b780cc1ed7d1fe6625c4dc9ee92a65830..714bb55dbd7f029aade134a669d1275f7cbb889d 100644 (file)
@@ -685,28 +685,22 @@ audio {
 .imagegrid-row {
        display: -ms-flexbox; /* IE10 */
        display: flex;
-       /* Both the following values should be the same to ensure consistent margins between images in the grid */
+       margin-top: 1em;
        column-gap: 5px;
-       margin-top: 5px;
 }
 
-/* This helps allocating space for image before they loaded, preventing content shifting once they are
- * Inspired by https://www.smashingmagazine.com/2016/08/ways-to-reduce-content-shifting-on-page-load/
- * Please note: The space is effectively allocated using padding-bottom using the image ratio as a value.
- * In the image grid, this ratio isn't known in advance so no value is set in the stylesheet.
- */
-figure.img-allocated-height {
-       position: relative;
-       background: center / auto rgba(0, 0, 0, 0.05) url(/images/icons/image.png) no-repeat;
-       margin: 0;
+.imagegrid-column {
+       -ms-flex: 50%; /* IE10 */
+       flex: 50%;
+       display: -ms-flexbox; /* IE10 */
+       display: flex;
+       flex-direction: column;
+       row-gap: 5px;
 }
-figure.img-allocated-height img{
-       position: absolute;
-       top: 0;
-       right: 0;
-       bottom: 0;
-       left: 0;
-       width: 100%;
+
+.imagegrid-column img {
+       -ms-flex: 50%; /* IE10 */
+       flex: 50%;
 }
 /**
  * Image grid settings END
index f32d611ef43863041f3f65d485a52aa4886b56a0..00b1aac100ca38880e39b7160011088c002a3824 100644 (file)
@@ -1,20 +1,5 @@
-{{* The padding-top height allocation trick only works if the <figure> fills its parent's width completely or with flex. 🤷‍♂️
-       As a result, we need to add a wrapping element for non-flex (non-image grid) environments, mostly single-image cases.
- *}}
-{{if $allocated_max_width}}
-<div style="max-width: {{$allocated_max_width|default:"auto"}};">
-{{/if}}
-
-<figure class="img-allocated-height" style="width: {{$allocated_width|default:"auto"}}; padding-bottom: {{$allocated_height}}">
 {{if $image.preview}}
-       <a data-fancybox="{{$image.uri_id}}" href="{{$image.attachment.url}}">
-               <img src="{{$image.preview}}" alt="{{$image.attachment.description}}" title="{{$image.attachment.description}}">
-       </a>
+<a data-fancybox="{{$image.uri_id}}" href="{{$image.attachment.url}}"><img src="{{$image.preview}}" alt="{{$image.attachment.description}}" title="{{$image.attachment.description}}"></a>
 {{else}}
-       <img src="{{$image.src}}" alt="{{$image.attachment.description}}" title="{{$image.attachment.description}}">
-{{/if}}
-</figure>
-
-{{if $allocated_max_width}}
-</div>
+<img src="{{$image.src}}" alt="{{$image.attachment.description}}" title="{{$image.attachment.description}}">
 {{/if}}
index baf0dfd1d9ddeb64977298e17474171192c98da9..95e49ee3e186dbabf18c8e59c0a7660e512d4612 100644 (file)
@@ -1,12 +1,12 @@
-{{foreach $rows as $images}}
-       <div class="imagegrid-row" style="height: {{$images[0].commonHeightRatio}}%">
-       {{foreach $images as $image}}
-               {{* The absolute pixel value in the calc() should be mirrored from the .imagegrid-row column-gap value *}}
-        {{include file="content/image.tpl"
-            image=$image
-            allocated_height="calc(`$image.heightRatio * $image.widthRatio / 100`% - 5px / `$column_size`)"
-            allocated_width="`$image.widthRatio`%"
-        }}
-    {{/foreach}}
+<div class="imagegrid-row">
+       <div class="imagegrid-column">
+               {{foreach $columns.fc as $img}}
+                               {{include file="content/image.tpl" image=$img}}
+               {{/foreach}}
        </div>
-{{/foreach}}
+       <div class="imagegrid-column">
+               {{foreach $columns.sc as $img}}
+                               {{include file="content/image.tpl" image=$img}}
+               {{/foreach}}
+       </div>
+</div>
\ No newline at end of file
index 561f708a81b312951bdea12833b84a650dcbe7d2..debf9d99b3e12af2f6d5b23b97a245c310c67a8f 100644 (file)
@@ -394,7 +394,3 @@ input[type="text"].tt-input {
 textarea#profile-jot-text:focus + #preview_profile-jot-text, textarea.comment-edit-text:focus + .comment-edit-form .preview {
        border-color: $link_color;
 }
-
-figure.img-allocated-height {
-       background-color: rgba(255, 255, 255, 0.15);
-}
index 434681c5587a3e49e33eece3020e7c9f3b999631..add36fff1041d9eaac4a9b22cb2feed393cff8e6 100644 (file)
@@ -354,7 +354,3 @@ input[type="text"].tt-input {
 textarea#profile-jot-text:focus + #preview_profile-jot-text, textarea.comment-edit-text:focus + .comment-edit-form .preview {
        border-color: $link_color;
 }
-
-figure.img-allocated-height {
-       background-color: rgba(255, 255, 255, 0.05);
-}
index bdc2ca38401a41f8913b4279a9989087659bf7eb..2d130cab8063f79e80d516a14be623f36b2a8dce 100644 (file)
 
                                                {{if $item.ignore}}
                                                        <li role="menuitem">
-                                                               <a id="ignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classdo}}" title="{{$item.ignore.do}}"><i class="fa fa-bell-slash" aria-hidden="true"></i> {{$item.ignore.do}}</a>
+                                                               <a id="ignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classdo}}" title="{{$item.ignore.do}}"><i class="fa fa-eye-slash" aria-hidden="true"></i> {{$item.ignore.do}}</a>
                                                        </li>
                                                        <li role="menuitem">
-                                                               <a id="unignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classundo}}"  title="{{$item.ignore.undo}}"><i class="fa fa-bell" aria-hidden="true"></i> {{$item.ignore.undo}}</a>
+                                                               <a id="unignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classundo}}"  title="{{$item.ignore.undo}}"><i class="fa fa-eye" aria-hidden="true"></i> {{$item.ignore.undo}}</a>
                                                        </li>
                                                {{/if}}
 
index 00e738d9a01fb44c85ec5cc6456812b4e84e0c46..16494e1c0cf97684c003ab0cbdf37c78fc65e030 100644 (file)
@@ -381,10 +381,10 @@ as the value of $top_child_total (this is done at the end of this file)
 
                                         {{if $item.ignore}}
                                         <li role="menuitem">
-                                                <a id="ignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classdo}}" title="{{$item.ignore.do}}"><i class="fa fa-bell-slash" aria-hidden="true"></i> {{$item.ignore.do}}</a>
+                                                <a id="ignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classdo}}" title="{{$item.ignore.do}}"><i class="fa fa-eye-slash" aria-hidden="true"></i> {{$item.ignore.do}}</a>
                                         </li>
                                         <li role="menuitem">
-                                                <a id="unignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classundo}}"  title="{{$item.ignore.undo}}"><i class="fa fa-bell" aria-hidden="true"></i> {{$item.ignore.undo}}</a>
+                                                <a id="unignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classundo}}"  title="{{$item.ignore.undo}}"><i class="fa fa-eye" aria-hidden="true"></i> {{$item.ignore.undo}}</a>
                                         </li>
                                         {{/if}}
 
@@ -560,10 +560,10 @@ as the value of $top_child_total (this is done at the end of this file)
 
                                                        {{if $item.ignore}}
                                                                <li role="menuitem">
-                                                               <a id="ignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classdo}}" title="{{$item.ignore.do}}"><i class="fa fa-bell-slash" aria-hidden="true"></i> {{$item.ignore.do}}</a>
+                                                               <a id="ignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classdo}}" title="{{$item.ignore.do}}"><i class="fa fa-eye-slash" aria-hidden="true"></i> {{$item.ignore.do}}</a>
                                                        </li>
                                                                <li role="menuitem">
-                                                               <a id="unignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classundo}}"  title="{{$item.ignore.undo}}"><i class="fa fa-bell" aria-hidden="true"></i> {{$item.ignore.undo}}</a>
+                                                               <a id="unignore-{{$item.id}}" href="javascript:doIgnoreThread({{$item.id}});" class="btn-link {{$item.ignore.classundo}}"  title="{{$item.ignore.undo}}"><i class="fa fa-eye" aria-hidden="true"></i> {{$item.ignore.undo}}</a>
                                                        </li>
                                                        {{/if}}