diff --git a/Classes/ViewHelpers/Format/SecondsToISO8601ViewHelper.php b/Classes/ViewHelpers/Format/SecondsToISO8601ViewHelper.php new file mode 100644 index 0000000..84e3a3a --- /dev/null +++ b/Classes/ViewHelpers/Format/SecondsToISO8601ViewHelper.php @@ -0,0 +1,62 @@ + 60 * 60 * 24, + 'H' => 60 * 60, + 'M' => 60, + 'S' => 1, + ]; + + $pt = 'P'; + $result = ''; + foreach ($intervals as $tag => $divisor) { + $qty = floor($seconds / $divisor); + if (!$qty && $result === '') { + $pt = 'T'; + continue; + } + $seconds -= $qty * $divisor; + $result .= $qty . $tag; + } + + if ($result === '') { + $result = '0S'; + } + + return $pt . $result; + } +} diff --git a/Classes/ViewHelpers/VideoCreationDateViewHelper.php b/Classes/ViewHelpers/VideoCreationDateViewHelper.php new file mode 100644 index 0000000..f0cfee4 --- /dev/null +++ b/Classes/ViewHelpers/VideoCreationDateViewHelper.php @@ -0,0 +1,75 @@ +registerArgument( + 'fileReference', + 'object', + 'FileReference to be used for creating the preview image' + ); + } + + /** + * Returns the absolute web path to the preview image. + * + * @param array $arguments + * @param \Closure $renderChildrenClosure + * @param RenderingContextInterface $renderingContext + * @return int + * @throws \UnexpectedValueException + */ + public static function renderStatic( + array $arguments, + \Closure $renderChildrenClosure, + RenderingContextInterface $renderingContext + ): int { + /** @var FileReference|ExtbaseFileReference $fileReference */ + $fileReference = $arguments['fileReference']; + + // get Resource Object (non ExtBase version) + if (is_callable([$fileReference, 'getOriginalResource'])) { + // We have a domain model, so we need to fetch the FAL resource object from there + $fileReference = $fileReference->getOriginalResource(); + } + if (!($fileReference instanceof FileInterface || $fileReference instanceof AbstractFileFolder)) { + throw new \UnexpectedValueException('Supplied file object type ' . get_class($fileReference) . ' must be FileInterface or AbstractFileFolder.', 1454252193); + } + $file = $fileReference->getOriginalFile(); + if ($file->getProperty('content_creation_date')) { + return $file->getProperty('content_creation_date'); + } + if ($file->getProperty('creation_date')) { + return $file->getProperty('creation_date'); + } + if ($file->getProperty('crdate')) { + return $file->getProperty('crdate'); + } + return 0; + } +} diff --git a/Classes/ViewHelpers/VideoPublicUrlViewHelper.php b/Classes/ViewHelpers/VideoPublicUrlViewHelper.php new file mode 100644 index 0000000..bfa6abd --- /dev/null +++ b/Classes/ViewHelpers/VideoPublicUrlViewHelper.php @@ -0,0 +1,73 @@ +registerArgument( + 'fileReference', + 'object', + 'FileReference to be used for creating the preview image' + ); + } + + /** + * Returns the absolute web path to the preview image. + * + * @param array $arguments + * @param \Closure $renderChildrenClosure + * @param RenderingContextInterface $renderingContext + * @return string + * @throws \UnexpectedValueException + */ + public static function renderStatic( + array $arguments, + \Closure $renderChildrenClosure, + RenderingContextInterface $renderingContext + ): string { + /** @var FileReference|ExtbaseFileReference $fileReference */ + $fileReference = $arguments['fileReference']; + + // get Resource Object (non ExtBase version) + if (is_callable([$fileReference, 'getOriginalResource'])) { + // We have a domain model, so we need to fetch the FAL resource object from there + $fileReference = $fileReference->getOriginalResource(); + } + if (!($fileReference instanceof FileInterface || $fileReference instanceof AbstractFileFolder)) { + throw new \UnexpectedValueException('Supplied file object type ' . get_class($fileReference) . ' must be FileInterface or AbstractFileFolder.', 1454252193); + } + $file = $fileReference->getOriginalFile(); + $helper = OnlineMediaHelperRegistry::getInstance()->getOnlineMediaHelper($file); + if ($helper) { + $publicUrl = $helper->getPublicUrl($file); + } else { + $publicUrl = ''; + } + return $publicUrl; + } +} diff --git a/Resources/Private/Extensions/fluid_styled_content/Partials/Media/Type/Video.html b/Resources/Private/Extensions/fluid_styled_content/Partials/Media/Type/Video.html index 9295aed..7327a59 100644 --- a/Resources/Private/Extensions/fluid_styled_content/Partials/Media/Type/Video.html +++ b/Resources/Private/Extensions/fluid_styled_content/Partials/Media/Type/Video.html @@ -4,9 +4,11 @@ data-namespace-typo3-fluid="true"> + + -
+
@@ -14,7 +16,8 @@ + alt="{file.title}" + additionalAttributes="{itemprop:'thumbnailUrl'}"/>
@@ -29,9 +32,50 @@
-
- {file.description} -
+ +
+ {file.description} +
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +