From f3caa230494d049e207608e1dfc1ccfb61b628b0 Mon Sep 17 00:00:00 2001 From: ckaz <kazzer@uni-leipzig.de> Date: Wed, 24 Jun 2020 09:20:16 +0200 Subject: [PATCH] refs #17621 [master] responsive tables * for details see issue/17621_new co-authored by: "Alexander Purr <purr@ub.uni-leipzig.de>" --- local/languages/de.ini | 4 +- local/languages/en.ini | 4 +- themes/finc/scss/_customMixins.scss | 71 +++++++- themes/finc/scss/compiled.scss | 47 ++++++ .../DefaultRecord/collection-info.phtml | 7 +- .../DefaultRecord/collection-record.phtml | 18 ++ .../RecordDriver/DefaultRecord/core.phtml | 5 +- .../templates/RecordDriver/SolrAI/core.phtml | 5 +- .../RecordDriver/SolrLido/core.phtml | 5 +- .../RecordDriver/SolrMarc/core.phtml | 5 +- .../templates/RecordTab/description.phtml | 6 +- .../templates/RecordTab/descriptionlido.phtml | 8 +- .../templates/RecordTab/holdingsils.phtml | 13 +- .../RecordTab/holdingsils/standard.phtml | 6 +- .../RecordTab/holdingsworldcat.phtml | 34 ++++ .../templates/RecordTab/staffviewai.phtml | 11 +- .../templates/RecordTab/staffviewarray.phtml | 19 +++ .../templates/RecordTab/staffviewmarc.phtml | 7 +- themes/finc/templates/RecordTab/topics.phtml | 6 +- themes/finc/templates/ajax/status-full.phtml | 42 +++++ themes/finc/templates/alphabrowse/home.phtml | 152 +++++++++++++++++ themes/finc/templates/librarycards/home.phtml | 1 + themes/finc/templates/myresearch/fines.phtml | 7 +- .../finc/templates/myresearch/profile.phtml | 156 +++++++++--------- .../finc/templates/search/history-table.phtml | 59 +++++++ .../templates/search/list-authorfacets.phtml | 16 ++ .../templates/search/reservessearch.phtml | 91 ++++++++++ 27 files changed, 684 insertions(+), 121 deletions(-) create mode 100644 themes/finc/templates/RecordDriver/DefaultRecord/collection-record.phtml create mode 100644 themes/finc/templates/RecordTab/holdingsworldcat.phtml create mode 100644 themes/finc/templates/RecordTab/staffviewarray.phtml create mode 100644 themes/finc/templates/ajax/status-full.phtml create mode 100644 themes/finc/templates/alphabrowse/home.phtml create mode 100644 themes/finc/templates/search/history-table.phtml create mode 100644 themes/finc/templates/search/list-authorfacets.phtml create mode 100644 themes/finc/templates/search/reservessearch.phtml diff --git a/local/languages/de.ini b/local/languages/de.ini index 82a15b7d53e..a7308e4a403 100644 --- a/local/languages/de.ini +++ b/local/languages/de.ini @@ -2000,4 +2000,6 @@ Skip to search = "Weiter zum Suchbereich" ; Overwrite, only in de.ini necessary: Search type = "Suchtyp" -License = "Lizenz" \ No newline at end of file +License = "Lizenz" + +fine_date_short = "Gebühr fällig" \ No newline at end of file diff --git a/local/languages/en.ini b/local/languages/en.ini index 68a6044ffef..9f40eb2a5a4 100644 --- a/local/languages/en.ini +++ b/local/languages/en.ini @@ -2096,4 +2096,6 @@ Modal_description = "This is a dialog window which overlays the main content of ; #17598 Skip to search = "Skip to search" -License = "License" \ No newline at end of file +License = "License" + +fine_date_short = "Fine Date" \ No newline at end of file diff --git a/themes/finc/scss/_customMixins.scss b/themes/finc/scss/_customMixins.scss index 33043b15314..2dd5bb11a87 100644 --- a/themes/finc/scss/_customMixins.scss +++ b/themes/finc/scss/_customMixins.scss @@ -37,4 +37,73 @@ padding: 0; position: absolute; width: auto; -} \ No newline at end of file +} + +// Responsive data tables mixin + +@mixin table-resp-data { + thead, + tbody, + th, + td, + tr { + display: block; + width: 100%; + } + + // Hide table headers/footers but avoid display: none; for accessibility + thead tr, + tfoot tr > th, + tr th { + border: 0; + left: -9999px; + position: absolute; + top: -9999px; + } + + tr { + border: $border-default-styles; + border-bottom: 0; + margin-bottom: 6px; + + &:last-of-type { + border-bottom: $border-default-styles; + } + } + + // remove ghost borders + &.table { + border-color: transparent; + } + + tbody > tr > td, + td { + // Make td behave like a "row", add padding for "columns" + border: 0; + border-bottom: $border-default-styles; + padding-left: calc(50% + 10px); + position: relative; + text-align: left; + white-space: normal; + } + + td::before { + // make data titles behave like table headers // top+left values mimic padding + content: attr(data-title); + font-weight: bold; + left: 6px; + overflow: hidden; // required for Ellipsis + padding-right: 10px; + position: absolute; + text-align: left; + text-overflow: ellipsis; // required for Ellipsis + top: 6px; // required for Ellipsis (was top: 6px) + white-space: nowrap; // required for Ellipsis + width: calc(50% - 20px); // required for Ellipsis + } + + // Insert nbsp on XS to prevent empty, collapsing cells + td::after { + content: '\00a0'; + } +} diff --git a/themes/finc/scss/compiled.scss b/themes/finc/scss/compiled.scss index 93a7d5980ad..d601b8632b3 100644 --- a/themes/finc/scss/compiled.scss +++ b/themes/finc/scss/compiled.scss @@ -246,6 +246,38 @@ h4 { width: 100%; } +//// Responsive data tables for small (xs) resolution (e.g. search history table) +@media screen and (max-width: $screen-xs-max) { + // Force table around, exc. solrMarc staffview + .table-resp-data:not(.citation) { + display: flex; + max-width: 90vw !important; + } + + .table-resp-data { + border: 0; + display: block; + } + + // .table-resp-data (default) -- is applied to XS + .table-resp-data { + @include table-resp-data; + } + + // limit width for staff view + .tab-pane.details-tab.active { + max-width: 80vw; + overflow-x: auto; + } +} + +//// Responsive data tables for medium (md) resolution (e.g. fines table) +@media screen and (max-width: $screen-md-max) { + .table-resp-data-md { + @include table-resp-data; + } +} + // TABLES - END // FORMS @@ -1766,8 +1798,23 @@ footer { border-left: 1px solid $nav-tabs-border-color; border-right: 1px solid $nav-tabs-border-color; padding: ($grid-gutter-width / 2); + + // make long ai-Links break to prevent overspilling content on XS + a { + word-break: break-word; + } } +/////// Format items in availability column +.availability-column { + @media only screen and (max-width: $screen-sm-max) { + a { + display: block; + margin-top: 6px; + word-break: break-word; + } + } +} //////// Tab-content active needs to display 'inline-block' top display the border correctly (or content will bleed over) .tab-content > .active { display: inline-block; diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml index 5af52c580f7..d5ce34fdcc0 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml @@ -49,11 +49,12 @@ $fields = $formatter->getData($driver, $formatter->getDefaults('collection-info')); ?> <?php if (!empty($fields)): ?> - <?php /* finc: we use 'collapse in' to initially hide the content, CK */ ?> - <table id="collectionInfo" class="table table-striped collapse in"> + <?php /* finc: we use 'collapse in' to initially hide the content, + we also include responsive data table - CK */ ?> + <table id="collectionInfo" class="table table-striped table-resp-data collapse in"> <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> <?php foreach ($fields as $current): ?> - <tr><th><?=$this->transEsc($current['label'])?>:</th><td><?=$current['value']?></td></tr> + <tr><th><?=$this->transEsc($current['label'])?>:</th><td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td></tr> <?php endforeach; ?> </table> <?php endif; ?> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/collection-record.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/collection-record.phtml new file mode 100644 index 00000000000..0b79440ae62 --- /dev/null +++ b/themes/finc/templates/RecordDriver/DefaultRecord/collection-record.phtml @@ -0,0 +1,18 @@ +<!-- finc: recordDriver - DefaultRecord - collection-record --> +<h2><?=$this->escapeHtml($this->driver->getShortTitle() . ' ' . $this->driver->getSubtitle() . ' ' . $this->driver->getTitleSection())?></h2> +<a href="<?=$this->recordLink()->getUrl($this->driver)?>"><?=$this->transEsc('View Full ' . ($this->driver->isCollection() ? 'Collection' : 'Record'))?></a> + +<?php + $formatter = $this->recordDataFormatter(); + $fields = $formatter->getData($driver, $formatter->getDefaults('collection-record')); +?> +<?php if (!empty($fields)): ?> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> + <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> + <?php foreach ($fields as $current): ?> + <tr><th><?=$this->transEsc($current['label'])?>:</th><td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td></tr> + <?php endforeach; ?> + </table> +<?php endif; ?> +<!-- finc: recordDriver - DefaultRecord - collection-record - END --> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml index a411bc91d4a..a2dfff1cc2c 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml @@ -70,12 +70,13 @@ $coreFields = $formatter->getData($driver, $formatter->getDefaults('core')); ?> <?php if (!empty($coreFields)): ?> - <table class="table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> <?php foreach ($coreFields as $current): ?> <tr> <th><?=$this->transEsc($current['label'])?>:</th> - <td><?=$current['value']?></td> + <td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td> </tr> <?php endforeach; ?> </table> diff --git a/themes/finc/templates/RecordDriver/SolrAI/core.phtml b/themes/finc/templates/RecordDriver/SolrAI/core.phtml index fe6c9ef6189..b5bfed99524 100644 --- a/themes/finc/templates/RecordDriver/SolrAI/core.phtml +++ b/themes/finc/templates/RecordDriver/SolrAI/core.phtml @@ -70,13 +70,14 @@ $coreFields = $formatter->getData($driver, $formatter->getDefaults('core-ai')); ?> <?php if (!empty($coreFields)): ?> - <table class="table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> <?php foreach ($coreFields as $current): ?> <?php if ($current['label'] == null): ?> <?=$current['value']?> <?php else: ?> - <tr><th><?=$this->transEsc($current['label'])?>:</th><td><?=$current['value']?></td></tr> + <tr><th><?=$this->transEsc($current['label'])?>:</th><td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td></tr> <?php endif; ?> <?php endforeach; ?> </table> diff --git a/themes/finc/templates/RecordDriver/SolrLido/core.phtml b/themes/finc/templates/RecordDriver/SolrLido/core.phtml index b4675a25177..5ab8df4ee07 100644 --- a/themes/finc/templates/RecordDriver/SolrLido/core.phtml +++ b/themes/finc/templates/RecordDriver/SolrLido/core.phtml @@ -88,7 +88,8 @@ $coreFields = $formatter->getData($driver, $formatter->getDefaults('core-lido')); ?> <?php if (!empty($coreFields)): ?> - <table class="table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> <?php foreach ($coreFields as $current): ?> <?php if ($current['label'] == null): ?> @@ -96,7 +97,7 @@ <?php else: ?> <tr> <th><?=$this->transEsc($current['label'])?>:</th> - <td><?=$current['value']?></td> + <td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td> </tr> <?php endif; ?> <?php endforeach; ?> diff --git a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml index f27404394fd..2992f968984 100644 --- a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml +++ b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml @@ -72,7 +72,8 @@ $coreFields = $formatter->getData($driver, $formatter->getDefaults('core-marc')); ?> <?php if (!empty($coreFields)): ?> - <table class="table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> <caption class="sr-only"><?=$this->transEsc('Bibliographic Details')?></caption> <?php foreach ($coreFields as $current): ?> <?php if ($current['label'] == null): ?> @@ -80,7 +81,7 @@ <?php else: ?> <tr> <th><?=$this->transEsc($current['label'])?>:</th> - <td><?=$current['value']?></td> + <td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td> </tr> <?php endif; ?> <?php endforeach; ?> diff --git a/themes/finc/templates/RecordTab/description.phtml b/themes/finc/templates/RecordTab/description.phtml index d8f9f722d31..cea530c6973 100644 --- a/themes/finc/templates/RecordTab/description.phtml +++ b/themes/finc/templates/RecordTab/description.phtml @@ -6,14 +6,14 @@ $this->headTitle($this->translate('Description') . ': ' . $this->driver->getBrea $formatter = $this->recordDataFormatter(); $mainFields = $formatter->getData($driver, $formatter->getDefaults('description')); ?> -<?php /* finc: remove schema tag here but keep in core,*/ ?> -<table class="table table-striped"> +<?php /* finc: remove schema tag here but keep in core, include responsive data table - CK */ ?> +<table class="table table-striped table-resp-data"> <?php /* Table gets filled via recordDriver/.../data-... templates as referenced in RecordDataFormatterFactory */ ?> <caption class="sr-only"><?=$this->transEsc('Description')?></caption> <?php if (!empty($mainFields)): ?> <?php foreach ($mainFields as $current): ?> - <tr><th><?=$this->transEsc($current['label'])?>:</th><td><?=$current['value']?></td></tr> + <tr><th><?=$this->transEsc($current['label'])?>:</th><td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td></tr> <?php endforeach; ?> <?php else: ?> <tr><td><?=$this->transEsc('no_description')?></td></tr> diff --git a/themes/finc/templates/RecordTab/descriptionlido.phtml b/themes/finc/templates/RecordTab/descriptionlido.phtml index c6dd3bdeb2d..b02580e4cce 100644 --- a/themes/finc/templates/RecordTab/descriptionlido.phtml +++ b/themes/finc/templates/RecordTab/descriptionlido.phtml @@ -7,14 +7,14 @@ $formatter = $this->recordDataFormatter(); $mainFields = $formatter->getData($driver, $formatter->getDefaults('description-lido')); ?> <?php /* - This next table originally in table "Display Main Details" in DefaultRecord/core templates, compare with core and with description.phtml! CK - /* finc: remove schema tag here but keep in core,*/ + This next table originally in table "Display Main Details" in DefaultRecord/core templates, compare with core and with description.phtml! + finc: remove schema tag here but keep in core, include responsive data table - CK */ ?> -<table class="table table-striped"> +<table class="table table-striped table-resp-data"> <caption class="sr-only"><?= $this->transEsc('Description') ?></caption> <?php if (!empty($mainFields)): ?> <?php foreach ($mainFields as $current): ?> - <tr><th><?=$this->transEsc($current['label'])?>:</th><td><?=$current['value']?></td></tr> + <tr><th><?=$this->transEsc($current['label'])?>:</th><td data-title="<?= $this->transEsc($current['label']) ?>:"><?=$current['value']?></td></tr> <?php endforeach; ?> <?php else: ?> <tr><td><?=$this->transEsc('no_description')?></td></tr> diff --git a/themes/finc/templates/RecordTab/holdingsils.phtml b/themes/finc/templates/RecordTab/holdingsils.phtml index a30510273da..3a14112478b 100644 --- a/themes/finc/templates/RecordTab/holdingsils.phtml +++ b/themes/finc/templates/RecordTab/holdingsils.phtml @@ -103,8 +103,8 @@ if (!empty($holdingTitleHold)): ?> <?php if (isset($holding['locationid'])): ?> <?=$this->branchInfo($this->driver)->getBranchInfo($holding['locationid']);?> <?php endif; ?> - <?php /* finc: this next section produces an empty table in some cases - the table borders collapse, producing a thick line - should be solved more elegantly - Fixme - CK*/ ?> - <table class="table table-striped"> + <?php /* finc: this next section produces an empty table in some cases - the table borders collapse, producing a thick line - should be solved more elegantly - Fixme - , include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> <caption class="sr-only"><?=$this->transEsc('holdings_details_from', ['%%location%%' => $this->transEsc($holding['location'])])?></caption> <?php /* finc: change order and structure of table #13606 - VE */ ?> <?php foreach ($holding['items'] as $row): ?> @@ -131,7 +131,7 @@ if (!empty($holdingTitleHold)): ?> <th> <?=$this->transEsc("Call Number")?>: </th> - <td> + <td data-title="<?= $this->transEsc("Call Number") ?>:"> <?php foreach ($callNos as $callNo): ?> <?=$this->escapeHtml($callNo)?> <br /> @@ -143,7 +143,7 @@ if (!empty($holdingTitleHold)): ?> <tr> <?php // Translation for summary is a special case for backwards-compatibility ?> <th><?=$textFieldName == 'summary' ? $this->transEsc("Volume Holdings") : $this->transEsc(ucfirst($textFieldName))?>:</th> - <td> + <td data-title="<?= $this->transEsc("Volume Holdings") ?>:"> <?php foreach ($textFields as $current): ?> <?=$this->escapeHtml($current)?><br/> <?php endforeach; ?> @@ -154,7 +154,7 @@ if (!empty($holdingTitleHold)): ?> <?php if (!empty($holding['purchase_history'])): ?> <tr> <th><?=$this->transEsc("Most Recent Received Issues")?>:</th> - <td> + <td data-title="<?= $this->transEsc("Most Recent Received Issues") ?>:"> <?php foreach ($holding['purchase_history'] as $current): ?> <?=$this->escapeHtml($current['issue'])?><br/> <?php endforeach; ?> @@ -184,7 +184,8 @@ if (!empty($holdingTitleHold)): ?> <?php $history = $this->driver->getRealTimeHistory(); ?> <?php if (is_array($history) && !empty($history)): ?> <h3><?=$this->transEsc("Most Recent Received Issues")?></h3> - <table class="table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> <?php foreach ($history as $row): ?> <tr> <td><?=$this->escapeHtml($row['issue'])?></td> diff --git a/themes/finc/templates/RecordTab/holdingsils/standard.phtml b/themes/finc/templates/RecordTab/holdingsils/standard.phtml index 91e177f3400..9842a0a0d71 100644 --- a/themes/finc/templates/RecordTab/holdingsils/standard.phtml +++ b/themes/finc/templates/RecordTab/holdingsils/standard.phtml @@ -16,10 +16,10 @@ <?php endif; ?> </th> */ ?> - <td class="availability-column"> + <td data-title="<?=$this->transEsc('Availability')?>" class="availability-column"> <?php if ($holding['reserve'] == "Y"): ?> <link property="availability" href="http://schema.org/InStoreOnly"/> - <?=$this->transEsc("On Reserve - Ask at Circulation Desk")?><br/> + <?=$this->transEsc("On Reserve - Ask at Circulation Desk")?><br><br> <?php endif; ?> <?php if ($holding['use_unknown_message'] ?? false): ?> <span class="text-muted"><?=$this->transEsc("status_unknown_message")?></span> @@ -68,7 +68,7 @@ <?=$this->relais()->renderButtonIfActive($this->driver ?? null)?> <?php endif; ?> </td> - <td class="notes"> + <td data-title="<?=$this->transEsc('Notes')?>" class="notes"> <?php if (isset($holding['item_notes'])): ?> <div class="item-notes"> <strong><?=$this->transEsc("Item Notes")?>:</strong> diff --git a/themes/finc/templates/RecordTab/holdingsworldcat.phtml b/themes/finc/templates/RecordTab/holdingsworldcat.phtml new file mode 100644 index 00000000000..b2feb101316 --- /dev/null +++ b/themes/finc/templates/RecordTab/holdingsworldcat.phtml @@ -0,0 +1,34 @@ +<!-- finc: recordTab - holdingswordlcat --> +<?php $holdings = $this->tab->getHoldings(); ?> +<?php if (isset($holdings->diagnostic->message)): ?> + <p><?=$this->escapeHtml($holdings->diagnostic->message)?></p> +<?php elseif ($holdings && count($holdings) > 0): ?> + <h3><?=$this->transEsc('Holdings at Other Libraries')?></h3> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> + <?php foreach ($holdings as $holding): ?> + <tr> + <th colspan="2"> + <?php if (isset($holding->electronicAddress->text) && !empty($holding->electronicAddress->text)): ?> + <a href="<?=$this->escapeHtmlAttr($holding->electronicAddress->text)?>"><?=$this->escapeHtml($holding->physicalLocation)?></a> + <?php else: ?> + <?=$this->escapeHtml($holding->physicalLocation)?> + <?php endif; ?> + </th> + </tr> + <?php if (!empty($holding->physicalAddress->text)): ?> + <tr> + <th><?=$this->transEsc('Address')?>: </th> + <td data-title="<?= $this->transEsc('Address') ?>:"><?=$this->escapeHtml($holding->physicalAddress->text)?></td> + </tr> + <?php endif; ?> + <?php if (isset($holding->holdingSimple->copiesSummary->copiesCount)): ?> + <tr> + <th><?=$this->transEsc('Copies')?>: </th> + <td data-title="<?= $this->transEsc('Copies') ?>:"><?=$this->escapeHtml($holding->holdingSimple->copiesSummary->copiesCount)?></td> + </tr> + <?php endif; ?> + <?php endforeach; ?> + </table> +<?php endif; ?> +<!-- finc: recordTab - holdingswordlcat - END --> \ No newline at end of file diff --git a/themes/finc/templates/RecordTab/staffviewai.phtml b/themes/finc/templates/RecordTab/staffviewai.phtml index ed6fb81a856..d38b62fdc2e 100644 --- a/themes/finc/templates/RecordTab/staffviewai.phtml +++ b/themes/finc/templates/RecordTab/staffviewai.phtml @@ -3,11 +3,12 @@ // Set page title. $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBreadcrumb()); ?> -<table class="citation table table-striped"> +<?php /* include responsive data table - CK */ ?> +<table class="citation table table-striped table-resp-data"> <?php foreach ($this->driver->getAIRecord() as $field => $values): ?> <tr> <th><?=$this->escapeHtml($field)?></th> - <td> + <td data-title="<?= $this->escapeHtml($field) ?>:"> <?php if (!is_array($values)) { $values = array($values); } ?> @@ -21,7 +22,7 @@ $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBread <?php if ($openURL = $this->driver->getOpenUrl()): ?> <tr> <th><?=$this->escapeHtml('openURL')?></th> - <td> + <td data-title="<?= $this->escapeHtml('openURL') ?>:"> <?=$this->escapeHtml($openURL)?><br/> </td> </tr> @@ -30,14 +31,14 @@ $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBread if (!empty($fields)): ?> <tr> <th><?=$this->translate('SOLR')?></th> - <td></td> + <td data-title="<?= $this->escapeHtml('SOLR') ?>:"></td> </tr> <?php ksort($fields); foreach ($fields as $key => $values): ?> <?php if ($key === 'fullrecord') continue; ?> <tr> <th><?=$this->escapeHtml($key)?></th> - <td><?=$this->escapeHtml(is_array($values) ? implode(', ', $values) : $values)?></td> + <td data-title="<?= $this->escapeHtml($key) ?>:"><?=$this->escapeHtml(is_array($values) ? implode(', ', $values) : $values)?></td> </tr> <?php endforeach ?> <?php endif; ?> diff --git a/themes/finc/templates/RecordTab/staffviewarray.phtml b/themes/finc/templates/RecordTab/staffviewarray.phtml new file mode 100644 index 00000000000..c046901cfae --- /dev/null +++ b/themes/finc/templates/RecordTab/staffviewarray.phtml @@ -0,0 +1,19 @@ +<!-- finc: recordtab - staffviewarray --> +<?php + // Set page title. + $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBreadcrumb()); +?> +<?php /* include responsive data table - CK */ ?> +<table class="citation table table-striped table-resp-data"> + <?php foreach ($this->driver->getRawData() as $field => $values): ?> + <tr> + <th><?=$this->escapeHtml($field)?></th> + <td data-title="<?= $this->escapeHtml($field) ?>:"> + <?php foreach ((array)$values as $value): ?> + <?=$this->escapeHtml(is_array($value) ? print_r($value, true) : $value)?><br /> + <?php endforeach; ?> + </td> + </tr> + <?php endforeach; ?> +</table> +<!-- finc: recordtab - staffviewarray - END --> diff --git a/themes/finc/templates/RecordTab/staffviewmarc.phtml b/themes/finc/templates/RecordTab/staffviewmarc.phtml index 81a43575747..d18b65df2ed 100644 --- a/themes/finc/templates/RecordTab/staffviewmarc.phtml +++ b/themes/finc/templates/RecordTab/staffviewmarc.phtml @@ -8,21 +8,22 @@ $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBread <?php if ($openURL = $this->driver->getOpenUrl()): ?> <tr> <th><?=$this->escapeHtml('openURL')?></th> - <td> + <td data-title="<?= $this->escapeHtml('openURL') ?>:"> <?=$this->escapeHtml($openURL)?><br/> </td> </tr> <?php endif; ?> <?php $fields = $this->driver->getRawData(); if (!empty($fields)): ?> - <table class="citation table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="citation table table-striped table-resp-data"> <caption><?=$this->translate('SOLR')?></caption> <?php ksort($fields); foreach ($fields as $key => $values): ?> <?php if ($key === 'fullrecord') continue; ?> <tr> <th><?=$this->escapeHtml($key)?></th> - <td><?=$this->escapeHtml(is_array($values) ? implode(', ', $values) : $values)?></td> + <td data-title="<?= $this->escapeHtml($key) ?>:"><?=$this->escapeHtml(is_array($values) ? implode(', ', $values) : $values)?></td> </tr> <?php endforeach ?> </table> diff --git a/themes/finc/templates/RecordTab/topics.phtml b/themes/finc/templates/RecordTab/topics.phtml index d2792298ec0..13f6cd36929 100644 --- a/themes/finc/templates/RecordTab/topics.phtml +++ b/themes/finc/templates/RecordTab/topics.phtml @@ -4,7 +4,7 @@ $this->headTitle($this->translate('Topics') . ': ' . $this->driver->getBreadcrumb()); ?> -<table class="table table-striped"> +<table class="table table-striped table-resp-data"> <caption class="sr-only"> <?=$this->transEsc('Topics')?> </caption> @@ -12,7 +12,7 @@ $this->headTitle($this->translate('Topics') . ': ' . $this->driver->getBreadcrum <?php $contentDisplayed = true; ?> <tr> <th><?=$this->transEsc('RVK')?>:</th> - <td> + <td data-title="<?= $this->transEsc('RVK') ?>:"> <?php $i = 0; foreach ($rvk as $item): ?> <?=($i>0?"<br />":"") //no linebreak after last item ?> <?=$item['rvk']?> @@ -40,7 +40,7 @@ $this->headTitle($this->translate('Topics') . ': ' . $this->driver->getBreadcrum <?php $contentDisplayed = true; ?> <tr> <th><?=$this->transEsc('Subjects')?>: </th> - <td> + <td data-title="<?= $this->transEsc('Subjects') ?>:"> <?php foreach ($topics as $field): ?> <div class="subject-line" property="keywords"> <?php $subject = ''; ?> diff --git a/themes/finc/templates/ajax/status-full.phtml b/themes/finc/templates/ajax/status-full.phtml new file mode 100644 index 00000000000..303067afd3f --- /dev/null +++ b/themes/finc/templates/ajax/status-full.phtml @@ -0,0 +1,42 @@ +<!-- finc - templates - ajax - status-full --> +<?php /* include responsive data table - CK */ ?> +<table class="table table-condensed table-resp-data"> + <tr> + <th><?=$this->transEsc('Location')?></th> + <th><?=$this->transEsc('Call Number')?></th> + <th><?=$this->transEsc('Status')?></th> + </tr> + <?php $i = 0; foreach ($this->statusItems as $item): ?> + <?php if (++$i == 5) break; // Show no more than 5 items ?> + <tr> + <td data-title="<?= $this->transEsc('Location') ?>:" class="fullLocation"> + <?php $locationText = $this->transEsc('location_' . $item['location'], [], $item['location']); ?> + <?php if (isset($item['locationhref']) && $item['locationhref']): ?> + <a href="<?=$item['locationhref']?>" target="_blank"><?=$locationText?></a> + <?php else: ?> + <?=$locationText?> + <?php endif; ?> + </td> + <td data-title="<?= $this->transEsc('Call Number') ?>:" class="fullCallnumber"> + <?php if ($this->callnumberHandler): ?> + <a href="<?=$this->url('alphabrowse-home') ?>?source=<?=$this->escapeHtmlAttr($this->callnumberHandler) ?>&from=<?=$this->escapeHtmlAttr($item['callnumber']) ?>"><?=$this->escapeHtml($item['callnumber'])?></a> + <?php else: ?> + <?=$this->escapeHtml($item['callnumber'])?> + <?php endif; ?> + </td> + <td data-title="<?= $this->transEsc('Status') ?>:" class="fullAvailability"> + <?php if (isset($item['use_unknown_message']) && $item['use_unknown_message']): ?> + <span><?=$this->transEsc("status_unknown_message")?></span> + <?php elseif ($item['availability']): ?> + <span class="text-success"><?=($item['reserve'] == 'Y') ? $this->transEsc("On Reserve") : $this->transEsc("Available")?></span> + <?php else: ?> + <span class="text-danger"><?=$this->transEsc($item['status'])?></span> + <?php endif; ?> + </td> + </tr> + <?php endforeach; ?> +<?php if (count($this->statusItems) > 5): ?> + <tr><td colspan="3"><a href="<?=$this->url('record', ['id' => $this->statusItems[0]['id']])?>"><?=count($this->statusItems) - 5?> <?=$this->transEsc('more')?> ...</a></td></tr> +<?php endif; ?> +</table> +<!-- finc - templates - ajax - status-full - END --> diff --git a/themes/finc/templates/alphabrowse/home.phtml b/themes/finc/templates/alphabrowse/home.phtml new file mode 100644 index 00000000000..4fb26be322b --- /dev/null +++ b/themes/finc/templates/alphabrowse/home.phtml @@ -0,0 +1,152 @@ +<!-- finc - templates - alphabrowse - home --> +<?php + $this->headTitle($this->translate('Browse the Collection Alphabetically')); + $this->layout()->breadcrumbs = '<a href="' . $this->url('alphabrowse-home') . '">' . $this->transEsc('Browse Alphabetically') . '</a>'; + $baseQuery = ['source' => $this->source, 'from' => $this->from]; + + // Set up upper search box if necessary: + if ($this->searchbox()->alphaBrowseOptionsEnabled()) { + $this->layout()->searchbox = $this->context($this)->renderInContext( + 'search/searchbox.phtml', + [ + 'lookfor' => $this->from, + 'searchIndex' => 'AlphaBrowse:' . $this->source, + ] + ); + } +?> + +<?php /* LOAD THE LINK INFORMATION INTO $pageLinks, similar to smarty's {capture} */ ?> +<?php ob_start(); ?> + <ul class="pager"> + <?php if (isset($this->prevpage)): ?> + <li><a href="<?=$this->escapeHtmlAttr($this->url('alphabrowse-home', [], ['query' => $baseQuery + ['page' => $this->prevpage]]))?>"><span aria-hidden="true">«</span> <?=$this->transEsc('Prev')?></a></li> + <?php else: ?> + <li class="disabled"><a href="#"><span aria-hidden="true">«</span> <?=$this->transEsc('Prev')?></a></li> + <?php endif; ?> + + <?php if (isset($this->nextpage)): ?> + <li><a href="<?=$this->escapeHtmlAttr($this->url('alphabrowse-home', [], ['query' => $baseQuery + ['page' => $this->nextpage]]))?>"><?=$this->transEsc('Next')?> <span aria-hidden="true">»</span></a></li> + <?php else: ?> + <li class="disabled"><a href="#"><?=$this->transEsc('Next')?> <span aria-hidden="true">»</span></a></li> + <?php endif; ?> + </ul> +<?php $pageLinks = ob_get_contents(); ?> +<?php ob_end_clean(); ?> + +<?php /* If the top search box is not configured to show alphabrowse, or if no option + is selected yet, set up a separate form: */ ?> +<?php if (!$this->searchbox()->alphaBrowseOptionsEnabled() || empty($this->source)): ?> + <form class="form-inline" method="get" action="<?=$this->url('alphabrowse-home')?>" name="alphaBrowseForm" id="alphaBrowseForm"> + <label for="alphaBrowseForm_source"><?=$this->transEsc('Browse Alphabetically') ?></label> + <select id="alphaBrowseForm_source" name="source" class="form-control"> + <?php foreach ($this->alphaBrowseTypes as $key => $item): ?> + <option value="<?=$this->escapeHtmlAttr($key) ?>"<?php if ($this->source == $key): ?> selected="selected"<?php endif; ?>><?=$this->transEsc($item) ?></option> + <?php endforeach; ?> + </select> + <label for="alphaBrowseForm_from"><?=$this->transEsc('starting from') ?></label> + <input type="text" name="from" id="alphaBrowseForm_from" value="<?=$this->escapeHtmlAttr($this->from) ?>" class="form-control"/> + <input class="btn btn-primary" type="submit" value="<?=$this->transEsc('Browse') ?>"/> + </form> +<?php endif; ?> + +<?php if ($this->result): ?> + <?=$pageLinks ?> + <?php /* include responsive data table - CK */ ?> + <table class="alphabrowse table table-striped table-resp-data"> + <thead> + <tr> + <th class="<?=$this->source ?>"> + <?=$this->transEsc("browse_" . $this->source) ?> + </th> + <?php foreach ($this->extras as $e): ?> + <th><?=$this->transEsc("browse_" . $e) ?></th> + <?php endforeach; ?> + <th class="titles"><?=$this->transEsc("alphabrowse_matches") ?></th> + </tr> + </thead> + <tbody> + <?php $row = 0; ?> + <?php foreach ($this->result['Browse']['items'] as $item): ?> + <?php if (isset($this->highlight_row) && $row == $this->highlight_row): ?> + <tr class="browse-match"> + <?php if (isset($this->match_type) && ($this->match_type == "NONE")): ?> + <?php // this is the right row but query doesn't match value ?> + <td colspan="<?=count($this->extras) + 2;?>"><?=$this->transEsc('your_match_would_be_here')?></td> + </tr> + <tr> + <?php endif; ?> + <?php else: ?> + <tr> + <?php endif; ?> + <td data-title="<?=$this->transEsc('browse_' . $this->source) ?>" class="<?=$this->source ?>"> + <b> + <?php if ($url = $this->alphabrowse()->getUrl($this->source, $item)): ?> + <a href="<?=$this->escapeHtmlAttr($url)?>"><?=$this->escapeHtml($item['heading'])?></a> + <?php else: ?> + <?=$this->escapeHtml($item['heading'])?> + <?php endif; ?> + </b> + + <?php if (count($item['useInstead']) > 0): ?> + <div> + <?=$this->transEsc('Use instead') ?>: + <ul> + <?php foreach ($item['useInstead'] as $heading): ?> + <li><a href="<?=$this->escapeHtmlAttr($this->url('alphabrowse-home', [], ['query' => ['from' => $heading] + $baseQuery]))?>"><?=$this->escapeHtml($heading)?></a></li> + <?php endforeach; ?> + </ul> + </div> + <?php endif; ?> + + <?php if (count($item['seeAlso']) > 0): ?> + <div> + <?=$this->transEsc('See also') ?>: + <ul> + <?php foreach ($item['seeAlso'] as $heading): ?> + <li><a href="<?=$this->escapeHtmlAttr($this->url('alphabrowse-home', [], ['query' => ['from' => $heading] + $baseQuery]))?>"><?=$this->escapeHtml($heading)?></a></li> + <?php endforeach; ?> + </ul> + </div> + <?php endif; ?> + + <?php if ($item['note'] ?? false): ?> + <div> + <?=$this->transEsc('Note') ?>: + <ul> + <li><?=$this->escapeHtml($item['note'])?></li> + </ul> + </div> + <?php endif; ?> + </td> + + <?php foreach ($this->extras as $extraName): ?> + <td> + <?php + $extraDisplayArray = []; + foreach ($item['extras'][$extraName] as $j => $e): + $extraDisplayArray = array_unique(array_merge($extraDisplayArray, $e)); + endforeach; + echo empty($extraDisplayArray) ? ' ' : implode('<br />', $extraDisplayArray); + ?> + </td> + <?php endforeach; ?> + + <td data-title="<?=$this->transEsc("browse_" . $e) ?>" class="titles"> + <?php if ($item['count'] > 0): ?> + <?=$item['count']; ?> + <?php endif; ?> + </td> + </tr> + <?php $row++; ?> + <?php endforeach; ?> + <?php if (isset($this->highlight_end)): ?> + <tr class="browse-match"> + <td colspan="<?=count($this->extras) + 2;?>"><?=$this->transEsc('your_match_would_be_here')?></td> + </tr> + <?php endif; ?> + </tbody> + </table> + <?= $pageLinks ?> +<?php endif; ?> +<!-- finc - templates - alphabrowse - home - END --> diff --git a/themes/finc/templates/librarycards/home.phtml b/themes/finc/templates/librarycards/home.phtml index c4fab442f3d..c9935519e9a 100644 --- a/themes/finc/templates/librarycards/home.phtml +++ b/themes/finc/templates/librarycards/home.phtml @@ -14,6 +14,7 @@ <?php if ($this->libraryCards->count() == 0): ?> <div><?=$this->transEsc('You do not have any library cards')?></div> <?php else: ?> + <?php /* Table works without further responsiveness code inserted - CK */ ?> <table class="table table-striped"> <caption class="sr-only"> <?=$this->transEsc('Library Cards')?> diff --git a/themes/finc/templates/myresearch/fines.phtml b/themes/finc/templates/myresearch/fines.phtml index e158fe5e7fb..39ca35c02de 100644 --- a/themes/finc/templates/myresearch/fines.phtml +++ b/themes/finc/templates/myresearch/fines.phtml @@ -38,7 +38,7 @@ $tableData['Checked Out'][] = $this->escapeHtml($record['checkout'] ?? ''); $tableData['Due Date'][] = $this->escapeHtml($record['duedate'] ?? ''); $tableData['Fine'][] = $this->escapeHtml($record['fine'] ?? ''); - $tableData['Fine Date'][] = $this->escapeHtml($record['createdate'] ?? ''); + $tableData['fine_date_short'][] = $this->escapeHtml($record['createdate'] ?? ''); $tableData['Fee'][] = isset($record['amount']) ? $this->safeMoneyFormat($record['amount'] / 100.00) : ''; $tableData['Balance'][] = isset($record['balance']) @@ -64,7 +64,8 @@ $columns = array_keys($tableData); $rowCount = count($this->fines); ?> - <table class="table table-striped"> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data-md"> <caption class="sr-only"><?=$this->transEsc('Your Fines')?></caption> <tr> <?php foreach ($columns as $header): ?> @@ -74,7 +75,7 @@ <?php for ($row = 0; $row < $rowCount; $row++): ?> <tr> <?php foreach ($columns as $column): ?> - <td><?=$tableData[$column][$row]?></td> + <td data-title="<?=$this->transEsc($column)?>"><?=$tableData[$column][$row]?></td> <?php endforeach; ?> </tr> <?php endfor; ?> diff --git a/themes/finc/templates/myresearch/profile.phtml b/themes/finc/templates/myresearch/profile.phtml index a0f1061fc6a..5e584f7e85a 100644 --- a/themes/finc/templates/myresearch/profile.phtml +++ b/themes/finc/templates/myresearch/profile.phtml @@ -1,98 +1,100 @@ <!-- finc: myresearch - profile --> <?php -// Set up page title: -$this->headTitle($this->translate('My Profile')); - -// Set up breadcrumbs: -$this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a></li> <li class="active">' . $this->transEsc('Profile') . '</li>'; - -// Template for use by the renderArray helper: -$arrTemplate = '<tr><th>%%LABEL%%:</th><td> %%VALUE%%</td></tr>'; + // Set up page title: + $this->headTitle($this->translate('My Profile')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a></li> <li class="active">' . $this->transEsc('Profile') . '</li>'; + + // Template for use by the renderArray helper: + $arrTemplate = '<tr><th>%%LABEL%%:</th><td> %%VALUE%%</td></tr>'; ?> -<div class="<?=$this->layoutClass('mainbody')?>"> - <?php /* finc V5: toggler was missing, remove entire template (!) when fixed in BS3 theme - CK */ ?> - <?=$this->render('RecordDriver/DefaultRecord/offcanvas-toggler-myresearch'); ?> - - <h1><?=$this->transEsc('Your Profile')?></h1> - <?=$this->flashmessages();?> +<div class="<?= $this->layoutClass('mainbody') ?>"> + <?php /* finc V5: toggler was missing, remove entire template (!) when fixed in BS3 theme - CK */ ?> + <?= $this->render('RecordDriver/DefaultRecord/offcanvas-toggler-myresearch'); ?> + <h1><?= $this->transEsc('Your Profile') ?></h1> + <?= $this->flashmessages(); ?> + + <?php /* works well without inserting resp data titles - CK */ ?> <table class="table table-striped"> - <?=$this->renderArray( - $arrTemplate, $this->user, - [ - $this->transEsc('First Name') => 'firstname', - $this->transEsc('Last Name') => 'lastname', - // finc: show e-mail in table below - // $this->transEsc('Email') => 'email', - ] - )?> - <?php if (count($this->pickup ?? []) > 1): // Skip form if only one location: ?> + <?= $this->renderArray( + $arrTemplate, $this->user, + [ + $this->transEsc('First Name') => 'firstname', + $this->transEsc('Last Name') => 'lastname', + // finc: show e-mail in table below + // $this->transEsc('Email') => 'email', + ] + ) ?> + <?php if (count($this->pickup ?? []) > 1): // Skip form if only one location: ?> <tr> - <th><?=$this->transEsc('Preferred Library')?>:</th> - <?php - $selected = (strlen($this->profile['home_library'] ?? '') > 0) - ? $this->profile['home_library'] : $this->defaultPickupLocation - ?> + <th><?= $this->transEsc('Preferred Library') ?>:</th> + <?php + $selected = (strlen($this->profile['home_library'] ?? '') > 0) + ? $this->profile['home_library'] : $this->defaultPickupLocation + ?> <td> <form id="profile_form" class="form-inline" method="post"> <select id="home_library" name="home_library" class="form-control"> - <?php foreach ($this->pickup as $lib): ?> - <option - value="<?=$this->escapeHtmlAttr($lib['locationID'])?>"<?=($selected == $lib['locationID']) ? ' selected="selected"' : ''?>><?=$this->transEsc('location_' . $lib['locationDisplay'], null, $lib['locationDisplay'])?></option> - <?php endforeach; ?> + <?php foreach ($this->pickup as $lib): ?> + <option + value="<?= $this->escapeHtmlAttr($lib['locationID']) ?>"<?= ($selected == $lib['locationID']) ? ' selected="selected"' : '' ?>><?= $this->transEsc('location_' . $lib['locationDisplay'], null, $lib['locationDisplay']) ?></option> + <?php endforeach; ?> </select> - <input class="btn btn-default" type="submit" value="<?=$this->transEsc('Save')?>"/> + <input class="btn btn-default" type="submit" value="<?= $this->transEsc('Save') ?>"/> </form> </td> - <?php endif; ?> + <?php endif; ?> </table> <div id="account-actions"> - <?php if ($this->auth()->getManager()->supportsPasswordChange()): ?> - <a class="btn btn-default" href="<?=$this->url('myresearch-changepassword') ?>"> - <i class="fa fa-fw fa-lock" aria-hidden="true"></i> <?=$this->transEsc('Change Password') ?> - </a> - <?php endif; ?> - - <?php if ($this->accountDeletion): ?> - <a class="btn btn-default" href="<?=$this->url('myresearch-deleteaccount') ?>" data-lightbox> - <i class="fa fa-times"></i> <?=$this->transEsc('delete_account_title') ?> - </a> - <?php endif; ?> + <?php if ($this->auth()->getManager()->supportsPasswordChange()): ?> + <a class="btn btn-default" href="<?= $this->url('myresearch-changepassword') ?>"> + <i class="fa fa-fw fa-lock" aria-hidden="true"></i> <?= $this->transEsc('Change Password') ?> + </a> + <?php endif; ?> + + <?php if ($this->accountDeletion): ?> + <a class="btn btn-default" href="<?= $this->url('myresearch-deleteaccount') ?>" data-lightbox> + <i class="fa fa-times"></i> <?= $this->transEsc('delete_account_title') ?> + </a> + <?php endif; ?> </div> - - <?php if (is_array($this->profile)): ?> - <h2><?=$this->transEsc('Library Catalog Profile')?></h2> - <p> - <?=$this->context($this)->renderInContext('librarycards/selectcard.phtml', ['user' => $this->user]); ?> - </p> - <table class="table table-striped"> - <?=$this->renderArray( - $arrTemplate, $this->profile, - [ - $this->transEsc('First Name') => 'firstname', - $this->transEsc('Last Name') => 'lastname', - $this->transEsc('Address') . ' 1' => 'address1', - $this->transEsc('Address') . ' 2' => 'address2', - $this->transEsc('Zip') => 'zip', - $this->transEsc('City') => 'city', - $this->transEsc('Country') => 'country', - // finc: show e-mail here - $this->transEsc('Email') => 'email', - $this->transEsc('Phone Number') => 'phone', - $this->transEsc('Mobile Number') => 'mobile_phone', - $this->transEsc('Group') => 'group', - $this->transEsc('Expires') => 'expiration_date' - ] - )?> - </table> - <?php elseif ('ils-none' !== $this->ils()->getOfflineMode() && $this->patronLoginView && !empty($this->patronLoginView->getTemplate())): ?> - <?=$this->partial($this->patronLoginView);?> - <?php endif; ?> + + <?php if (is_array($this->profile)): ?> + <h2><?= $this->transEsc('Library Catalog Profile') ?></h2> + <p> + <?= $this->context($this)->renderInContext('librarycards/selectcard.phtml', ['user' => $this->user]); ?> + </p> + <?php /* Table works without further responsiveness code inserted - CK */ ?> + <table class="table table-striped"> + <?= $this->renderArray( + $arrTemplate, $this->profile, + [ + $this->transEsc('First Name') => 'firstname', + $this->transEsc('Last Name') => 'lastname', + $this->transEsc('Address') . ' 1' => 'address1', + $this->transEsc('Address') . ' 2' => 'address2', + $this->transEsc('Zip') => 'zip', + $this->transEsc('City') => 'city', + $this->transEsc('Country') => 'country', + // finc: show e-mail here + $this->transEsc('Email') => 'email', + $this->transEsc('Phone Number') => 'phone', + $this->transEsc('Mobile Number') => 'mobile_phone', + $this->transEsc('Group') => 'group', + $this->transEsc('Expires') => 'expiration_date' + ] + ) ?> + </table> + <?php elseif ('ils-none' !== $this->ils()->getOfflineMode() && $this->patronLoginView && !empty($this->patronLoginView->getTemplate())): ?> + <?= $this->partial($this->patronLoginView); ?> + <?php endif; ?> </div> -<div class="<?=$this->layoutClass('sidebar')?>"> - <?=$this->context($this)->renderInContext("myresearch/menu.phtml", ['active' => 'profile'])?> +<div class="<?= $this->layoutClass('sidebar') ?>"> + <?= $this->context($this)->renderInContext("myresearch/menu.phtml", ['active' => 'profile']) ?> </div> <!-- finc: myresearch - profile - END --> diff --git a/themes/finc/templates/search/history-table.phtml b/themes/finc/templates/search/history-table.phtml new file mode 100644 index 00000000000..296017e4c56 --- /dev/null +++ b/themes/finc/templates/search/history-table.phtml @@ -0,0 +1,59 @@ +<!-- finc - templates - search - history-table --> +<?php $saveSupported = $this->accountCapabilities()->getSavedSearchSetting() === 'enabled'; ?> +<?php /* include responsive data table - CK */ ?> +<table class="table table-striped table-resp-data-md"> + <tr> + <th><?= $this->transEsc("history_time") ?></th> + <th><?= $this->transEsc("history_search") ?></th> + <th><?= $this->transEsc("history_limits") ?></th> + <th><?= $this->transEsc("history_results") ?></th> + <?php if ($saveSupported): ?> + <th><?= $this->transEsc($this->showSaved ? "history_delete" : "history_save") ?></th><?php endif; ?> + </tr> + <?php foreach (($this->showSaved ? array_reverse($this->saved) : array_reverse($this->unsaved)) as $iteration => $info): ?> + <tr class="<?= $iteration % 2 == 1 ? 'even' : 'odd' ?>row"> + <td data-title="<?= $this->transEsc('history_time') ?>:"><?= $this->escapeHtml($this->dateTime()->convertToDisplayDateAndTime("U", $info->getStartTime())) ?></td> + + <td data-title="<?= $this->transEsc('history_search') ?>:"> + <?= $this->historylabel($info->getParams()->getSearchClassId()) ?> + <a href="<?= $this->url($info->getOptions()->getSearchAction()) . $info->getUrlQuery()->getParams() ?>"><?php + $desc = $info->getParams()->getDisplayQuery(); + echo empty($desc) ? $this->transEsc("history_empty_search") : $this->escapeHtml($desc); + ?></a> + </td> + + <td data-title="<?= $this->transEsc('history_limits') ?>:"> + <?php $info->getParams()->activateAllFacets(); + foreach ($info->getParams()->getFilterList(true) as $field => $filters): ?> + <?php foreach ($filters as $i => $filter): ?> + <?php if ($filter['operator'] == 'NOT') echo $this->transEsc('NOT') . ' '; + if ($filter['operator'] == 'OR' && $i > 0) echo $this->transEsc('OR') . ' '; ?> + <strong><?= $this->transEsc($field) ?></strong>: <?= $this->escapeHtml($filter['displayText']) ?><br/> + <?php endforeach; ?> + <?php endforeach; ?> + <?php foreach ($info->getParams()->getCheckboxFacets() as $facet): ?> + <?php if ($facet['selected']): ?> + <strong><?= $this->transEsc($facet['desc']) ?></strong><br/> + <?php endif; ?> + <?php endforeach; ?> + </td> + + <td data-title="<?= $this->transEsc('history_results') ?>:"><?= $this->escapeHtml($this->localizedNumber($info->getResultTotal())) ?></td> + <?php if ($saveSupported): ?> + + <td data-title="<?= $this->transEsc($this->showSaved ? "history_delete" : "history_save") ?>"> + <?php if ($this->showSaved): ?> + <a href="<?= $this->url('myresearch-savesearch') ?>?delete=<?= urlencode($info->getSearchId()) ?>&mode=history"><i class="fa fa-remove" + aria-hidden="true"></i> <?= $this->transEsc('history_delete_link') ?> + </a> + <?php else: ?> + <a href="<?= $this->url('myresearch-savesearch') ?>?save=<?= urlencode($info->getSearchId()) ?>&mode=history"><i class="fa fa-save" + aria-hidden="true"></i> <?= $this->transEsc("history_save_link") ?> + </a> + <?php endif; ?> + </td> + <?php endif; ?> + </tr> + <?php endforeach; ?> +</table> +<!-- finc - templates - search - history-table - END --> diff --git a/themes/finc/templates/search/list-authorfacets.phtml b/themes/finc/templates/search/list-authorfacets.phtml new file mode 100644 index 00000000000..22d89f7d594 --- /dev/null +++ b/themes/finc/templates/search/list-authorfacets.phtml @@ -0,0 +1,16 @@ +<!-- finc - templates - search - list-authorfacets --> +<?php /* include responsive data table - CK */ ?> +<table class="table table-striped table-resp-data"> + <tbody> + <tr> + <th><?=$this->transEsc("Author")?></th><th><?=$this->transEsc("sort_author_relevance")?></th> + </tr> + <?php foreach ($this->results->getResults() as $record): ?> + <tr> + <td data-title="<?=$this->transEsc('Author')?>"><a href="<?=$this->url('author-home')?>?author=<?=urlencode($record['value'])?>"><?=$this->escapeHtml($record['value'])?></a></td> + <td data-title="<?= $this->transEsc('sort_author_relevance') ?>:"><?=$this->escapeHtml($record['count'])?></td> + </tr> + <?php endforeach; ?> + </tbody> +</table> +<!-- finc - templates - search - list-authorfacets - END --> diff --git a/themes/finc/templates/search/reservessearch.phtml b/themes/finc/templates/search/reservessearch.phtml new file mode 100644 index 00000000000..a106b10f969 --- /dev/null +++ b/themes/finc/templates/search/reservessearch.phtml @@ -0,0 +1,91 @@ +<!-- finc - templates - search - reservessearch --> +<?php + // Set up page title: + $this->headTitle($this->translate('Reserves Search')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Reserves') . '</li>'; + + // Convenience variables: + $reservesLookfor = $this->params->getDisplayQuery(); + + $this->searchClassId = 'SolrReserves'; +?> + +<div class="<?= $this->layoutClass('mainbody') ?>"> + <h3><?= $this->transEsc('Search For Items on Reserve') ?></h3> + <form class="form-inline" method="get" name="reservesSearchForm"> + <label for="reservesSearchForm_lookfor"><?= $this->transEsc("Your search terms") ?></label> + <input id="reservesSearchForm_lookfor" type="text" name="lookfor" size="40" + value="<?= $this->escapeHtmlAttr($reservesLookfor) ?>" <?= $this->searchOptions('SolrReserves')->autocompleteEnabled() ? ' class="autocomplete searcher:SolrReserves type:Reserves"' : '' ?> /> + <input class="btn btn-primary" type="submit" name="submit" value="<?= $this->transEsc("Find") ?>"/> + </form> + <script type="text/javascript">$("#reservesSearchForm_lookfor").focus()</script> + + <div class="resulthead"> + <div class="pull-left flip"> + <?php $qtime = $this->results->getQuerySpeed(); ?> + <?php if (($recordTotal = $this->results->getResultTotal()) > 0): ?> + <?php + $transParams = [ + '%%start%%' => $this->localizedNumber($this->results->getStartRecord()), + '%%end%%' => $this->localizedNumber($this->results->getEndRecord()), + '%%total%%' => $this->localizedNumber($recordTotal), + '%%lookfor%%' => $this->escapeHtml($reservesLookfor) + ]; + ?> + <?= $this->translate('showing_results_of_for_html', $transParams); ?><?php if ($qtime): ?>,<?php endif; ?> + <?php endif; ?> + <?php if ($qtime): ?> + <?= $this->transEsc('query time') ?>: <?= $this->localizedNumber($qtime, 2) . $this->transEsc('seconds_abbrev') ?> + <?php endif; ?> + </div> + + <?php if ($recordTotal > 0): ?> + <div class="pull-right flip"> + <?= $this->render('search/controls/sort.phtml') ?> + </div> + <?php endif; ?> + </div> + <?php if ($recordTotal < 1): ?> + <p class="error"><?= $this->translate('nohit_lookfor_html', ['%%lookfor%%' => $this->escapeHtml($reservesLookfor)]) ?></p> + <?php if (isset($this->parseError)): ?> + <p class="error"><?= $this->transEsc('nohit_parse_error') ?></p> + <?php endif; ?> + <?php else: ?> + <?php /* include responsive data table - CK */ ?> + <table class="table table-striped table-resp-data"> + <tr> + <th class="department"><?= $this->transEsc('Department') ?></th> + <th class="course"><?= $this->transEsc('Course') ?></th> + <th class="instructor"><?= $this->transEsc('Instructor') ?></th> + <th class="items"><?= $this->transEsc('Items') ?></th> + </tr> + <?php foreach ($this->results->getResults() as $record): ?> + <?php + $url = $this->currentPath() . $this->escapeHtmlAttr( + '?inst=' . urlencode($record->getInstructorId()) + . '&course=' . urlencode($record->getCourseId()) + . '&dept=' . urlencode($record->getDepartmentId()) + ); + ?> + <tr> + <td data-title="<?= $this->transEsc("Department") ?>:" class="department"><a href="<?= $url ?>"><?= $this->escapeHtml($record->getDepartment()) ?></a></td> + <td data-title="<?= $this->transEsc("Course") ?>:" class="course"><a href="<?= $url ?>"><?= $this->escapeHtml($record->getCourse()) ?></a></td> + <td data-title="<?= $this->transEsc("Instructor") ?>:" class="instructor"><a href="<?= $url ?>"><?= $this->escapeHtml($record->getInstructor()) ?></a></td> + <td data-title="<?= $this->transEsc("Items") ?>:" class="items"><?= $this->escapeHtml($record->getItemCount()) ?></td> + </tr> + <?php endforeach; ?> + </table> + <?= $this->paginationControl($this->results->getPaginator(), 'Sliding', 'search/pagination.phtml', ['results' => $this->results]) ?> + <?php endif; ?> +</div> + +<?php /* Narrow Search Options */ ?> +<div class="<?= $this->layoutClass('sidebar') ?>"> + <?php foreach ($this->results->getRecommendations('side') as $current): ?> + <?= $this->recommend($current) ?> + <?php endforeach; ?> +</div> +<?php /* End Narrow Search Options */ ?> +<!-- finc - templates - search - reservessearch - END --> -- GitLab