mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-09 18:08:49 +00:00
AddOn Fancybox
This addon loads all media attachments of a post into a "fancybox" instead of linking directly to the media. Each post gets its own attachment library, when there are more than one media attached you can scroll through them.
This commit is contained in:
parent
30329df0dd
commit
ae28f6ef01
15 changed files with 6761 additions and 0 deletions
61
fancybox/fancybox.php
Normal file
61
fancybox/fancybox.php
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Fancybox
|
||||
* Description: Open media attachments of posts into a fancybox overlay.
|
||||
* Version: 1.01
|
||||
* Author: Grischa Brockhaus <grischa@brockha.us>
|
||||
*/
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\DI;
|
||||
|
||||
function fancybox_install()
|
||||
{
|
||||
Hook::register('head', __FILE__, 'fancybox_head');
|
||||
Hook::register('footer', __FILE__, 'fancybox_footer');
|
||||
Hook::register('prepare_body_final', __FILE__, 'fancybox_render');
|
||||
}
|
||||
|
||||
function fancybox_head(App $a, string &$b)
|
||||
{
|
||||
DI::page()->registerStylesheet(__DIR__ . '/asset/fancybox/jquery.fancybox.min.css');
|
||||
}
|
||||
function fancybox_footer(App $a, string &$str)
|
||||
{
|
||||
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/jquery.fancybox.min.js');
|
||||
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/fancybox.config.js');
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
prepare_body_final
|
||||
|
||||
Called at the end of prepare_body(). Hook data:
|
||||
|
||||
item: item array (input)
|
||||
html: converted item body (input/output)
|
||||
|
||||
*/
|
||||
|
||||
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);
|
||||
}
|
||||
$html = str_replace('class="body-attach done"', 'class="body-attach"', $html);
|
||||
$b['html'] = $html;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue