From 638e21e8d3ff50aecf8e28bafa2976e7c4a86bf2 Mon Sep 17 00:00:00 2001
From: Alexander Purr <purr@ub.uni-leipzig.de>
Date: Wed, 19 Aug 2020 13:08:54 +0200
Subject: [PATCH] refs #18058 [finc] add some RecordDriver functions

* add marc driver function for getting performer note (marc 511 |a)
* display additional authors
** add role value to getAdditionalAuthors marc function
** add template
* add corporations / corporate authors template
* add rvk notation template
---
 .../finc/RecordDriver/SolrMarcFincTrait.php   | 20 +++++++-
 .../data-additionalAuthors.phtml              | 22 ++++++++
 .../DefaultRecord/data-corporateAuthors.phtml | 14 ++++++
 .../data-publicationDetails.phtml             | 50 ++++++++++---------
 .../DefaultRecord/data-rvkNotation.phtml      | 26 ++++++++++
 5 files changed, 108 insertions(+), 24 deletions(-)
 create mode 100644 themes/finc/templates/RecordDriver/DefaultRecord/data-additionalAuthors.phtml
 create mode 100644 themes/finc/templates/RecordDriver/DefaultRecord/data-corporateAuthors.phtml
 create mode 100644 themes/finc/templates/RecordDriver/DefaultRecord/data-rvkNotation.phtml

diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index a6594df4bd0..f85b2edc14f 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -1367,8 +1367,9 @@ trait SolrMarcFincTrait
                 ? $line->getSubfield('d')->getData() : '';
             $retval[$key]['relator'] = ($line->getSubfield('e'))
                 ? $line->getSubfield('e')->getData() : '';
+            $retval[$key]['role'] = ($line->getSubfield('4'))
+                ? $line->getSubfield('4')->getData() : '';
         }
-        // echo "<pre>"; print_r($retval); echo "</pre>";
         return $retval;
     }
 
@@ -2473,4 +2474,21 @@ trait SolrMarcFincTrait
     {
         return $this->getFieldArray('508', ['a']);
     }
+
+    /**
+     * Return performer note of marc 511 |a
+     *
+     * @return mixed
+     */
+    public function getPerformerNote()
+    {
+        $field = $this->getMarcRecord()->getField('511');
+        if($field){
+            $subfield = $field->getSubfield('a');
+            if($subfield) {
+                return $subfield->getData();
+            }
+        }
+        return null;
+    }
 }
\ No newline at end of file
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/data-additionalAuthors.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/data-additionalAuthors.phtml
new file mode 100644
index 00000000000..17ba1d06e62
--- /dev/null
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/data-additionalAuthors.phtml
@@ -0,0 +1,22 @@
+<!-- finc: RecordDriver - DefaultRecord - data-additionalAuthors -->
+<?php if (!empty($data)): ?>
+  <?php if (is_array($data)): ?>
+    <?php foreach ($data as $author): ?>
+      <? if(isset($author['name'])): ?>
+        <a href="<?=$this->record($this->driver)->getLink('author', $author['name'])?>">
+          <?= $author['name'] ?>
+        </a>
+      <? endif; ?>
+      <?php if(isset($author['dates'])): ?>
+        <?= $author['dates'] ?>
+      <?php endif; ?>
+      <?php if(isset($author['role'])): ?>
+        [<?= $this->transEsc("CreatorRoles::" . $author['role']) ?>]
+      <?php endif; ?>
+      <?php if(next($data)): ?>
+        •
+      <?php endif; ?>
+    <?php endforeach; ?>
+  <?php endif; ?>
+<?php endif; ?>
+<!-- finc: RecordDriver - DefaultRecord - data-additionalAuthors - END -->
\ No newline at end of file
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/data-corporateAuthors.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/data-corporateAuthors.phtml
new file mode 100644
index 00000000000..b888d0f2191
--- /dev/null
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/data-corporateAuthors.phtml
@@ -0,0 +1,14 @@
+<!-- finc: RecordDriver - DefaultRecord - data-corporateAuthors -->
+<?php if (!empty($data)): ?>
+  <?php if (is_array($data)): ?>
+    <?php foreach ($data as $author): ?>
+      <a href="<?=$this->record($this->driver)->getLink('author', $author)?>">
+        <?= $author ?>
+      </a>
+      <?php if(next($data)): ?>
+        <br>
+      <?php endif; ?>
+    <?php endforeach; ?>
+  <?php endif; ?>
+<?php endif; ?>
+<!-- finc: RecordDriver - DefaultRecord - data-corporateAuthors - END -->
\ No newline at end of file
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/data-publicationDetails.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/data-publicationDetails.phtml
index fdb11ee471b..430b5d61896 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/data-publicationDetails.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/data-publicationDetails.phtml
@@ -1,30 +1,34 @@
 <!-- finc: RecordDriver - DefaultRecord - data-publicationDetails -->
 <?php if (!empty($data)): ?>
   <div itemscope itemtype="http://schema.org/publisher">
