Changes added because of good remarks by hypolite@friendica.mrpetovan.com

pull/1327/head
Grischa Brockhaus 2022-12-05 12:46:18 +01:00
parent 4e7da2799c
commit c6d09e5270
2 changed files with 24 additions and 33 deletions

View File

@ -1,4 +1,5 @@
$(document).ready(function() { $(document).ready(function() {
$.fancybox.defaults.loop = "true"; $.fancybox.defaults.loop = "true";
// this disables the colorbox hook found in frio/js/modal.js:34
$("body").off("click", ".wall-item-body a img"); $("body").off("click", ".wall-item-body a img");
}); });

View File

@ -28,43 +28,33 @@ function fancybox_footer(App $a, string &$str)
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/fancybox.config.js'); DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/fancybox.config.js');
} }
function fancybox_render($a, array &$b){ function fancybox_render(App $a, array &$b){
$gallery = 'gallery-' . $b['item']['uri-id'] ?? random_int(1000000, 10000000); $gallery = 'gallery-' . $b['item']['uri-id'] ?? random_int(1000000, 10000000);
// prevent urls in <div class="type-link"> to be replaced // performWithEscapedBlocks escapes block defined with 2nd par pattern that won't be processed.
$b['html'] = preg_replace_callback( // We don't want to touch images in class="type-link":
$b['html'] = \Friendica\Util\Strings::performWithEscapedBlocks(
$b['html'],
'#<div class="type-link">.*?</div>#s', '#<div class="type-link">.*?</div>#s',
function ($matches) use ($gallery) { function ($text) use ($gallery) {
return str_replace('<a href', '<a data-nofancybox="" href', $matches[0]); // 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!
$b['html'] //if (!in_array($a->getCurrentTheme(),['vier','frio']))
); $text = preg_replace(
'#<a[^>]*href="([^"]*)"[^>]*>(<img[^>]*src="[^"]*"[^>]*>)</a>#',
'<a data-fancybox="' . $gallery . '" href="$1">$2</a>',
$text);
// This processes images inlined in posts // Local content images attached:
// Frio / Vier hooks für lightbox are un-hooked in fancybox-config.js. So this works for them, too! $text = preg_replace_callback(
//if (!in_array($a->getCurrentTheme(),['vier','frio'])) '#<div class="body-attach">.*?</div>#s',
{ function ($matches) use ($gallery) {
// normal post inline linked images return str_replace('<a href', '<a data-fancybox="' . $gallery . '" href', $matches[0]);
$b['html'] = preg_replace_callback( },
'#<a[^>]*href="([^"]*)"[^>]*>(<img[^>]*src="[^"]*"[^>]*>)</a>#', $text
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']
);
}
// Local content images attached: return $text;
$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']
); );
} }