Audio attachments are now displayed as audio elements

This commit is contained in:
Michael 2021-04-05 09:15:36 +00:00
parent e928063529
commit 7e0d21b5bb
2 changed files with 67 additions and 44 deletions

View file

@ -2643,50 +2643,7 @@ class Item
return $s;
}
$as = '';
$vhead = false;
foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::DOCUMENT, Post\Media::TORRENT, Post\Media::UNKNOWN]) as $attachment) {
$mime = $attachment['mimetype'];
$author = ['uid' => 0, 'id' => $item['author-id'],
'network' => $item['author-network'], 'url' => $item['author-link']];
$the_url = Contact::magicLinkByContact($author, $attachment['url']);
if (strpos($mime, 'video') !== false) {
if (!$vhead) {
$vhead = true;
DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('videos_head.tpl'));
}
$as .= Renderer::replaceMacros(Renderer::getMarkupTemplate('video_top.tpl'), [
'$video' => [
'id' => $item['author-id'],
'title' => DI::l10n()->t('View Video'),
'src' => $the_url,
'mime' => $mime,
],
]);
}
$filetype = strtolower(substr($mime, 0, strpos($mime, '/')));
if ($filetype) {
$filesubtype = strtolower(substr($mime, strpos($mime, '/') + 1));
$filesubtype = str_replace('.', '-', $filesubtype);
} else {
$filetype = 'unkn';
$filesubtype = 'unkn';
}
$title = Strings::escapeHtml(trim(($attachment['description'] ?? '') ?: $attachment['url']));
$title .= ' ' . ($attachment['size'] ?? 0) . ' ' . DI::l10n()->t('bytes');
$icon = '<div class="attachtype icon s22 type-' . $filetype . ' subtype-' . $filesubtype . '"></div>';
$as .= '<a href="' . strip_tags($the_url) . '" title="' . $title . '" class="attachlink" target="_blank" rel="noopener noreferrer" >' . $icon . '</a>';
}
if ($as != '') {
$s .= '<div class="body-attach">'.$as.'<div class="clear"></div></div>';
}
$s = self::addMediaAttachments($item, $s);
// Map.
if (strpos($s, '<div class="map">') !== false && !empty($item['coord'])) {
@ -2710,6 +2667,68 @@ class Item
return $hook_data['html'];
}
/**
* Add media attachments to the content
*
* @param array $item
* @param string $content
* @return modified content
*/
private static function addMediaAttachments(array $item, string $content)
{
$attached = '';
foreach (Post\Media::getByURIId($item['uri-id'], [Post\Media::DOCUMENT, Post\Media::TORRENT, Post\Media::UNKNOWN]) as $attachment) {
$mime = $attachment['mimetype'];
$author = ['uid' => 0, 'id' => $item['author-id'],
'network' => $item['author-network'], 'url' => $item['author-link']];
$the_url = Contact::magicLinkByContact($author, $attachment['url']);
$filetype = strtolower(substr($mime, 0, strpos($mime, '/')));
if ($filetype) {
$filesubtype = strtolower(substr($mime, strpos($mime, '/') + 1));
$filesubtype = str_replace('.', '-', $filesubtype);
} else {
$filetype = 'unkn';
$filesubtype = 'unkn';
}
if (($filetype == 'video')) {
$attached .= Renderer::replaceMacros(Renderer::getMarkupTemplate('video_top.tpl'), [
'$video' => [
'id' => $item['author-id'],
'src' => $the_url,
'mime' => $mime,
],
]);
} elseif ($filetype == 'audio') {
$attached .= Renderer::replaceMacros(Renderer::getMarkupTemplate('audio.tpl'), [
'$audio' => [
'id' => $item['author-id'],
'src' => $the_url,
'mime' => $mime,
],
]);
} else {
$title = Strings::escapeHtml(trim(($attachment['description'] ?? '') ?: $attachment['url']));
if (!empty($attachment['size'])) {
$title .= ' ' . $attachment['size'] . ' ' . DI::l10n()->t('bytes');
}
/// @todo Use a template
$icon = '<div class="attachtype icon s22 type-' . $filetype . ' subtype-' . $filesubtype . '"></div>';
$attached .= '<a href="' . strip_tags($the_url) . '" title="' . $title . '" class="attachlink" target="_blank" rel="noopener noreferrer" >' . $icon . '</a>';
}
}
if ($attached != '') {
$content .= '<div class="body-attach">' . $attached . '<div class="clear"></div></div>';
}
return $content;
}
/**
* get private link for item
*

4
view/templates/audio.tpl Normal file
View file

@ -0,0 +1,4 @@
<audio src="{{$audio.src}}" controls>
<a href="{{$audio.src}}">{{$audio.src}}</a>
</audio>
<br>