-    <?php foreach ($data as $field): ?>
-      <span property="publisher" typeof="Organization">
-        <?php $pubPlace = $field->getPlace();
-        if (!empty($pubPlace)): ?>
-          <span property="location" typeof="Place">
-            <span property="name"><?=$this->escapeHtml($pubPlace)?></span>
-          </span>
+    <?php if (is_array($data)): ?>
+      <?php foreach ($data as $field): ?>
+        <span property="publisher" typeof="Organization">
+          <?php $pubPlace = $field->getPlace();
+          if (!empty($pubPlace)): ?>
+            <span property="location" typeof="Place">
+              <span property="name"><?=$this->escapeHtml($pubPlace)?></span>
+            </span>
+          <?php endif; ?>
+          <?php $pubName = $field->getName();
+          if (!empty($pubName)): ?>
+            <span property="name"><?=$this->escapeHtml($pubName)?></span>
+          <?php endif; ?>
+        </span>
+        <span property="datePublished">
+        <?php /* do not show solr publish date #13993 - GG */ ?>
+        <?php /*$pubDateSort = $this->driver->tryMethod('getPublishDateSort');*/ ?>
+        <?php $pubDate = $field->getDate();
+        if (!empty($pubDate)): ?>
+          <?=$this->escapeHtml($pubDate)?>
+          <?php /*else: ?>
+          <?=$this->escapeHtml($pubDateSort)*/ ?>
         <?php endif; ?>
-        <?php $pubName = $field->getName();
-        if (!empty($pubName)): ?>
-          <span property="name"><?=$this->escapeHtml($pubName)?></span>
-        <?php endif; ?>
-      </span>
-      <span property="datePublished">
-      <?php /* do not show solr publish date #13993 - GG */ ?>
-      <?php /*$pubDateSort = $this->driver->tryMethod('getPublishDateSort');*/ ?>
-      <?php $pubDate = $field->getDate();
-      if (!empty($pubDate)): ?>
-        <?=$this->escapeHtml($pubDate)?>
-        <?php /*else: ?>
-        <?=$this->escapeHtml($pubDateSort)*/ ?>
-      <?php endif; ?>
-      </span><br/>
-    <?php endforeach; ?>
+        </span><br/>
+      <?php endforeach; ?>
+    <?php else: ?>
+      <?=$this->escapeHtml($data)?>
+    <?php endif; ?>
   </div>
 <?php endif ?>
 <!-- finc: RecordDriver - DefaultRecord - data-publicationDetails - END -->
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/data-rvkNotation.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/data-rvkNotation.phtml
new file mode 100644
index 00000000000..ace98595279
--- /dev/null
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/data-rvkNotation.phtml
@@ -0,0 +1,26 @@
+<!-- finc: RecordDriver - DefaultRecord - data-rvkNotation -->
+<?php /* partial copied from themes/finc/templates/RecordTab/topics.phtml */ ?>
+<?php $i = 0; foreach ($data as $item): ?>
+    <?=($i>0?"<br />":"") //no linebreak after last item ?>
+    <?php if (isset($item['level']) ): ?>
+        <?php
+        $tooltip_content = "<ul class='no-bullet'>";
+        if (isset($item['level']) && count($item['level'])) {
+            foreach ($item['level'] as $level) {
+                $tooltip_content .= "<li>" . $level . "</li>";
+            }
+        }
+        $tooltip_content .= "</ul>";
+        ?>
+    <?php endif; ?>
+  <span <?=(isset($tooltip_content) ? 'data-toggle="tooltip" data-html="true" title="' . $tooltip_content . '"' : "")?>>
+        <a href="<?=$this->record($this->driver)->getLink('rvk', $item['rvk'])?>">
+          <?=$item['rvk']?>
+        </a>
+    </span>
+    <?php if(isset($item['name'])): ?>
+    <span><?=$item['name']?></span>
+    <?php endif; ?>
+    <?php $i++; ?>
+<?php endforeach; ?>
+<!-- finc: RecordDriver - DefaultRecord - data-rvkNotation - END -->
\ No newline at end of file
-- 
GitLab