From 7a6611d172748d371d72de83f57fe0b3382c0164 Mon Sep 17 00:00:00 2001 From: solonovamax Date: Sun, 15 Dec 2024 15:15:15 -0500 Subject: [PATCH] feat(files_sharing): Add opengraph meta tags for multimedia, change opengraph type to website - Adds the following opengraph tags - images: - `og:image:type`: the mimetype of the image file - audio: - `og:audio`: a direct link to the audio file - `og:audio:type`: the mimetype of the audio file - video: - `og:video`: a direct link to the video file - `og:video:type`: the mimetype of the video file - Changes th `og:type` meta tag from `object` (which is not valid) to `website` Signed-off-by: solonovamax --- .../lib/DefaultPublicShareTemplateProvider.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php index d87b3582faea9..37a2c951026fb 100644 --- a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php +++ b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php @@ -236,8 +236,20 @@ protected function addMetaHeaders(IShare $share): void { Util::addHeader('meta', ['property' => 'og:description', 'content' => $description]); Util::addHeader('meta', ['property' => 'og:site_name', 'content' => $siteName]); Util::addHeader('meta', ['property' => 'og:url', 'content' => $shareUrl]); - Util::addHeader('meta', ['property' => 'og:type', 'content' => 'object']); - Util::addHeader('meta', ['property' => 'og:image', 'content' => $ogPreview]); + Util::addHeader('meta', ['property' => 'og:type', 'content' => 'website']); + Util::addHeader('meta', ['property' => 'og:image', 'content' => $ogPreview]); // recommended to always have the image + if ($shareNode->getMimePart() === 'image') { + Util::addHeader('meta', ['property' => 'og:image:type', 'content' => $shareNode->getMimeType()]); + } elseif ($shareNode->getMimePart() === 'audio') { + $audio = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadshare', ['token' => $token]); + Util::addHeader('meta', ['property' => 'og:audio', 'content' => $audio]); + Util::addHeader('meta', ['property' => 'og:audio:type', 'content' => $shareNode->getMimeType()]); + } elseif ($shareNode->getMimePart() === 'video') { + $video = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadshare', ['token' => $token]); + Util::addHeader('meta', ['property' => 'og:video', 'content' => $video]); + Util::addHeader('meta', ['property' => 'og:video:type', 'content' => $shareNode->getMimeType()]); + } + // Twitter Support: https://developer.x.com/en/docs/x-for-websites/cards/overview/markup Util::addHeader('meta', ['property' => 'twitter:title', 'content' => $title]);