From 79da33cc65495fff3b366d3021693bc55f81be13 Mon Sep 17 00:00:00 2001 From: Oliver Schihin <oliver.schihin@unibas.ch> Date: Tue, 24 Jun 2014 12:17:42 +0200 Subject: [PATCH] Display hierarchical place names (publication places, field 752) * MARC-driver method to read fields and return display value * display content in description tab * title translated in en, fr, de, it --- languages/de.ini | 1 + languages/en.ini | 1 + languages/fr.ini | 3 ++- languages/it.ini | 1 + .../src/VuFind/RecordDriver/SolrDefault.php | 11 ++++++++ .../src/VuFind/RecordDriver/SolrMarc.php | 26 +++++++++++++++++++ .../templates/RecordTab/description.phtml | 12 +++++++++ .../templates/RecordTab/description.phtml | 12 +++++++++ .../templates/RecordTab/description.phtml | 10 +++++++ 9 files changed, 76 insertions(+), 1 deletion(-) diff --git a/languages/de.ini b/languages/de.ini index 9df0d159368..6d7119ac956 100644 --- a/languages/de.ini +++ b/languages/de.ini @@ -594,6 +594,7 @@ Provider = "Provider" Public = "Öffentlich" Publication = Verlag Publication Frequency = "Erscheinungshäufigkeit" +Publication_Place = "Erscheinungsort" Published = Veröffentlicht Published in = "Veröffentlicht in" Publisher = Verlag diff --git a/languages/en.ini b/languages/en.ini index 3ba7cbf4d6c..5a5c8eee53e 100644 --- a/languages/en.ini +++ b/languages/en.ini @@ -668,6 +668,7 @@ Provider = Provider Public = Public Publication = Publication Publication Frequency = "Publication Frequency" +Publication_Place = "Place of Publication" Publication Information = "Publication Information" Publication Type = "Publication Type" Published = Published diff --git a/languages/fr.ini b/languages/fr.ini index 878da4bce57..c0c5fe405cc 100644 --- a/languages/fr.ini +++ b/languages/fr.ini @@ -590,7 +590,8 @@ profile_update = "Votre profil a été mis à jour comme souhaité" Provider = Fournisseur Public = Publique Publication = Publication -Publication Frequency = "Fréquence de publication" +Publication Frequency = "Fréquence de publication" +Publication_Place = "Lieu de publication" Published = Publié Published in = "Publié dans" Publisher = Éditeur diff --git a/languages/it.ini b/languages/it.ini index fb344f22031..94485c1d6c0 100644 --- a/languages/it.ini +++ b/languages/it.ini @@ -591,6 +591,7 @@ Provider = Provider Public = Pubblico Publication = Pubblicazione Publication Frequency = "Frequenza della pubblicazione" +Publication_Place = "Luogo di pubblicazione" Published = Pubblicazione Published in = "Pubblicato in" Publisher = Editore diff --git a/module/VuFind/src/VuFind/RecordDriver/SolrDefault.php b/module/VuFind/src/VuFind/RecordDriver/SolrDefault.php index b31d4283706..d426f144b56 100644 --- a/module/VuFind/src/VuFind/RecordDriver/SolrDefault.php +++ b/module/VuFind/src/VuFind/RecordDriver/SolrDefault.php @@ -1188,6 +1188,17 @@ class SolrDefault extends AbstractBase ? $this->fields['contents'] : array(); } + /** + * Get hierarchical place names + * + * @return array + */ + public function getHierarchicalPlaceNames() + { + // Not currently stored in the Solr index + return array(); + } + /** * Return an array of associative URL arrays with one or more of the following * keys: diff --git a/module/VuFind/src/VuFind/RecordDriver/SolrMarc.php b/module/VuFind/src/VuFind/RecordDriver/SolrMarc.php index 79457125d18..4d8b18c7f43 100644 --- a/module/VuFind/src/VuFind/RecordDriver/SolrMarc.php +++ b/module/VuFind/src/VuFind/RecordDriver/SolrMarc.php @@ -653,6 +653,32 @@ class SolrMarc extends SolrDefault return $toc; } + /** + * Get hierarchical place names (MARC field 752) + * + * returns an array of formatted hierarchical place names, consisting of all + * alpha-subfields, concatenated for display + * + * @return array + */ + public function getHierarchicalPlaceNames() + { + $placeNames = array(); + if ($fields = $this->marcRecord->getFields('752')) { + foreach ($fields as $field) { + $subfields = $field->getSubfields(); + $current = array(); + foreach ($subfields as $subfield) { + if (!is_numeric($subfield->getCode())) { + $current[] = $subfield->getData(); + } + } + $placeNames[] = implode(' -- ', $current); + } + } + return $placeNames; + } + /** * Return an array of associative URL arrays with one or more of the following * keys: diff --git a/themes/blueprint/templates/RecordTab/description.phtml b/themes/blueprint/templates/RecordTab/description.phtml index 0f968597e70..c665704ce89 100644 --- a/themes/blueprint/templates/RecordTab/description.phtml +++ b/themes/blueprint/templates/RecordTab/description.phtml @@ -203,6 +203,18 @@ </tr> <? endif; ?> + <? $publicationPlaces = $this->driver->getHierarchicalPlaceNames(); if (!empty($publicationPlaces)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Publication_Place')?>: </th> + <td> + <? foreach ($publicationPlaces as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + <? $authorNotes = empty($isbn) ? array() : $this->authorNotes($isbn); if (!empty($authorNotes)): ?> <? $contentDisplayed = true; ?> <tr valign="top"> diff --git a/themes/bootstrap/templates/RecordTab/description.phtml b/themes/bootstrap/templates/RecordTab/description.phtml index 6f5532be3b6..14efbab9151 100644 --- a/themes/bootstrap/templates/RecordTab/description.phtml +++ b/themes/bootstrap/templates/RecordTab/description.phtml @@ -203,6 +203,18 @@ </tr> <? endif; ?> + <? $publicationPlaces = $this->driver->getHierarchicalPlaceNames(); if (!empty($publicationPlaces)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Publication_Place')?>: </th> + <td> + <? foreach ($publicationPlaces as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + <? $authorNotes = empty($isbn) ? array() : $this->authorNotes($isbn); if (!empty($authorNotes)): ?> <? $contentDisplayed = true; ?> <tr valign="top"> diff --git a/themes/jquerymobile/templates/RecordTab/description.phtml b/themes/jquerymobile/templates/RecordTab/description.phtml index 6b33128ee56..dce6e5909d9 100644 --- a/themes/jquerymobile/templates/RecordTab/description.phtml +++ b/themes/jquerymobile/templates/RecordTab/description.phtml @@ -171,6 +171,16 @@ </dd> <? endif; ?> + <? $publicationPlaces = $this->driver->getHierarchicalPlaceNames(); if (!empty($publicationPlaces)): ?> + <? $contentDisplayed = true; ?> + <dt><?=$this->transEsc('Publication_Place')?>: </dt> + <dd> + <? foreach ($publicationPlaces as $field): ?> + <p><?=$this->escapeHtml($field)?></p> + <? endforeach; ?> + </dd> + <? endif; ?> + <? if (!isset($contentDisplayed) || !$contentDisplayed): // Avoid errors if there were no rows above ?> <dd><p><?=$this->transEsc('no_description')?></p></dd> <? endif; ?> -- GitLab