]> git.mxchange.org Git - friendica-addons.git/commitdiff
Version 1.03
authorGrischa Brockhaus <github@brockha.us>
Sun, 4 Dec 2022 23:54:04 +0000 (00:54 +0100)
committerGrischa Brockhaus <github@brockha.us>
Sun, 4 Dec 2022 23:54:04 +0000 (00:54 +0100)
* imgages in body-attach with title / alt attribute get them removed while adding fancy attributes
* Added fancybox to image inlined in posts. Un-hooked the old lightbox from frio and vier and excahnged that with fancybox hooks.
* Excluded images in "type-link" divs from being "fancied" as they have no images but pages linked to.

fancybox/CHANGELOG.md
fancybox/asset/fancybox/fancybox.config.js
fancybox/createrelease
fancybox/fancybox.php

index 60edc6357bb6de6308f678a5820dc02c972c2fbd..3d676c0c96d9bb71f5a2e53545a802594535015f 100644 (file)
@@ -1,3 +1,13 @@
+### Version 1.03
+
+* imgages in body-attach with title / alt attribute get them removed while adding fancy attributes
+* Added fancybox to image inlined in posts. Un-hooked the old lightbox from frio and vier and excahnged that with fancybox hooks.
+* Excluded images in "type-link" divs from being "fancied" as they have no images but pages linked to. 
+
+### Version 1.02
+
+* [MrPetovan](https://github.com/MrPetovan) optimized my noob regular expression code. 
+
 ### Version 1.01
 
 * One gallery for each post
index 904390d5ad02b0d3b6283809049819b8c394e044..6ac5d9c55cd5c204658d20ee2ef184835eeb430b 100644 (file)
@@ -1,3 +1,4 @@
 $(document).ready(function() {
     $.fancybox.defaults.loop = "true";
+    $("body").off("click", ".wall-item-body a img");
 });
\ No newline at end of file
index 6760c242e70ec38ba83880917828136e3e2cc4a5..238828d69d849edded3ed9ec01d48865bd16a82e 100755 (executable)
@@ -11,7 +11,7 @@ rm $MODULE/dist/*
 # create release for actual version
 zip -r9 $MODULE/dist/release.zip $MODULE/* -x $MODULE/dist/\* -x $MODULE/test/\* $MODULE/createrelease
 
-echo release/release.zip created.
+echo dist/release.zip created.
 
 cd $MODULE
 
index f3a566a5061a3337a6f650bffb758141c4c6e72a..1400a75c63d5e13ad25356a9e7743cdbd5f02527 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Name: Fancybox
  * Description: Open media attachments of posts into a fancybox overlay.
- * Version: 1.01
+ * Version: 1.03
  * Author: Grischa Brockhaus <grischa@brockha.us>
  */
 
@@ -28,27 +28,43 @@ function fancybox_footer(App $a, string &$str)
        DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/fancybox.config.js');
 }
 
-function fancybox_render(App $a, array &$b)
-{
-       $matches = [];
-       $pattern = '#<div class="body-attach">.*?</div>#s';
-       $gallery = 'gallery';
-       if (array_key_exists('item', $b)) {
-               $item = $b['item'];
-               if (array_key_exists('uri-id', $item)) {
-                       $gallery = $gallery . '-' . $item['uri-id'];
-               }
-       }
-       $html = $b['html'];
-       while (preg_match($pattern, $html, $matches, PREG_OFFSET_CAPTURE)) {
-               if (is_array($matches)) {
-                       $matches = $matches[0];
-               }
-               $part     = $matches[0];
-               $replaced = str_replace('<a href', '<a data-fancybox="' . $gallery . '" href', $part);
-               $replaced = str_replace('<div class="body-attach"', '<div class="body-attach done"', $replaced);
-               $html     = str_replace($part, $replaced, $html);
+function fancybox_render($a, array &$b){
+       $gallery = 'gallery-' . $b['item']['uri-id'] ?? random_int(1000000, 10000000);
+
+       // prevent urls in <div class="type-link"> to be replaced
+       $b['html'] = preg_replace_callback(
+               '#<div class="type-link">.*?</div>#s',
+               function ($matches) use ($gallery) {
+                       return str_replace('<a href', '<a data-nofancybox="" href', $matches[0]);
+               },
+               $b['html']
+       );
+
+       // This processes images inlined in posts
+       // Frio / Vier hooks für lightbox are un-hooked in fancybox-config.js. So this works for them, too!
+       //if (!in_array($a->getCurrentTheme(),['vier','frio']))
+       {
+               // normal post inline linked images
+               $b['html'] = preg_replace_callback(
+                       '#<a[^>]*href="([^"]*)"[^>]*>(<img[^>]*src="[^"]*"[^>]*>)</a>#',
+                       function ($matches)  use ($gallery) {
+                               // don't touch URLS marked as not "fancyable".. ;-)
+                               if (preg_match('#data-nofancybox#', $matches[0]))
+                               {
+                                       return $matches[0];
+                               }
+                               return '<a data-fancybox="' . $gallery . '" href="'. $matches[1] .'">' . $matches[2] .'</a>';
+                       },
+                       $b['html']
+               );
        }
-       $html      = str_replace('class="body-attach done"', 'class="body-attach"', $html);
-       $b['html'] = $html;
+
+       // Local content images attached:
+       $b['html'] = preg_replace_callback(
+               '#<div class="body-attach">.*?</div>#s',
+               function ($matches) use ($gallery) {
+                       return str_replace('<a href', '<a data-fancybox="' . $gallery . '" href', $matches[0]);
+               },
+               $b['html']
+       );
 }