Add audioplayer framework

This commit is contained in:
Sebastian Meyer 2016-05-23 14:23:39 +02:00
parent a3b679c783
commit 941ddec666
9 changed files with 360 additions and 86 deletions

View File

@ -1758,6 +1758,12 @@ final class tx_dlf_document {
}
if (!empty($extConf['fileGrpAudio'])) {
$useGrps[] = $extConf['fileGrpAudio'];
}
// Get all file groups.
$fileGrps = $this->mets->xpath('./mets:fileSec/mets:fileGrp');

View File

@ -45,6 +45,7 @@ return array (
'tx_dlf_tcemain' => $extensionPath.'hooks/class.tx_dlf_tcemain.php',
'tx_dlf_modIndexing' => $extensionPath.'modules/indexing/index.php',
'tx_dlf_modNewclient' => $extensionPath.'modules/newclient/index.php',
'tx_dlf_audioplayer' => $extensionPath.'plugins/audioplayer/class.tx_dlf_audioplayer.php',
'tx_dlf_collection' => $extensionPath.'plugins/collection/class.tx_dlf_collection.php',
'tx_dlf_feeds' => $extensionPath.'plugins/feeds/class.tx_dlf_feeds.php',
'tx_dlf_listview' => $extensionPath.'plugins/listview/class.tx_dlf_listview.php',

View File

@ -31,6 +31,9 @@ fileGrpDownload = DOWNLOAD
# cat=Files; type=string; label=LLL:EXT:dlf/locallang.xml:config.fileGrpFulltext
fileGrpFulltext = FULLTEXT
# cat=Files; type=string; label=LLL:EXT:dlf/locallang.xml:config.fileGrpAudio
fileGrpAudio = AUDIO
# cat=Solr; type=user[EXT:dlf/hooks/class.tx_dlf_em.php:tx_dlf_em->checkSolrConnection]; label=LLL:EXT:dlf/locallang.xml:config.solrConnect
solrConnect = 0

View File

@ -136,6 +136,7 @@
<label index="tx_dlf_toolbox.toolsPdf">PDF Download</label>
<label index="tx_dlf_toolbox.toolsFulltext">Fulltext</label>
<label index="tx_dlf_toolbox.toolsImagemanipulation">Image Manipulation</label>
<label index="tt_content.dlf_audioplayer">DLF: Audio Player</label>
<label index="tt_content.dlf_collection">DLF: Collection</label>
<label index="tt_content.dlf_feeds">DLF: Feeds</label>
<label index="tt_content.dlf_listview">DLF: List View</label>
@ -161,6 +162,7 @@
<label index="config.fileGrpThumbs">Thumbnail fileGrp: @USE attribute value (default is "THUMBS")</label>
<label index="config.fileGrpDownload">Download fileGrp: @USE attribute value (default is "DOWNLOAD")</label>
<label index="config.fileGrpFulltext">Fulltext fileGrp: @USE attribute value (default is "FULLTEXT")</label>
<label index="config.fileGrpAudio">Audio fileGrp: @USE attribute value (default is "AUDIO")</label>
<label index="config.solrConnect">Solr Connection</label>
<label index="config.solrHost">Solr Server Host: (default is "localhost")</label>
<label index="config.solrPort">Solr Server Port: (default is "8180")</label>
@ -316,6 +318,7 @@
<label index="tx_dlf_toolbox.toolsPdf">PDF-Download</label>
<label index="tx_dlf_toolbox.toolsFulltext">Volltext</label>
<label index="tx_dlf_toolbox.toolsImagemanipulation">Bildbearbeitung</label>
<label index="tt_content.dlf_audioplayer">DLF: Audioplayer</label>
<label index="tt_content.dlf_collection">DLF: Kollektion</label>
<label index="tt_content.dlf_feeds">DLF: Feeds</label>
<label index="tt_content.dlf_listview">DLF: Listenansicht</label>
@ -341,6 +344,7 @@
<label index="config.fileGrpThumbs">Vorschau fileGrp: @USE Attributwert der Vorschaubilder (Standard ist "THUMBS")</label>
<label index="config.fileGrpDownload">Download fileGrp: @USE Attributwert der Downloads (Standard ist "DOWNLOAD")</label>
<label index="config.fileGrpFulltext">Volltext fileGrp: @USE Attributwert der Volltexte (Standard ist "FULLTEXT")</label>
<label index="config.fileGrpAudio">Audio fileGrp: @USE Attributwert der Audiodateien (Standard ist "AUDIO")</label>
<label index="config.solrConnect">Solr Verbindung</label>
<label index="config.solrHost">Solr Server Host: (Standard ist "localhost")</label>
<label index="config.solrPort">Solr Server Port: (Standard ist "8180")</label>

View File

@ -0,0 +1,170 @@
<?php
/***************************************************************
* Copyright notice
*
* (c) 2016 Kitodo. Key to digital objects e.V. <contact@kitodo.org>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* [CLASS/FUNCTION INDEX of SCRIPT]
*/
/**
* Plugin 'DLF: Audioplayer' for the 'dlf' extension.
*
* @author Sebastian Meyer <sebastian.meyer@slub-dresden.de>
* @package TYPO3
* @subpackage tx_dlf
* @access public
*/
class tx_dlf_audioplayer extends tx_dlf_plugin {
public $scriptRelPath = 'plugins/audioplayer/class.tx_dlf_audioplayer.php';
/**
* Holds the current audio file's URL and MIME type
*
* @var array
* @access protected
*/
protected $audio = array ();
/**
* Adds Player javascript
*
* @access protected
*
* @return string Player script tags ready for output
*/
protected function addPlayerJS() {
$output = array ();
// $this->audio holds an array with URL and MIME type of the audio file.
// $this->audio = array ('url' => URL, 'mimetype' => MIME type)
return implode("\n", $output);
}
/**
* Get audio's URL and MIME type
*
* @access protected
*
* @param integer $page: Page number
*
* @return array URL and MIME type of audio file
*/
protected function getAudio($page) {
// Get audio link.
if (!empty($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$this->conf['fileGrpAudio']])) {
$this->audio['url'] = $this->doc->getFileLocation($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$this->conf['fileGrpAudio']]);
$this->audio['mimetype'] = $this->doc->getFileMimeType($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$this->conf['fileGrpAudio']]);
break;
} else {
if (TYPO3_DLOG) {
\TYPO3\CMS\Core\Utility\GeneralUtility::devLog('[tx_dlf_audioplayer->getAudio('.$page.')] File not found in fileGrp "'.$this->conf['fileGrpAudio'].'"', $this->extKey, SYSLOG_SEVERITY_WARNING);
}
}
return $this->audio;
}
/**
* The main method of the PlugIn
*
* @access public
*
* @param string $content: The PlugIn content
* @param array $conf: The PlugIn configuration
*
* @return string The content that is displayed on the website
*/
public function main($content, $conf) {
$this->init($conf);
// Load current document.
$this->loadDocument();
if ($this->doc === NULL || $this->doc->numPages < 1) {
// Quit without doing anything if required variables are not set.
return $content;
} else {
// Set default values if not set.
// page may be integer or string (physical page attribute)
if ( (int)$this->piVars['page'] > 0 || empty($this->piVars['page'])) {
$this->piVars['page'] = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange((int)$this->piVars['page'], 1, $this->doc->numPages, 1);
} else {
$this->piVars['page'] = array_search($this->piVars['page'], $this->doc->physicalPages);
}
$this->piVars['double'] = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange($this->piVars['double'], 0, 1, 0);
}
// Load template file.
if (!empty($this->conf['templateFile'])) {
$this->template = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['templateFile']), '###TEMPLATE###');
} else {
$this->template = $this->cObj->getSubpart($this->cObj->fileResource('EXT:dlf/plugins/audioplayer/template.tmpl'), '###TEMPLATE###');
}
// Get audio data.
$this->audio = $this->getAudio($this->piVars['page']);
// Fill in the template markers.
$markerArray = array (
'###PLAYER_JS###' => $this->addPlayerJS()
);
$content .= $this->cObj->substituteMarkerArray($this->template, $markerArray);
return $this->pi_wrapInBaseClass($content);
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/plugins/audioplayer/class.tx_dlf_audioplayer.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/dlf/plugins/audioplayer/class.tx_dlf_audioplayer.php']);
}

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!--
Copyright notice
(c) 2016 Kitodo. Key to digital objects e.V. <contact@kitodo.org>
All rights reserved
This script is part of the TYPO3 project. The TYPO3 project is
free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
The GNU General Public License can be found at
http://www.gnu.org/copyleft/gpl.html.
This script is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This copyright notice MUST APPEAR in all copies of the script!
-->
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>LLL:EXT:dlf/plugins/audioplayer/locallang.xml:tt_content.pi_flexform.sheet_general</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<pages>
<TCEforms>
<exclude>1</exclude>
<label>LLL:EXT:lang/locallang_general.xml:LGL.startingpoint</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>1</minitems>
</config>
</TCEforms>
</pages>
<excludeOther>
<TCEforms>
<exclude>1</exclude>
<label>LLL:EXT:dlf/plugins/audioplayer/locallang.xml:tt_content.pi_flexform.excludeOther</label>
<config>
<type>check</type>
<default>1</default>
</config>
</TCEforms>
</excludeOther>
<elementId>
<TCEforms>
<exclude>1</exclude>
<label>LLL:EXT:dlf/plugins/audioplayer/locallang.xml:tt_content.pi_flexform.elementId</label>
<config>
<type>input</type>
<eval>required,alphanum_x,nospace</eval>
<default>tx-dlf-audio</default>
</config>
</TCEforms>
</elementId>
<templateFile>
<TCEforms>
<exclude>1</exclude>
<label>LLL:EXT:dlf/plugins/audioplayer/locallang.xml:tt_content.pi_flexform.templateFile</label>
<config>
<type>group</type>
<internal_type>file_reference</internal_type>
<allowed>tmpl,tpl,html,htm,txt</allowed>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
<disable_controls>upload</disable_controls>
</config>
</TCEforms>
</templateFile>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!--
Copyright notice
(c) 2016 Kitodo. Key to digital objects e.V. <contact@kitodo.org>
All rights reserved
This script is part of the TYPO3 project. The TYPO3 project is
free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
The GNU General Public License can be found at
http://www.gnu.org/copyleft/gpl.html.
This script is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This copyright notice MUST APPEAR in all copies of the script!
-->
<T3locallang>
<meta type="array">
<type>module</type>
<description>Language labels for plugin tx_dlf_audioplayer</description>
</meta>
<data type="array">
<languageKey index="default" type="array">
<label index="tt_content.pi_flexform.sheet_general">Options</label>
<label index="tt_content.pi_flexform.excludeOther">Show only documents from the selected page</label>
<label index="tt_content.pi_flexform.elementId">@ID value of the HTML element for the audio player</label>
<label index="tt_content.pi_flexform.templateFile">Template file</label>
</languageKey>
<languageKey index="de" type="array">
<label index="tt_content.pi_flexform.sheet_general">Einstellungen</label>
<label index="tt_content.pi_flexform.excludeOther">Nur Dokumente der ausgewählten Seite anzeigen</label>
<label index="tt_content.pi_flexform.elementId">@ID-Wert des HTML-Elements für den Audioplayer</label>
<label index="tt_content.pi_flexform.templateFile">HTML-Template</label>
</languageKey>
</data>
</T3locallang>

