From 7201eca540ec8f9036e02d9b48d4c008d6b03f1a Mon Sep 17 00:00:00 2001 From: Gregor Gawol <gawol@ub.uni-leipzig.de> Date: Mon, 29 Apr 2019 17:21:02 +0200 Subject: [PATCH] parent 8b696067d3684b2adfc3098588f61b061ced3f4a author Gregor Gawol <gawol@ub.uni-leipzig.de> 1556551262 +0200 committer Dorian Merz <merz@ub.uni-leipzig.de> 1558002326 +0200 refs #14878 [fid_bbi] modified record detail view * set kxp shard solr * added module fid_bbi * toggle isbn * some translations * link rvk-, bk- and ddc-notation * changed tab order * added permalink * added publisher link * added missing ini file * deactivated fid core module * fixed some vufind 5 bugs --- config/application.config.php | 16 +- fid_bbi/alpha/config/vufind/searches.ini | 2 +- fid_bbi/config/vufind/finc-fid-core-api.ini | 2 + fid_bbi/config/vufind/searches.ini | 17 - fid_bbi/languages/de.ini | 10 +- fid_bbi/languages/en.ini | 6 + module/fid_bbi/Module.php | 92 +++ module/fid_bbi/config/module.config.php | 111 +++ .../src/fid_bbi/RecordDriver/Factory.php | 0 .../Root/RecordDataFormatterFactory.php | 715 ++++++++++++++++++ .../RecordDriver/SolrDefault/core.phtml | 56 ++ .../RecordDriver/SolrDefault/data-isbn.phtml | 20 + .../SolrDefault/data-publicationDetails.phtml | 27 + .../RecordDriver/SolrDefault/link-bk.phtml | 1 + .../RecordDriver/SolrDefault/link-ddc.phtml | 1 + .../SolrDefault/link-publisher.phtml | 1 + .../RecordDriver/SolrDefault/toolbar.phtml | 71 ++ .../RecordDriver/SolrMarc/core.phtml | 60 ++ .../RecordDriver/SolrMarc/data-bk.phtml | 10 + .../RecordDriver/SolrMarc/data-ddc.phtml | 10 + .../RecordDriver/SolrMarc/data-rvk.phtml | 10 + themes/fid_bbi/theme.config.php | 6 + 22 files changed, 1217 insertions(+), 27 deletions(-) create mode 100644 fid_bbi/config/vufind/finc-fid-core-api.ini create mode 100644 module/fid_bbi/Module.php create mode 100644 module/fid_bbi/config/module.config.php create mode 100644 module/fid_bbi/src/fid_bbi/RecordDriver/Factory.php create mode 100644 module/fid_bbi/src/fid_bbi/View/Helper/Root/RecordDataFormatterFactory.php create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/core.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/data-isbn.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/data-publicationDetails.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/link-bk.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/link-ddc.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/link-publisher.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrDefault/toolbar.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrMarc/core.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrMarc/data-bk.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrMarc/data-ddc.phtml create mode 100644 themes/fid_bbi/templates/RecordDriver/SolrMarc/data-rvk.phtml diff --git a/config/application.config.php b/config/application.config.php index c5548282a49..2958a246021 100644 --- a/config/application.config.php +++ b/config/application.config.php @@ -1,12 +1,10 @@ <?php // Set up modules: -$modules = [ - 'Zend\Form', 'Zend\Router', 'ZfcRbac', - 'VuFindTheme', 'VuFindSearch', 'VuFind', 'VuFindAdmin', 'VuFindApi' -]; -if (PHP_SAPI == 'cli' && APPLICATION_ENV !== 'testing') { - $modules[] = 'Zend\Mvc\Console'; +$modules = array( + 'ZfcRbac', 'VuFindTheme', 'VuFindSearch', 'VuFind', 'VuFindAdmin', 'VuFindApi' +); +if (PHP_SAPI == 'cli' && !defined('VUFIND_PHPUNIT_RUNNING')) { $modules[] = 'VuFindConsole'; } if (APPLICATION_ENV == 'development') { @@ -21,6 +19,10 @@ if ($localModules = getenv('VUFIND_LOCAL_MODULES')) { } } } +// Append custom modules. +array_push($modules, ...[ + 'fid_bbi' +]); /** Begin of temporarily necessary adjustments. */ shell_exec('php devops/composer/themes.php'); @@ -31,7 +33,7 @@ array_push($modules, ...[ 'finc', 'finc\VuFindHttpPsrCompat', 'finc\SymfonySerializerZendBridge', - 'finc\Fid\Core', +// 'finc\Fid\Core', ]); /** End of temporarily necessary adjustments. */ diff --git a/fid_bbi/alpha/config/vufind/searches.ini b/fid_bbi/alpha/config/vufind/searches.ini index 69edfb4bd11..ccbcfdbbc09 100644 --- a/fid_bbi/alpha/config/vufind/searches.ini +++ b/fid_bbi/alpha/config/vufind/searches.ini @@ -22,7 +22,7 @@ relative_path = ../../../config/vufind/searches.ini ;#################################################################### [IndexShards] -finc-live = 172.18.113.250:8080/solr/biblio +finc-live = 172.18.113.26:8080/solr/biblio ;finc-nonlive = 172.18.113.250:8081/solr/biblio ;solr4entw = 172.18.85.142:8085/solr/biblio ;solr5entwickler = "172.18.85.142:8983/solr/biblio" diff --git a/fid_bbi/config/vufind/finc-fid-core-api.ini b/fid_bbi/config/vufind/finc-fid-core-api.ini new file mode 100644 index 00000000000..f6d95ea6ad5 --- /dev/null +++ b/fid_bbi/config/vufind/finc-fid-core-api.ini @@ -0,0 +1,2 @@ +[Client] +baseUrl = http://172.18.113.133/fid-92a9e94c \ No newline at end of file diff --git a/fid_bbi/config/vufind/searches.ini b/fid_bbi/config/vufind/searches.ini index e932bc94fcb..47e439b95ba 100644 --- a/fid_bbi/config/vufind/searches.ini +++ b/fid_bbi/config/vufind/searches.ini @@ -1,37 +1,20 @@ ;#################################################################### - ;##################### DO NOT DELETE THIS HEADER #################### - ;################### Leipzig University Library © 2015 ############## - ; - ; This is the default DEV-INI-file and inherits - ; all the settings from the INI-file defined in [Parent_Config] which - ; points to the default INI-file located in the folder vufind2/de_zwi2 - ; - [Parent_Config] - relative_path = ../../../local/config/vufind/searches.ini - ; A comma-separated list of config sections from the parent which should be - ; completely overwritten by the equivalent sections in this configuration; - ; any sections not listed here will be merged on a section-by-section basis. - ;override_full_sections = "Languages,AlphaBrowse_Types" - ; - ; Add DEV-specific customization after this header. - ; - ;##################### DO NOT DELETE THIS HEADER #################### ;#################################################################### diff --git a/fid_bbi/languages/de.ini b/fid_bbi/languages/de.ini index 03d48561dc2..8a8ff3b1377 100644 --- a/fid_bbi/languages/de.ini +++ b/fid_bbi/languages/de.ini @@ -1852,7 +1852,7 @@ Dates of publication = "Erscheinungsverlauf" external_access = "Dieser Titel ist verfügbar in" # 8918 -Authors/Corporations = "Personen und Körperschaften" +Authors/Corporations = "verantwortlich" rda_original_title = "Werktitel" non_rda_original_title = "Originaltitel" @@ -1875,4 +1875,10 @@ Subject Actor = "Motiv" Time of origin = "Entstehungszeit" ; #14758 -Login = "Mein BBI" \ No newline at end of file +Login = "Mein BBI" + +; #14878 +BK = "BK-Notation" +DDC = "DDC-Notation" +Holdings = "Verfügbarkeit" +Permalink = "Permalink kopieren" diff --git a/fid_bbi/languages/en.ini b/fid_bbi/languages/en.ini index 9f3d7781855..bcdb215b5ce 100644 --- a/fid_bbi/languages/en.ini +++ b/fid_bbi/languages/en.ini @@ -1817,3 +1817,9 @@ Time of origin = "Time of origin" ; #14758 Login = "My BBI" + +; #14878 +BK = "BK Notation" +DDC = "DDC Notation" +Holdings = "Availability" +Permalink = "Copy Permalink" diff --git a/module/fid_bbi/Module.php b/module/fid_bbi/Module.php new file mode 100644 index 00000000000..32ed3793898 --- /dev/null +++ b/module/fid_bbi/Module.php @@ -0,0 +1,92 @@ +<?php +/** + * Template for ZF2 module for storing local overrides. + * + * PHP version 5 + * + * Copyright (C) Leipzig University Library 2014. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category VuFind + * @package Module + * @author André Lahmann <lahmann@ub.uni-leipzig.de> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://github.com/dmj/vf2-proxy + */ +namespace fid_bbi; +use Zend\ModuleManager\ModuleManager, + Zend\Mvc\MvcEvent; + +/** + * Template for ZF2 module for storing local overrides. + * + * @category VuFind + * @package Module + * @author André Lahmann <lahmann@ub.uni-leipzig.de> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://github.com/dmj/vf2-proxy + */ +class Module +{ + /** + * Get module configuration + * + * @return array + */ + public function getConfig() + { + return include __DIR__ . '/config/module.config.php'; + } + + /** + * Get autoloader configuration + * + * @return array + */ + public function getAutoloaderConfig() + { + return [ + 'Zend\Loader\StandardAutoloader' => [ + 'namespaces' => [ + __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, + ], + ], + ]; + } + + /** + * Initialize the module + * + * @param ModuleManager $m Module manager + * + * @return void + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function init(ModuleManager $m) + { + } + + /** + * Bootstrap the module + * + * @param MvcEvent $e Event + * + * @return void + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function onBootstrap(MvcEvent $e) + { + } +} diff --git a/module/fid_bbi/config/module.config.php b/module/fid_bbi/config/module.config.php new file mode 100644 index 00000000000..054e266e438 --- /dev/null +++ b/module/fid_bbi/config/module.config.php @@ -0,0 +1,111 @@ +<?php +namespace fid_bbi\Module\Configuration; + +$config = [ + 'vufind' => [ + 'plugin_managers' => [ + 'recorddriver' => [ + 'factories' => [ + 'solrdefault' => 'finc\RecordDriver\Factory::getSolrDefault', + 'solrmarc' => 'finc\RecordDriver\Factory::getSolrMarc', + 'solrmarcfinc' => 'finc\RecordDriver\Factory::getSolrMarcFinc', + 'solrmarcfincpda' => 'finc\RecordDriver\Factory::getSolrMarcFincPDA', + 'solrmarcremote' => 'finc\RecordDriver\Factory::getSolrMarcRemote', + 'solrmarcremotefinc' => 'finc\RecordDriver\Factory::getSolrMarcRemoteFinc', + 'solrai' => 'finc\RecordDriver\Factory::getSolrAI', + 'solris' => 'finc\RecordDriver\Factory::getSolrIS', + 'solrlido' => 'finc\RecordDriver\Factory::getSolrLido', + 'solrlidondl' => 'finc\RecordDriver\Factory::getSolrLidoNdl' + ], + ], + 'recordtab' => [ + 'factories' => [ + 'hierarchytree' => 'finc\RecordTab\Factory::getHierarchyTree', + ], + 'invokables' => [ + 'staffviewai' => 'finc\RecordTab\StaffViewAI', + 'acquisitionpda' => 'finc\RecordTab\AcquisitionPDA', + 'topics' => 'finc\RecordTab\Topics', + 'descriptionlido' => 'finc\RecordTab\DescriptionLido' + ], + ], + ], + 'recorddriver_tabs' => [ + 'finc\RecordDriver\SolrDefault' => [ + 'tabs' => [ + 'Description' => 'Description', 'Holdings' => 'HoldingsILS', + 'TOC' => 'TOC', 'UserComments' => 'UserComments', + 'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt', + 'Preview' => 'preview', + 'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map', + 'Similar' => null, + 'Details' => 'StaffViewArray', + ], + 'defaultTab' => null, + ], + 'fid_bbi\RecordDriver\SolrMarcFinc' => [ + 'tabs' => [ + 'Description' => 'Description', 'Holdings' => 'HoldingsILS', + 'TOC' => 'TOC', 'UserComments' => 'UserComments', + 'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt', + 'Preview' => 'preview', + 'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map', + 'Similar' => null, + 'Details' => 'StaffViewMARC', + ], + 'defaultTab' => null, + ], + 'finc\RecordDriver\SolrAI' => [ + 'tabs' => [ + 'Description' => 'Description', 'Holdings' => 'HoldingsILS', + 'TOC' => 'TOC', 'UserComments' => 'UserComments', + 'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt', + 'Preview' => 'preview', + 'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map', + 'Similar' => null, + 'Details' => 'StaffViewAI', + ], + 'defaultTab' => null, + ], + ], + 'recorddriver_collection_tabs' => [ + 'VuFind\RecordDriver\AbstractBase' => [ + 'tabs' => [ + 'CollectionList' => 'CollectionList', + 'HierarchyTree' => 'CollectionHierarchyTree', + 'Details' => 'StaffViewArray', + ], + 'defaultTab' => null, + ], + ], + ], +]; + +$nonTabRecordActions = [ + 'PDA', 'EmailHold', 'ReportErrors' +]; + + +// Define record view routes -- route name => controller +// Define record view routes once again to add new nonTabRecordActions +$recordRoutes = [ + 'record' => 'Record', + 'export' => 'Export', + 'resources' => 'Resources' +]; + + +// Define static routes -- Controller/Action strings +$staticRoutes = [ + 'MyResearch/Acquisition', + 'MyResearch/ResetPassword', + 'dds/Home', + 'dds/Email', + 'Record/EblLink' +]; + +$routeGenerator = new \VuFind\Route\RouteGenerator($nonTabRecordActions); +$routeGenerator->addRecordRoutes($config, $recordRoutes); +$routeGenerator->addStaticRoutes($config, $staticRoutes); + +return $config; diff --git a/module/fid_bbi/src/fid_bbi/RecordDriver/Factory.php b/module/fid_bbi/src/fid_bbi/RecordDriver/Factory.php new file mode 100644 index 00000000000..e69de29bb2d diff --git a/module/fid_bbi/src/fid_bbi/View/Helper/Root/RecordDataFormatterFactory.php b/module/fid_bbi/src/fid_bbi/View/Helper/Root/RecordDataFormatterFactory.php new file mode 100644 index 00000000000..8316f8f0668 --- /dev/null +++ b/module/fid_bbi/src/fid_bbi/View/Helper/Root/RecordDataFormatterFactory.php @@ -0,0 +1,715 @@ +<?php +/** + * Factory for record driver data formatting view helper + * + * PHP version 5 + * + * Copyright (C) Villanova University 2016. + * Copyright (C) The National Library of Finland 2017. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category VuFind + * @package View_Helpers + * @author Demian Katz <demian.katz@villanova.edu> + * @author Konsta Raunio <konsta.raunio@helsinki.fi> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development:architecture:record_data_formatter + * Wiki + */ +namespace fid_bbi\View\Helper\Root; + +use VuFind\View\Helper\Root\RecordDataFormatter; + +/** + * Factory for record driver data formatting view helper + * + * @category VuFind + * @package View_Helpers + * @author Demian Katz <demian.katz@villanova.edu> + * @author Konsta Raunio <konsta.raunio@helsinki.fi> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development:architecture:record_data_formatter + * Wiki + */ +class RecordDataFormatterFactory +{ + /** + * Create the helper. + * + * @return RecordDataFormatter + */ + public function __invoke() + { + $helper = new RecordDataFormatter(); + + $helper->setDefaults( + 'collection-info', [$this, 'getDefaultCollectionInfoSpecs'] + ); + $helper->setDefaults( + 'collection-record', [$this, 'getDefaultCollectionRecordSpecs'] + ); + $helper->setDefaults('core', [$this, 'getDefaultCoreSpecs']); + $helper->setDefaults( + 'description', [$this, 'getDefaultDescriptionSpecs'] + ); + + $helper->setDefaults('core-ai', [$this, 'getAiCoreSpecs']); + + $helper->setDefaults('core-lido', [$this, 'getLidoCoreSpecs']); + $helper->setDefaults( + 'description-lido', [$this, 'getLidoDescriptionSpecs'] + ); + + $helper->setDefaults('core-marc', [$this, 'getMarcCoreSpecs']); + return $helper; + } + + /** + * Get default specifications for displaying data in core metadata. + * + * @return array + */ + public function getAiCoreSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Journal Title', 'getContainerTitle', 'data-containerTitle.phtml' + ); + $spec->setTemplateLine( + 'Authors/Corporations', + 'getDeduplicatedAuthors', + 'data-authors.phtml', + [ + 'useCache' => true, + 'context' => [ + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ] + ] + ); + $spec->setLine( + 'Edition', 'getEdition', null, + ['prefix' => '<span property="bookEdition">', 'suffix' => '</span>'] + ); + $spec->setTemplateLine( + 'In', + 'getJTitle', + 'data-jTitle.phtml' + ); + $spec->setLine( + 'Format', 'getFormats', 'RecordHelper', + ['helperMethod' => 'getFormatList'] + ); + $spec->setTemplateLine( + 'Language', 'getLanguages', 'data-transEscCommaSepLang.phtml' + ); + $spec->setTemplateLine( + 'Published', + 'getPublicationDetails', + 'data-publicationDetails.phtml' + ); + $spec->setLine( + 'Series', 'getSeries', null, ['recordLink' => 'series'] + ); + $spec->setTemplateLine( + 'Subjects', 'getAllSubjectHeadings', 'data-allSubjectHeadings.phtml' + ); + $spec->setTemplateLine( + 'child_records', 'getChildRecordCount', 'data-childRecords.phtml', + ['allowZero' => false] + ); + /* finc: remove 'Online Access' in record-details #13770 - VE */ + /* $spec->setTemplateLine('Online Access', true, 'data-onlineAccess.phtml'); */ + $spec->setTemplateLine( + 'Related Items', 'getAllRecordLinks', 'data-allRecordLinks.phtml' + ); + $spec->setTemplateLine('Tags', true, 'data-tags.phtml'); + return $spec->getArray(); + } + + /** + * Get default specifications for displaying data in collection-info metadata. + * + * @return array + */ + public function getDefaultCollectionInfoSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Title', 'getTitleDetails', 'data-titleDetails.phtml' + ); + $spec->setTemplateLine( + 'Authors/Corporations', + 'getDeduplicatedAuthors', + 'data-authors.phtml', + [ + 'useCache' => true, + 'context' => [ + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ] + ] + ); + $spec->setTemplateLine( + 'Dates of publication', 'getDateSpan', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Summary', 'getSummary', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Published', 'getPublicationDetails', 'data-publicationDetails.phtml' + ); + $spec->setLine( + 'Edition', 'getEdition', null, + ['prefix' => '<span property="bookEdition">', 'suffix' => '</span>'] + ); + $spec->setTemplateLine( + 'Subjects', 'getAllSubjectHeadings', 'data-allSubjectHeadings.phtml' + ); + /* finc: remove 'Online Access' in record-details #13770 - VE */ + /* $spec->setTemplateLine('Online Access', true, 'data-onlineAccess.phtml'); */ + $spec->setTemplateLine( + 'Item Description', 'getGeneralNotes', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Production Credits', + 'getProductionCredits', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Set Multipart', + 'getHierarchyParentTitle', + 'data-hierarchyParentTitle.phtml' + ); + $spec->setTemplateLine( + 'ISBN', 'getISBNs', 'data-isbn.phtml' + ); + $spec->setTemplateLine( + 'ISSN', 'getISSNs', 'data-issn.phtml' + ); + $spec->setTemplateLine( + 'Notes', + 'getAdditionalNotes', + 'data-escapeHtml.phtml', + [ + 'useCache' => true + ] + ); + $spec->setLine( + 'Format', 'getFormats', 'RecordHelper', + ['helperMethod' => 'getFormatList'] + ); + $spec->setTemplateLine( + 'Language', 'getLanguages', 'data-transEscCommaSepLang.phtml' + ); + $spec->setTemplateLine( + 'Additionals', + 'getAdditionals', + 'data-additionals.phtml', + [ + 'labelFunction' => function() { return null; } + ] + ); + return $spec->getArray(); + } + + /** + * Get default specifications for displaying data in collection-record metadata. + * + * @return array + */ + public function getDefaultCollectionRecordSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setLine('Summary', 'getSummary'); + $spec->setTemplateLine( + 'Authors/Corporations', + 'getDeduplicatedAuthors', + 'data-authors.phtml', + [ + 'useCache' => true, + 'context' => [ + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ] + ] + ); + $spec->setTemplateLine( + 'Language', 'getLanguages', 'data-transEscCommaSepLang.phtml' + ); + $spec->setLine( + 'Format', 'getFormats', 'RecordHelper', + ['helperMethod' => 'getFormatList'] + ); + $spec->setTemplateLine( + 'Access', 'getAccessRestrictions', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Related Items', 'getRelationshipNotes', 'data-escapeHtml.phtml' + ); + return $spec->getArray(); + } + + /** + * Get default specifications for displaying data in core metadata. + * + * @return array + */ + public function getDefaultCoreSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Published in', 'getContainerTitle', 'data-containerTitle.phtml' + ); + $spec->setLine( + 'New Title', 'getNewerTitles', null, ['recordLink' => 'title'] + ); + $spec->setLine( + 'Previous Title', 'getPreviousTitles', null, ['recordLink' => 'title'] + ); + $spec->setTemplateLine( + 'Title', 'getTitleDetails', 'data-titleDetails.phtml' + ); + $spec->setTemplateLine( + 'Authors/Corporations', 'getDeduplicatedAuthors', 'data-authors.phtml', + [ + 'useCache' => true, + 'context' => [ + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ] + ] + ); + $spec->setTemplateLine( + 'Title Uniform', 'getTitleUniform', 'data-titleUniform.phtml', + [ + 'labelFunction' => function() { return null; } + ] + ); + $spec->setLine( + 'Edition', 'getEdition', null, + ['prefix' => '<span property="bookEdition">', 'suffix' => '</span>'] + ); + $spec->setLine( + 'Dissertation Note', + 'getDissertationNote', + 'data-escapeHtmlCommaSep.phtml' + ); + $spec->setLine( + 'Format', 'getFormats', 'RecordHelper', + ['helperMethod' => 'getFormatList'] + ); + $spec->setTemplateLine( + 'Language', 'getLanguages', 'data-transEscCommaSepLang.phtml' + ); + $spec->setTemplateLine( + 'Published', + 'getPublicationDetails', + 'data-publicationDetails.phtml' + ); + $spec->setTemplateLine( + 'Set Multipart', + 'getHierarchyParentTitle', + 'data-hierarchyParentTitle.phtml' + ); + $spec->setTemplateLine( + 'Subjects', 'getAllSubjectHeadings', 'data-allSubjectHeadings.phtml' + ); + $spec->setTemplateLine( + 'child_records', 'getChildRecordCount', 'data-childRecords.phtml', + ['allowZero' => false] + ); + /* finc: remove 'Online Access' in record-details #13770 - VE */ + /* $spec->setTemplateLine('Online Access', true, 'data-onlineAccess.phtml'); */ + $spec->setTemplateLine( + 'Related Items', 'getAllRecordLinks', 'data-allRecordLinks.phtml' + ); + $spec->setTemplateLine( + 'Additionals', + 'getAdditionals', + 'data-additionals.phtml', + [ + 'labelFunction' => function() { return null; } + ] + ); + $spec->setTemplateLine( + 'Source', + 'getMegaCollection', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + null, + 'getOtherRelationshipEntry', + 'data-otherRelationshipEntry.phtml', + [ + + ] + ); + $spec->setTemplateLine( + 'Notes', + 'getAdditionalNotes', + 'data-escapeHtml.phtml', + [ + 'useCache' => true + ] + ); + $spec->setTemplateLine('Tags', true, 'data-tags.phtml'); + return $spec->getArray(); + } + + /** + * Get default specifications for displaying data in the description tab. + * + * @return array + */ + public function getDefaultDescriptionSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Summary', 'getSummary', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Dates of publication', 'getDateSpan', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Item Description', 'getGeneralNotes', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Physical Description', + 'getPhysicalDescriptions', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Publication Frequency', + 'getPublicationFrequency', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Playing Time', 'getPlayingTimes', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Format', 'getSystemDetails', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Audience', 'getTargetAudienceNotes', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Awards', 'getAwards', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Production Credits', + 'getProductionCredits', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Language', 'getLanguages', 'data-transEscCommaSepLang.phtml' + ); + $spec->setTemplateLine( + 'Subjects', 'getAllSubjectHeadings', 'data-allSubjectHeadings.phtml' + ); + $spec->setTemplateLine( + 'RVK', 'getRVK', 'data-rvk.phtml' + ); + $spec->setTemplateLine( + 'BK', 'getBK', 'data-bk.phtml' + ); + $spec->setTemplateLine( + 'DDC', 'getDDC', 'data-ddc.phtml' + ); + $spec->setTemplateLine( + 'Bibliography', 'getBibliographyNotes', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'ISBN', 'getISBNs', 'data-isbn.phtml' + ); + $spec->setTemplateLine( + 'ISSN', 'getISSNs', 'data-issn.phtml' + ); + $spec->setTemplateLine( + 'DOI', 'getCleanDOI', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'EISSN', 'getEISSNs', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Related Items', 'getRelationshipNotes', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Access', 'getAccessRestrictions', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Finding Aid', 'getFindingAids', 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Publication_Place', + 'getHierarchicalPlaceNames', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine( + 'Author Notes', true, 'data-authorNotes.phtml' + ); + $spec->setTemplateLine( + 'Call Number', + 'getLocalSignature', + 'data-localSignature.phtml' + ); + $spec->setTemplateLine( + 'Notes', + 'getAdditionalNotes', + 'data-escapeHtml.phtml', + [ + 'useCache' => true + ] + ); + return $spec->getArray(); + } + + /** + * Get default specifications for displaying data in collection-info metadata. + * + * @return array + */ + public function getLidoCoreSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Originators', 'getDeduplicatedAuthors', 'data-authors.phtml', + [ + 'useCache' => true, + 'labelFunction' => function ($data) { + return count($data['main']) > 1 + ? 'Originators' : 'Originator'; + }, + 'context' => [ + 'type' => 'main', + 'schemaLabel' => 'author', + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ], + ] + ); + $spec->setTemplateLine( + 'Corporate Originator', 'getDeduplicatedAuthors', 'data-authors.phtml', + [ + 'useCache' => true, + 'labelFunction' => function ($data) { + return count($data['corporate']) > 1 + ? 'Corporate Originators' : 'Corporate Originator'; + }, + 'context' => [ + 'type' => 'corporate', + 'schemaLabel' => 'creator', + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ], + ] + ); + $spec->setTemplateLine( + 'Other Originators', 'getDeduplicatedAuthors', 'data-authors.phtml', + [ + 'useCache' => true, + 'context' => [ + 'type' => 'secondary', + 'schemaLabel' => 'contributor', + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ], + ] + ); + $spec->setTemplateLine( + 'Subject Detail', 'getSubjectDetails', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordSubjects'] + ] + ); + $spec->setTemplateLine( + 'Subject Place', 'getSubjectPlaces', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordSubjects'] + ] + ); + $spec->setTemplateLine( + 'Subject Date', 'getSubjectDates', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordSubjects'] + ] + ); + + $spec->setTemplateLine( + 'Subject Actor', 'getSubjectActors', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordSubjects'] + ] + ); + $spec->setTemplateLine( + 'Institution', 'getInstitutions', 'data-institutions.phtml', + [ + 'context' => ['class' => 'recordInstitution'] + ] + ); + $spec->setTemplateLine( + 'Inventory ID', 'getIdentifier', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordIdentifier'] + ] + ); + $spec->setTemplateLine( + 'Inventory ID', 'getIdentifier', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordIdentifier'] + ] + ); + $spec->setTemplateLine( + 'Measurements', 'getMeasurements', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordMeasurements'] + ] + ); + $spec->setTemplateLine( + 'Measurements', + 'getMeasurementsDescription', + 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordMeasurements'] + ] + ); + $spec->setTemplateLine( + 'Collection', 'getCollections', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordCollection'] + ] + ); + $spec->setLine( + 'Object type', 'getFormats', 'RecordHelper', + ['helperMethod' => 'getFormatList'] + ); + $spec->setTemplateLine( + 'Other Classification', + 'getFormatClassifications', + 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordClassifications'] + ] + ); + $spec->setTemplateLine( + 'Other ID', 'getLocalIdentifiers', 'data-escapeHtml.phtml', + [ + 'context' => ['class' => 'recordIdentifiers'] + ] + ); + $spec->setTemplateLine( + 'Events', true, 'data-events.phtml', + [ + 'labelFunction' => function() { return null; } + ] + ); + // , context: "recordEvents" + $spec->setTemplateLine( + 'Language', 'getLanguages','data-transEscCommaSepLang.phtml' + ); + $spec->setTemplateLine( + 'Time of origin', 'getDateSpan', 'data-dateSpan.phtml' + ); + $spec->setTemplateLine('Edition', 'getEdition', 'data-escapeHtml.phtml', + [ + 'prefix' => '<span property="bookEdition">', + 'suffix' => '</span>' + ] + ); + $spec->setTemplateLine( + 'Subjects', 'getAllSubjectHeadings', 'data-allSubjectHeadings.phtml' + ); + /* finc: remove 'Online Access' in record-details #13770 -VE */ + /* $spec->setTemplateLine('Online Access', true, 'data-onlineAccess.phtml'); */ + $spec->setTemplateLine( + 'Related Items', 'getAllRecordLinks', 'data-allRecordLinks.phtml' + ); + return $spec->getArray(); + } + + /** + * Get default specifications for displaying data in collection-record metadata. + * + * @return array + */ + public function getLidoDescriptionSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Time of origin', 'getDateSpan', 'data-dateSpan.phtml' + ); + $spec->setTemplateLine( + 'Access', 'getAccessNote','data-accessNote.phtml' + ); + return $spec->getArray(); + } + + /** + * Get marc specifications for displaying data in core metadata. + * + * @return array + */ + public function getMarcCoreSpecs() + { + $spec = new RecordDataFormatter\SpecBuilder(); + $spec->setTemplateLine( + 'Title', 'getTitleDetails', 'data-titleDetails.phtml' + ); + $spec->setTemplateLine( + 'Title Uniform', 'getTitleUniform', 'data-titleUniform.phtml', + [ + 'labelFunction' => function() { return null; } + ] + ); + $spec->setTemplateLine( + 'Authors/Corporations', + 'getDeduplicatedAuthors', + 'data-authors.phtml', + [ + 'useCache' => true, + 'context' => [ + 'requiredDataFields' => [ + ['name' => 'role', 'prefix' => 'CreatorRoles::'] + ] + ] + ] + ); + $spec->setTemplateLine( + 'Published', + 'getPublicationDetails', + 'data-publicationDetails.phtml' + ); + $spec->setLine( + 'Format', 'getFormats', 'RecordHelper', + ['helperMethod' => 'getFormatList'] + ); + $spec->setTemplateLine( + 'Source', + 'getMegaCollection', + 'data-escapeHtml.phtml' + ); + $spec->setTemplateLine('Tags', true, 'data-tags.phtml'); + return $spec->getArray(); + } + + +} diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/core.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/core.phtml new file mode 100644 index 00000000000..abab08107c9 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/core.phtml @@ -0,0 +1,56 @@ +<!-- finc: RecordDriver - solrDefault - core --> +<div class="media" vocab="http://schema.org/" resource="#record" typeof="<?=$this->driver->getSchemaOrgFormats()?> Product"> + <? + $QRCode = $this->record($this->driver)->getQRCode("core"); + $coverDetails = $this->record($this->driver)->getCoverDetails('core', 'medium', $this->record($this->driver)->getThumbnail('large')); + $cover = $coverDetails['html']; + $preview = $this->record($this->driver)->getPreviews(); + ?> + <? if ($QRCode || $cover || $preview): ?> + <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?> img-col"> + <? /* #14878: remove cover - GG */ ?> + </div> + <? endif; ?> + <div class="media-body"> + + <? /* finc: We want to get rid of trailing special chars in the title and limit its length to 100 chars + remove schema name tag here but keept in description, CK + */ + ?> + <? /* finc: add schema tags for title #13850 - VE */ ?> + <h3 property="name"><?=$this->escapeHtml(preg_replace('/(\s[\/\.:]\s*)*$/', '', $this->truncate($this->driver->getShortTitle() . ' ' . $this->driver->getSubtitle() . ' ' . $this->driver->getTitleSection(), 100)))?></h3> + + <? $summary = $this->driver->getSummary(); $summary = isset($summary[0]) ? $this->escapeHtml($summary[0]) : false; ?> + <? if ($summary): ?> + <p><?=$this->truncate($summary, 300)?></p> + + <? if(strlen($summary) > 300): ?> + <p><a href='<?=$this->recordLink()->getTabUrl($this->driver, 'Description')?>#tabnav'><?=$this->transEsc('Full description')?></a></p> + <? endif; ?> + <? endif; ?> + + <? if ($this->userlist()->getMode() !== 'disabled'): ?> + <? /* Display the lists that this record is saved to */ ?> + <div class="savedLists hidden alert alert-info"> + <strong><?=$this->transEsc("Saved in")?>:</strong> + </div> + <? endif; ?> + + <?/* Display Main Details */?> + <? + $formatter = $this->recordDataFormatter(); + $coreFields = $formatter->getData($driver, $formatter->getDefaults('core')); + ?> + <? if (!empty($coreFields)): ?> + <table class="table table-striped"> + <? /* Table summary not supported in html 5, finc-specific solution, CK */ ?> + <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> + <? foreach ($coreFields as $key => $current): ?> + <tr><th><?=$this->transEsc($key)?>:</th><td><?=$current['value']?></td></tr> + <? endforeach; ?> + </table> + <? endif; ?> + <?/* End Main Details */?> + </div> +</div> +<!-- finc: RecordDriver - solrDefault - core - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/data-isbn.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/data-isbn.phtml new file mode 100644 index 00000000000..58012798d36 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/data-isbn.phtml @@ -0,0 +1,20 @@ +<!-- fid_bbi: RecordDriver - SolrDefault - data-isbn --> +<? if (!empty($data)): ?> +<? if (is_array($data)): ?> + <span property="isbn"> + <? if (count($data) > 0): ?> + <?=$this->escapeHtml($data[0])?> + <? if (count($data) > 1): ?> ; + <a class="isbn-toggle" data-toggle="collapse" data-target="#isbn-toggle">...</a> + <div id="isbn-toggle" class="collapse"> + <? unset($data[0]); ?> + <?=implode('<br/>', array_map(array($this, 'escapeHtml'), $data))?> + </div> + <? endif; ?> + <? endif; ?> + </span> +<? else: ?> +<?=$this->escapeHtml($data)?> +<? endif; ?> +<? endif; ?> +<!-- fid_bbi: RecordDriver - SolrDefault - data-isbn - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/data-publicationDetails.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/data-publicationDetails.phtml new file mode 100644 index 00000000000..785286d965d --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/data-publicationDetails.phtml @@ -0,0 +1,27 @@ +<!-- fid_bbi: RecordDriver - solrDefault - data-publicationDetails --> +<? if (!empty($data)): ?> +<div itemscope itemtype="http://schema.org/publisher"> + <? foreach ($data as $field): ?> + <span property="publisher" typeof="Organization"> + <? $pubPlace = $field->getPlace(); if (!empty($pubPlace)): ?> + <span property="location" typeof="Place"> + <span property="name"><?=$this->escapeHtml($pubPlace)?></span> + </span> + <? endif; ?> + <? $pubName = $field->getName(); if (!empty($pubName)): ?> + <span property="name"><a href="<?=$this->record($this->driver)->getLink('publisher', $pubName)?>"><?=$this->escapeHtml($pubName)?></a></span> + <? endif; ?> + </span> + <span property="datePublished"> + <? /* do not show solr publish date #13993 - GG */ ?> + <? /*$pubDateSort = $this->driver->tryMethod('getPublishDateSort');*/ ?> + <? $pubDate = $field->getDate(); if (!empty($pubDate)): ?> + <?=$this->escapeHtml($pubDate)?> + <? /*else: ?> + <?=$this->escapeHtml($pubDateSort)*/?></span> + <? endif; ?> + </span><br/> + <? endforeach; ?> +</div> +<? endif ?> +<!-- fid_bbi: RecordDriver - solrDefault - data-publicationDetails - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-bk.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-bk.phtml new file mode 100644 index 00000000000..178be2e908f --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-bk.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=bk \ No newline at end of file diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-ddc.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-ddc.phtml new file mode 100644 index 00000000000..d45ff49637d --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-ddc.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=ddc \ No newline at end of file diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-publisher.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-publisher.phtml new file mode 100644 index 00000000000..f50e920bb57 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/link-publisher.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=publisher \ No newline at end of file diff --git a/themes/fid_bbi/templates/RecordDriver/SolrDefault/toolbar.phtml b/themes/fid_bbi/templates/RecordDriver/SolrDefault/toolbar.phtml new file mode 100644 index 00000000000..05a0b7ad9f6 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrDefault/toolbar.phtml @@ -0,0 +1,71 @@ +<!-- finc: recordDriver - solrDefault - toolbar --> +<? + $addThis = $this->addThis(); + if (!empty($addThis)) { + $this->headScript()->appendFile('https://s7.addthis.com/js/250/addthis_widget.js?pub=' . urlencode($addThis)); + } + +// Set up some variables for convenience: +$cart = $this->cart(); +$cartId = $this->driver->getSourceIdentifier() . '|' . $this->driver->getUniqueId(); +?> + +<? /* #14878: use original toolbar - GG */ ?> +<ul class="record-nav nav nav-pills hidden-print"> + <? /* finc: we use the sr-only description, CK */ ?> + <li class="sr-only"><?=$this->transEsc('Toolbar')?></li> + <? if ($this->userlist()->getMode() !== 'disabled'): ?> + <? /* finc: we use title, CK */ ?> + <li> + <?if ($this->permission()->allowDisplay('feature.Favorites')): ?> + <a class="save-record" data-lightbox href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>" title="<?=$this->transEsc('Add to favorites')?>" rel="nofollow"><i class="fa fa-star" aria-hidden="true"></i> <?=$this->transEsc('Add to favorites')?> + </a> + <? elseif ($block = $this->permission()->getAlternateContent('feature.Favorites')): ?> + <?=$block?> + <? endif; ?> + </li> + <? endif; ?> + <? /* finc: we don't use sms, CK */ ?> + <? /* + <? if ($this->accountCapabilities()->getSmsSetting() !== 'disabled'): ?> + <li><a class="sms-record" data-lightbox href="<?=$this->recordLink()->getActionUrl($this->driver, 'SMS')?>" rel="nofollow"><i class="fa fa-mobile" aria-hidden="true"></i> <?=$this->transEsc('Text this')?></a></li> + <? endif; ?> + */ ?> + <li> + <a class="mail-record" data-lightbox href="<?=$this->recordLink()->getActionUrl($this->driver, 'Email')?>" rel="nofollow"><i class="fa fa-envelope" aria-hidden="true"></i> <?=$this->transEsc('Email this')?></a> + </li> + + <? $exportFormats = $this->export()->getFormatsForRecord($this->driver); ?> + <? if (count($exportFormats) > 0): ?> + <li class="dropdown"> + <a class="export-toggle dropdown-toggle" data-toggle="dropdown" href="<?=$this->recordLink()->getActionUrl($this->driver, 'Export')?>" rel="nofollow"><i class="fa fa-list-alt" aria-hidden="true"></i> <?=$this->transEsc('Export Record')?> + </a> + <ul class="dropdown-menu" role="menu"> + <? foreach ($exportFormats as $exportFormat): ?> + <li> + <a <? if ($this->export()->needsRedirect($exportFormat)): ?>target="<?=$this->escapeHtmlAttr($exportFormat)?>Main" + <? endif; ?>href="<?=$this->recordLink()->getActionUrl($this->driver, 'Export')?>?style=<?=$this->escapeHtmlAttr($exportFormat)?>" + rel="nofollow"><?=$this->transEsc('Export to')?><?=$this->transEsc($this->export()->getLabelForFormat($exportFormat))?></a> + </li> + <? endforeach; ?> + </ul> + </li> + <? endif; ?> + <? if (!empty($addThis)): ?> + <li> + <a class="addThis addthis_button" href="https://www.addthis.com/bookmark.php?v=250&pub=<?=urlencode($addThis)?>"><i class="fa fa-bookmark" aria-hidden="true"></i> <?=$this->transEsc('Bookmark')?></a> + </li> + <? endif; ?> + <li class="bookbag-menu"> + <?=$this->render('record/cart-buttons.phtml', ['id' => $this->driver->getUniqueId(), 'source' => $this->driver->getSourceIdentifier()]); ?> + </li> + <? if (count($this->driver->getCitationFormats()) > 0): ?> + <li> + <a class="cite-record" data-lightbox href="<?=$this->recordLink()->getActionUrl($this->driver, 'Cite')?>" rel="nofollow"><i class="fa fa-asterisk" aria-hidden="true"></i> <?=$this->transEsc('Cite this')?></a> + </li> + <? endif; ?> + <li> + <a href="<?=$this->url('record', ['action' => 'record', 'id' => $this->driver->getUniqueId()], ['force_canonical' => true])?>"><i class="fa fa-copy" aria-hidden="true"></i> <?=$this->transEsc('Permalink')?></a> + </li> +</ul> +<!-- finc: recordDriver - solrDefault - toolbar - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrMarc/core.phtml b/themes/fid_bbi/templates/RecordDriver/SolrMarc/core.phtml new file mode 100644 index 00000000000..ac20e7f5a98 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrMarc/core.phtml @@ -0,0 +1,60 @@ +<!-- finc: RecordDriver - solrMarc - core --> +<div class="media" vocab="http://schema.org/" resource="#record" typeof="<?=$this->driver->getSchemaOrgFormats()?> Product"> + <? + $QRCode = $this->record($this->driver)->getQRCode("core"); + $coverDetails = $this->record($this->driver)->getCoverDetails('core', 'medium', $this->record($this->driver)->getThumbnail('large')); + $cover = $coverDetails['html']; + $preview = $this->record($this->driver)->getPreviews(); + ?> + <? if ($QRCode || $cover || $preview): ?> + <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?> img-col"> + <? /* #14878: remove cover - GG */ ?> + </div> + <? endif; ?> + <div class="media-body"> + + <? /* finc: We want to get rid of trailing special chars in the title and limit its length to 100 chars + remove schema name tag here but keept in description, CK + */ + ?> + <? /* finc: add schema tags for title #13850 - VE */ ?> + <? /*<h3 property="name"><?=$this->escapeHtml(preg_replace('/(\s[\/\.:]\s*)*$/', '', $this->truncate($this->driver->getShortTitle() . ' ' . $this->driver->getSubtitle() . ' ' . $this->driver->getTitleSection(), 100)))?></h3> */ ?> + + <? $summary = $this->driver->getSummary(); $summary = isset($summary[0]) ? $this->escapeHtml($summary[0]) : false; ?> + <? if ($summary): ?> + <p><?=$this->truncate($summary, 300)?></p> + + <? if(strlen($summary) > 300): ?> + <p><a href='<?=$this->recordLink()->getTabUrl($this->driver, 'Description')?>#tabnav'><?=$this->transEsc('Full description')?></a></p> + <? endif; ?> + <? endif; ?> + + <? if ($this->userlist()->getMode() !== 'disabled'): ?> + <? /* Display the lists that this record is saved to */ ?> + <div class="savedLists hidden alert alert-info"> + <strong><?=$this->transEsc("Saved in")?>:</strong> + </div> + <? endif; ?> + + <?/* Display Main Details */?> + <? + $formatter = $this->recordDataFormatter(); + $coreFields = $formatter->getData($driver, $formatter->getDefaults('core-marc')); + ?> + <? if (!empty($coreFields)): ?> + <table class="table table-striped"> + <? /* Table summary not supported in html 5, finc-specific solution, CK */ ?> + <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> + <? foreach ($coreFields as $key => $current): ?> + <? if ($key == null): ?> + <?=$current['value']?> + <? else: ?> + <tr><th><?=$this->transEsc($key)?>:</th><td><?=$current['value']?></td></tr> + <? endif; ?> + <? endforeach; ?> + </table> + <? endif; ?> + <?/* End Main Details */?> + </div> + </div> +<!-- finc: RecordDriver - solrMarc - core - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-bk.phtml b/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-bk.phtml new file mode 100644 index 00000000000..7ec5c36a781 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-bk.phtml @@ -0,0 +1,10 @@ +<!-- fid_bbi: RecordDriver - solrMarc - data-bk --> +<? if (!(empty($data))): ?> +<? $i = 0; foreach ($data as $bk): ?> + <?= ($i++ == 0) ? '' : ' ; '; ?> + <a title="<?=$this->escapeHtmlAttr($bk)?>" href="<?=$this->record($this->driver)->getLink('bk', $bk)?>" rel="nofollow"> + <?=trim($this->escapeHtml($bk))?> + </a> +<? endforeach; ?> +<? endif; ?> +<!-- fid_bbi: RecordDriver - solrMarc - data-bk - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-ddc.phtml b/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-ddc.phtml new file mode 100644 index 00000000000..ca54a70b817 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-ddc.phtml @@ -0,0 +1,10 @@ +<!-- fid_bbi: RecordDriver - solrMarc - data-ddc --> +<? if (!(empty($data))): ?> +<? $i = 0; foreach ($data as $ddc): ?> + <?= ($i++ == 0) ? '' : ' ; '; ?> + <a title="<?=$this->escapeHtmlAttr($ddc)?>" href="<?=$this->record($this->driver)->getLink('ddc', $ddc)?>" rel="nofollow"> + <?=trim($this->escapeHtml($ddc))?> + </a> +<? endforeach; ?> +<? endif; ?> +<!-- fid_bbi: RecordDriver - solrMarc - data-ddc - END --> diff --git a/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-rvk.phtml b/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-rvk.phtml new file mode 100644 index 00000000000..9fb0d80eb97 --- /dev/null +++ b/themes/fid_bbi/templates/RecordDriver/SolrMarc/data-rvk.phtml @@ -0,0 +1,10 @@ +<!-- fid_bbi: RecordDriver - solrMarc - data-rvk --> +<? if (!(empty($data))): ?> +<? $i = 0; foreach ($data as $rvk): ?> + <?= ($i++ == 0) ? '' : ' ; '; ?> + <a title="<?=$this->escapeHtmlAttr($rvk)?>" href="<?=$this->record($this->driver)->getLink('rvk', $rvk)?>" rel="nofollow"> + <?=trim($this->escapeHtml($rvk))?> + </a> +<? endforeach; ?> +<? endif; ?> +<!-- fid_bbi: RecordDriver - solrMarc - data-rvk - END --> diff --git a/themes/fid_bbi/theme.config.php b/themes/fid_bbi/theme.config.php index dbb7aeebc2e..a707cb8ee91 100644 --- a/themes/fid_bbi/theme.config.php +++ b/themes/fid_bbi/theme.config.php @@ -2,4 +2,10 @@ return [ 'extends' => 'finc', //'favicon' => 'favicon.ico', + 'helpers' => array( + 'factories' => array( + 'VuFind\View\Helper\Root\RecordDataFormatter' => + 'fid_bbi\View\Helper\Root\RecordDataFormatterFactory', + ), + ), ]; -- GitLab