Skip to content

Commit

Permalink
Enable plaintext transcripts for audio objects
Browse files Browse the repository at this point in the history
  • Loading branch information
jkphl committed Dec 28, 2021
1 parent 5841ca2 commit 2165a73
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 31 deletions.
87 changes: 87 additions & 0 deletions Classes/ViewHelpers/StructuredData/PlaintextViewHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?php

/**
* tollwerk
*
* @category Tollwerk
* @package Tollwerk\TwBase
* @subpackage Tollwerk\TwBase\ViewHelpers\StructuredData
* @author Joschi Kuphal <[email protected]> / @jkphl
* @copyright Copyright © 2019 Joschi Kuphal <[email protected]> / @jkphl
* @license http://opensource.org/licenses/MIT The MIT License (MIT)
*/

/***********************************************************************************
* The MIT License (MIT)
*
* Copyright © 2019 Joschi Kuphal <[email protected]>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
***********************************************************************************/

namespace Tollwerk\TwBase\ViewHelpers\StructuredData;

use Closure;
use Soundasleep\Html2Text;
use Soundasleep\Html2TextException;
use TYPO3\CMS\Extbase\Object\Exception;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;

/**
* Convert Markup to serializable plaintext
*
* @package Tollwerk\TwBase
* @subpackage Tollwerk\TwBase\ViewHelpers
*/
class PlaintextViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;

/**
* Create an ID reference
*
* @param array $arguments
* @param Closure $renderChildrenClosure
* @param RenderingContextInterface $renderingContext
*
* @return mixed
* @throws Exception|Html2TextException
*/
public static function renderStatic(
array $arguments,
Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
) {
return Html2Text::convert($arguments['text'] ?? $renderChildrenClosure());
}

/**
* Initialize all arguments. You need to override this method and call
* $this->registerArgument(...) inside this method, to register all your arguments.
*
* @return void
* @api
*/
public function initializeArguments()
{
parent::initializeArguments();
$this->registerArgument('text', 'string', 'Text', false, null);
}
}
60 changes: 32 additions & 28 deletions Resources/Private/Partials/Media/Rendering/Audioplus.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,41 +37,41 @@

<base:structuredData.entityContext.wrap id="{structuredDataId}">
<audio controls preload="metadata">
<f:for each="{sources}" as="source">
<f:variable name="latestSource" value="{source.publicUrl}"/>
<source src="{latestSource}" type="{source.mimeType}">
<base:structuredData.add id="{structuredDataId}" key="contentUrl"
value="{f:uri.image(image: source, absolute: 1)}"/>
<base:structuredData.add id="{structuredDataId}" key="encoding" value="{
<f:for each="{sources}" as="source">
<f:variable name="latestSource" value="{source.publicUrl}"/>
<source src="{latestSource}" type="{source.mimeType}">
<base:structuredData.add id="{structuredDataId}" key="contentUrl"
value="{f:uri.image(image: source, absolute: 1)}"/>
<base:structuredData.add id="{structuredDataId}" key="encoding" value="{
'@type': 'MediaObject',
contentUrl: '{f:uri.image(image: source, absolute: 1)}',
encodingFormat: source.mimeType
}"/>
</f:for>
<f:for each="{tracks}" as="track">
<f:if condition="{track.data.kind} == 'transcript'">
<f:else if="{track.data.render}">
<f:variable name="label" value="{f:if(
</f:for>
<f:for each="{tracks}" as="track">
<f:if condition="{track.data.kind} == 'transcript'">
<f:else if="{track.data.render}">
<f:variable name="label" value="{f:if(
condition: track.file.0.originalFile.metaData.title,
then: track.file.0.originalFile.metaData.title,
else: '{track.data.kind} ({track.data.language})'
)}"/>
<track label="{label}" src="{track.file.0.publicUrl}" kind="{track.data.kind}"
srclang="{track.data.language}"/>
<track label="{label}" src="{track.file.0.publicUrl}" kind="{track.data.kind}"
srclang="{track.data.language}"/>
</f:else>
</f:if>
</f:for>
<f:if condition="{data.bodytext}">
<f:then>
<f:format.html>{data.bodytext}</f:format.html>
</f:then>
<f:else>
<p>
<f:translate key="LLL:EXT:tw_base/Resources/Private/Language/locallang.xlf:audio.fallback"
arguments="{0: latestSource}"/>
</p>
</f:else>
</f:if>
</f:for>
<f:if condition="{data.bodytext}">
<f:then>
<f:format.html>{data.bodytext}</f:format.html>
</f:then>
<f:else>
<p>
<f:translate key="LLL:EXT:tw_base/Resources/Private/Language/locallang.xlf:audio.fallback"
arguments="{0: latestSource}"/>
</p>
</f:else>
</f:if>
</audio>
<f:render partial="Media/Rendering/Mediasource" optional="true" arguments="{
author: sources.0.originalFile.properties.tx_twbase_author,
Expand All @@ -85,9 +85,13 @@
}"/>
<f:variable name="transcripts" value="{}"/>
<f:for each="{tracks}" as="track">
<f:if condition="({track.data.kind} == 'transcript') && {track.data.render}">
<f:variable name="transcripts"
value="{base:collection.push(a: transcripts, b: '{0: track.data}')}"/>
<f:if condition="({track.data.kind} == 'transcript')">
<f:if condition="{track.data.render}">
<f:variable name="transcripts"
value="{base:collection.push(a: transcripts, b: '{0: track.data}')}"/>
</f:if>
<base:structuredData.add id="{structuredDataId}" key="transcript"
value="{track.data.transcript -> base:structuredData.plaintext()}"/>
</f:if>
<f:if condition="{track.data.kind} == 'captions'">
<f:variable name="mimeType">
Expand Down
10 changes: 7 additions & 3 deletions Resources/Private/Partials/Media/Rendering/Videoplus.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,13 @@
}"/>
<f:variable name="transcripts" value="{}"/>
<f:for each="{tracks}" as="track">
<f:if condition="({track.data.kind} == 'transcript') && {track.data.render}">
<f:variable name="transcripts"
value="{base:collection.push(a: transcripts, b: '{0: track.data}')}"/>
<f:if condition="({track.data.kind} == 'transcript')">
<f:if condition="{track.data.render}">
<f:variable name="transcripts"
value="{base:collection.push(a: transcripts, b: '{0: track.data}')}"/>
</f:if>
<base:structuredData.add id="{structuredDataId}" key="transcript"
value="{track.data.transcript -> base:structuredData.plaintext()}"/>
</f:if>
<f:if condition="{track.data.kind} == 'captions'">
<f:variable name="mimeType">
Expand Down

0 comments on commit 2165a73

Please sign in to comment.