View File

@ -0,0 +1,26 @@
<!--
Copyright notice
(c) 2016 Kitodo. Key to digital objects e.V. <contact@kitodo.org>
All rights reserved
This script is part of the TYPO3 project. The TYPO3 project is
free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
The GNU General Public License can be found at
http://www.gnu.org/copyleft/gpl.html.
This script is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This copyright notice MUST APPEAR in all copies of the script!
-->
<!-- ###TEMPLATE### -->
<div id="tx-dlf-audio" class="tx-dlf-audio"></div>
###PLAYER_JS###
<!-- ###TEMPLATE### -->

View File

@ -46,14 +46,6 @@ class tx_dlf_pageview extends tx_dlf_plugin {
*/
protected $controls = array ();
/**
* Flag if fulltexts are present
*
* @var boolean
* @access protected
*/
protected $hasFulltexts = false;
/**
* Holds the current images' URLs and MIME types
*
@ -70,36 +62,6 @@ class tx_dlf_pageview extends tx_dlf_plugin {
*/
protected $fulltexts = array ();
/**
* Holds the language code for OpenLayers
*
* @var string
* @access protected
*/
protected $lang = 'en';
/**
* Adds OpenLayers javascript
*
* @access protected
*
* @return string OpenLayers script tags ready for output.
*/
protected function addOpenLayersJS() {
$output = array ();
// Add OpenLayers library.
$output[] = '<link type="text/css" rel="stylesheet" href="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'lib/OpenLayers/ol3.css">';
$output[] = '<script type="text/javascript" src="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'lib/OpenLayers/glif.min.js"></script>';
$output[] = '<script type="text/javascript" src="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'lib/OpenLayers/ol3-dlf.js"></script>';
return implode("\n", $output);
}
/**
* Adds Viewer javascript
*
@ -115,7 +77,11 @@ class tx_dlf_pageview extends tx_dlf_plugin {
tx_dlf_helper::loadJQuery();
// Add OpenLayers library.
$output[] = $this->addOpenLayersJS();
$output[] = '<link type="text/css" rel="stylesheet" href="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'lib/OpenLayers/ol3.css">';
$output[] = '<script type="text/javascript" src="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'lib/OpenLayers/glif.min.js"></script>';
$output[] = '<script type="text/javascript" src="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'lib/OpenLayers/ol3-dlf.js"></script>';
// Add viewer library.
$output[] = '<script type="text/javascript" src="'.\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::siteRelPath($this->extKey).'plugins/pageview/tx_dlf_utils.js"></script>';
@ -207,33 +173,24 @@ class tx_dlf_pageview extends tx_dlf_plugin {
$fulltext = array ();
// Get @USE value of METS fileGrp.
$fileGrpFulltext = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->conf['fileGrpFulltext']);
// Get fulltext link.
if (!empty($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$this->conf['fileGrpFulltext']])) {
while ($fileGrpFulltext = @array_pop($fileGrpFulltext)) {
$fulltext['url'] = $this->doc->getFileLocation($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$this->conf['fileGrpFulltext']]);
// Get fulltext link.
if (!empty($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$fileGrpFulltext])) {
// Build typolink configuration array.
// @TODO change hardcoded path to real typolink configuration
$fulltext['url'] = '/index.php?eID=tx_dlf_fulltext_eid&url='.$fulltext['url'];
$fulltext['url'] = $this->doc->getFileLocation($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$fileGrpFulltext]);
$fulltext['mimetype'] = $this->doc->getFileMimeType($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$this->conf['fileGrpFulltext']]);
// Build typolink configuration array.
// @TODO change hardcoded path to real typolink configuration
$fulltext['url'] = '/index.php?eID=tx_dlf_fulltext_eid&url='.$fulltext['url'];
break;
$fulltext['mimetype'] = $this->doc->getFileMimeType($this->doc->physicalPagesInfo[$this->doc->physicalPages[$page]]['files'][$fileGrpFulltext]);
} else {
$this->hasFulltexts = true;
if (TYPO3_DLOG) {
break;
} else {
if (TYPO3_DLOG) {
\TYPO3\CMS\Core\Utility\GeneralUtility::devLog('[tx_dlf_pageview->getFulltext('.$page.')] File not found in fileGrp "'.$fileGrp.'"', $this->extKey, SYSLOG_SEVERITY_WARNING);
}
\TYPO3\CMS\Core\Utility\GeneralUtility::devLog('[tx_dlf_pageview->getFulltext('.$page.')] File not found in fileGrp "'.$this->conf['fileGrpFulltext'].'"', $this->extKey, SYSLOG_SEVERITY_WARNING);
}
@ -243,32 +200,6 @@ class tx_dlf_pageview extends tx_dlf_plugin {
}
/**
* Get map controls
*
* @access protected
*
* @return array Array of control keywords
*/
protected function getMapControls() {
$controls = explode(',', $this->conf['features']);
// Sanitize input.
foreach ($controls as $key => $control) {
if (empty($this->controlDependency[$control])) {
unset ($controls[$key]);
}
}
return $controls;
}
/**
* The main method of the PlugIn
*
@ -332,7 +263,7 @@ class tx_dlf_pageview extends tx_dlf_plugin {
}
// Get the controls for the map.
$this->controls = $this->getMapControls();
$this->controls = explode(',', $this->conf['features']);
// Fill in the template markers.
$markerArray = array (