diff --git a/local/config/vufind/facets.ini b/local/config/vufind/facets.ini index 5b40659817517ee7b9d9716eca2ddb861f223375..fdf7ccf912b6d48609842ec039ab4ce7251325aa 100644 --- a/local/config/vufind/facets.ini +++ b/local/config/vufind/facets.ini @@ -239,3 +239,15 @@ hide_facets = "genre_facet,era_facet,geographic_facet" ; Special facets sorted alphabetically. [SortedByIndex] ;index[] = format + +; Special terms (key), which can't / shouldn't be translated but marked as other language (value) for BARF reasons +[LanguageTags] +De Gruyter Journals / Social Sciences and Humanities = "en" +Free = "en" +JSTOR Music Archive = "en" +Local = "en" +Microform = "en" +Open Access = "en" +Online = "en" +Proceeding = "en" +Répertoire International des Sources Musicales = "fr" diff --git a/local/languages/de.ini b/local/languages/de.ini index b257ab271cbbbf0aba982fd9af093519c8487ff9..6f2899bb1c01b4f0b5df5e8aaceeba57c7d4edeb 100644 --- a/local/languages/de.ini +++ b/local/languages/de.ini @@ -254,6 +254,7 @@ Due Date = Fällig am Each field should have a value = "Jedes Feld sollte einen Wert besitzen" For technical reasons, this title can not be saved. = "Dieser Titel läßt sich aus technischen Gründen leider nicht als Favorit abspeichern." Edit = Bearbeiten +Edit this Advanced Search = "Suche bearbeiten" Edition = Ausgabe Electronic = Online-Ressource Electronic Article = "Elektronischer Aufsatz" @@ -506,6 +507,8 @@ Stackrequest = "Bestellungen" Stack Request = "Bestellungen" Stacks = Magazin Staff View = Internformat +Start a new Advanced Search = "Neue erweiterte Suche" +Start a new Basic Search = "Neue einfache Suche" Start Page = Startseite Start browsing again = Stöbern neu beginnen Status = Status @@ -1803,11 +1806,12 @@ footer_ezb = "Elektronische Zeitschriftenbibliothek (EZB)" footer_kvk = "Karlsruher Virtueller Katalog (KVK)" footer_dbis = "Datenbankinformationssystem (DBIS)" footer_nwb = "nwb-Datenbank" +Footer-Powered-By-Text = "Betrieben mit" ; Powered by alt and title tags -vufind-logo_alt = "VuFind" +vufind-logo_alt = "VuFind-Software" vufind-logo_title = "Weitere Informationen in englischer Sprache finden Sie auf VuFind.org" -finc-logo_alt = "finc" +finc-logo_alt = "finc-Software" finc-logo_title = "Weitere Informationen zu 'finc' finden Sie in unserem finc-Blog" ; source providers @@ -2043,9 +2047,6 @@ form-button-submit = "Ausgefülltes Formular abschicken" ; #17601 offcanvas-toggler-search-tips = "Suchtipps einblenden" -; #18019 remove if using VuFind 7.0 -select_item = "Titel auswählen" - ; #17993 ; only for German translation Email = "Mailen" @@ -2054,3 +2055,12 @@ bookbag_email_selected = "Links zu ausgewählten Medien per E-Mail versenden" ; #18441 Skip_navigation_links = "Sprunglinks zur Suche und zum Inhalt" + +; #18019 & #18754 +select_item = "Titel wählen" +select_item_search_result = "Titel zum Mailen, Exportieren, Drucken, Speichern oder Merken auswählen" +select_item_favorite = "Titel zum Mailen, Löschen, Exportieren, Drucken oder Merken auswählen" +select_item_hold_cancel = "Titel auswählen, um Bestellung oder Vormerkung zu stornieren" +select_item_checked_out_renew = "Titel zum Verlängern auswählen" +select_item_ill_request_cancel = "Titel auswählen, um Fernleihanfrage zu stornieren" +select_item_storage_retrieval_request_cancel = "Titel auswählen, um Magazinbestellung zu stornieren" diff --git a/local/languages/en.ini b/local/languages/en.ini index a4cb46bf4b95a77e2b4f17edcbcb02e68f6345b7..389553aabc039aac15129e38c4a5b03168b9177a 100644 --- a/local/languages/en.ini +++ b/local/languages/en.ini @@ -312,7 +312,7 @@ VideoTape = Video Tape ;Video Disc = Video Disc ;Video Reel = Video Reel ;Video Tape = Video Tape -;Visual Media = Visual Media +Visual Media = Visual Media ;------ ; end of remaining format tanslations @@ -1921,11 +1921,12 @@ footer_ezb = "Electronic Journals Library (EZB)" footer_kvk = "Karlsruhe Virtual Catalog (KVK)" footer_dbis = "Database Information System (DBIS)" footer_nwb = "Database nwb" +Footer-Powered-By-Text = "Powered by" ; Powered by alt and title tags -vufind-logo_alt = "VuFind" +vufind-logo_alt = "VuFind software" vufind-logo_title = "For further informationen please visit VuFind.org" -finc-logo_alt = "finc" +finc-logo_alt = "finc software" finc-logo_title = "For further informationen in German on 'finc' please visit our finc-Blog" ; Tab to Close-text for closing FNDTN ToolTips @@ -2131,8 +2132,14 @@ form-button-submit = "Submit the completed form" ; #17601 offcanvas-toggler-search-tips = "Show search help" -; #18019 remove if using VuFind 7.0 -select_item = "Select item" - ; #18441 Skip_navigation_links = "Skip navigation links" + +; #18019 & #18754 +select_item = "Select item" +select_item_search_result = "Select item for mailing, exporting, printing, saving as favorite or adding to book bag" +select_item_favorite = "Select item for mailing, removing from favorites, exporting, printing or adding to book bag" +select_item_hold_cancel = "Select item for canceling holds or recall" +select_item_checked_out_renew = "Select item for renewing" +select_item_ill_request_cancel = "Select item for canceling interlibrary loan requests" +select_item_storage_retrieval_request_cancel = "Select item for canceling storage retrieval requests" diff --git a/module/finc/src/finc/Controller/MyResearchController.php b/module/finc/src/finc/Controller/MyResearchController.php index 9fadc523e76e2765998465baacb5ecaf4a2f8fa0..c70b0f6cfbc9a6c7531f8892fc3b4d6e50e42730 100644 --- a/module/finc/src/finc/Controller/MyResearchController.php +++ b/module/finc/src/finc/Controller/MyResearchController.php @@ -143,7 +143,7 @@ class MyResearchController extends \VuFind\Controller\MyResearchController imple $results = $runner->run($request, 'Favorites', $setupCallback); return $this->createViewModel( - ['params' => $results->getParams(), 'results' => $results] + ['params' => $results->getParams(), 'results' => $results, 'context' => "favorite"] ); } catch (ListPermissionException $e) { if (!$this->getUser()) { diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php index ae53d4e3012e8f0c6a13288b51f37492e9ca1100..31b918110ee4f57b3270a454c0a432382ec3e66b 100644 --- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php +++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php @@ -46,7 +46,6 @@ trait SolrMarcFincTrait * Returns true if the record supports real-time AJAX status lookups. * * @return bool - * @access public */ public function supportsAjaxStatus() { @@ -58,7 +57,6 @@ trait SolrMarcFincTrait * in 040$e) * * @return bool - * @access public */ public function isRDA() { @@ -98,7 +96,6 @@ trait SolrMarcFincTrait $indicator1 = $url->getIndicator('1'); $indicator2 = $url->getIndicator('2'); - $isISIL = false; if ($isil) { @@ -164,14 +161,12 @@ trait SolrMarcFincTrait return $retVal; } - /** * Return a description about volumes in stock via consortial field * with subfield $h. * Currently only used in DE-L152. * * @return array - * @access public */ public function getVolumesInStock() { @@ -185,7 +180,6 @@ trait SolrMarcFincTrait * Currently only used in DE-L152. * * @return array - * @access public */ public function getVolumesCommentInStock() { @@ -231,7 +225,6 @@ trait SolrMarcFincTrait * LocalMarcFieldOfLibrary $m * * @return null|string - * @access public */ public function getLocalOrderInformation() { @@ -263,7 +256,6 @@ trait SolrMarcFincTrait * university library of Freiberg at finc marc 972i. * * @return string - * @access protected */ protected function getLocalGivenCallnumber() { @@ -280,7 +272,6 @@ trait SolrMarcFincTrait * Get an array of supplements and special issue entry. * * @return array - * @access public * @link http://www.loc.gov/marc/bibliographic/bd770.html */ public function getSupplements() @@ -315,7 +306,6 @@ trait SolrMarcFincTrait * field 024 indicator 8 subfield $a. Refs #1442 * * @return array - * @access public */ public function getIndexOfGermanPrints() { @@ -331,10 +321,10 @@ trait SolrMarcFincTrait } foreach ($fields as $field) { // ->getIndicator(position) - if (in_array($field->getIndicator('1'),$lookfor_indicators)) { + if (in_array($field->getIndicator('1'), $lookfor_indicators)) { if ($subfield = $field->getSubfield('a')) { $data = $subfield->getData(); - if (stripos($data,'VD') === 0) { + if (stripos($data, 'VD') === 0) { $retval[] = $data; } } @@ -343,12 +333,10 @@ trait SolrMarcFincTrait return $retval; } - /** * Method reading MARC field 24 * * @return array - * @access public */ public function getOtherIdentifiers() { @@ -374,7 +362,6 @@ trait SolrMarcFincTrait * of the Petrucci music library subfield 590b * * @return array - * @access public */ public function getInstrumentation() { @@ -385,7 +372,6 @@ trait SolrMarcFincTrait * Get the ISSN from a record. Refs #969 * * @return array - * @access public */ public function getISSNs() { @@ -396,7 +382,6 @@ trait SolrMarcFincTrait * Get the ISSN from a the parallel title of a record. Refs #969 * * @return array - * @access public */ public function getISSNsParallelTitles() { @@ -575,7 +560,6 @@ trait SolrMarcFincTrait * subfield t and (if present) subfield r. * * @return array - * @access public */ public function getWorkPartTitleDetails() { @@ -588,7 +572,7 @@ trait SolrMarcFincTrait #return preg_replace( # $titleRegexPattern, '', trim($string) #); - return rtrim($string, " \t\n\r\0\x0B".'.:-/'); + return rtrim($string, " \t\n\r\0\x0B" . '.:-/'); }; if ($fields = $this->getMarcRecord()->getFields('505')) { @@ -618,14 +602,13 @@ trait SolrMarcFincTrait * from MARC field 700. * * @return array - * @access public */ public function getWorkTitleDetails() { $workTitles = []; $truncateTrail = function ($string) { - return rtrim($string, " \t\n\r\0\x0B".'.:-/'); + return rtrim($string, " \t\n\r\0\x0B" . '.:-/'); }; if ($fields = $this->getMarcRecord()->getFields('700')) { @@ -729,7 +712,6 @@ trait SolrMarcFincTrait * Refs #328 * * @return array - * @access public */ public function getJournalHoldings() { @@ -762,9 +744,9 @@ trait SolrMarcFincTrait } $retval[$key]['link'] = '/Record/' . $this->getUniqueID() - .'/HoldJournalCHE?callnumber=' + . '/HoldJournalCHE?callnumber=' . urlencode($retval[$key]['callnumber']) - .'&barcode=' . $barcode; + . '&barcode=' . $barcode; $key++; } } @@ -777,7 +759,6 @@ trait SolrMarcFincTrait * Seems to be very extraordinary special case. Refs #1302 * * @return array - * @access protected */ protected function getLocalAccessNumber() { @@ -789,14 +770,13 @@ trait SolrMarcFincTrait } return []; } - + /** * Return a local access number for call number. * Marc field depends on library e.g. 986 for GfzK. * Seems to be very extraordinary special case. Refs #7924 * * @return array - * @access public */ public function getLocalSubject() { @@ -842,7 +822,6 @@ trait SolrMarcFincTrait * Get all local class subjects. First realization for HGB. Refs #2626 * * @return array - * @access protected */ protected function getLocalClassSubjects() { @@ -865,14 +844,12 @@ trait SolrMarcFincTrait return $array; } - /** * Returning local format field of a library using an consortial defined * field with subfield $c. Marc field depends on library e.g. 970 for HMT or * 972 for TUBAF * * @return array - * @access public */ public function getLocalFormat() { @@ -895,7 +872,6 @@ trait SolrMarcFincTrait * settings in config.ini. Refs 7063 * * @return mixed - * @access protected */ protected function getLocalMarcFieldOfLibrary() { @@ -929,7 +905,6 @@ trait SolrMarcFincTrait * Refs #1308 * * @return array - * @access protected */ protected function getLocalNotice() { @@ -944,7 +919,6 @@ trait SolrMarcFincTrait * Marc field depends on library e.g. 986 for GFZK. Refs #8146 * * @return array - * @access public */ public function getLocalSignature() { @@ -968,7 +942,6 @@ trait SolrMarcFincTrait * subfield $h. Marc field depends on library e.g. 972 for TUF. * * @return array - * @access protected */ protected function getLocalStockSpecification() { @@ -986,7 +959,6 @@ trait SolrMarcFincTrait * at the marc field. * * @return mixed null if there's no field or array with results - * @access public */ public function getMusicHeading() { @@ -1015,7 +987,6 @@ trait SolrMarcFincTrait * getting previous title of marc field 780. * * @return array - * @access protected */ public function getNewerTitles() { @@ -1047,13 +1018,11 @@ trait SolrMarcFincTrait return $array; } - /** * Get notice of a title representing a special case of University * library of Chemnitz: MAB field 999l * * @return string - * @access protected */ protected function getNotice() { @@ -1067,7 +1036,6 @@ trait SolrMarcFincTrait * mentioned record in 787 $a{t}. * * @return array|null - * @access public */ public function getOtherRelationshipEntry() { @@ -1108,7 +1076,6 @@ trait SolrMarcFincTrait * of the Petrucci music library subfield 590a * * @return array - * @access public */ public function getPieceStyle() { @@ -1122,7 +1089,6 @@ trait SolrMarcFincTrait * @todo More flexible implementation * * @return array - * @access protected */ protected function getParallelEditions() { @@ -1159,7 +1125,6 @@ trait SolrMarcFincTrait * Get an array of previous titles for the record. * * @return array - * @access protected */ public function getPreviousTitles() { @@ -1187,7 +1152,7 @@ trait SolrMarcFincTrait $array[$key]['id'] = current($linkedRecords['first_results'])->getUniqueId(); } } // end foreach - + return $array; } @@ -1199,7 +1164,6 @@ trait SolrMarcFincTrait * @todo pass prices by euro currency * * @return string - * @access public */ public function getPrice() { @@ -1213,7 +1177,7 @@ trait SolrMarcFincTrait ['lhs','rhs','error','icc'], ['"lhs"','"rhs"','"error"','"icc"'], file_get_contents( - "http://www.google.com/ig/calculator?q=".$price.$currency."=?EUR" + "http://www.google.com/ig/calculator?q=" . $price . $currency . "=?EUR" ) ), true @@ -1224,7 +1188,7 @@ trait SolrMarcFincTrait return money_format('%.2n', $rhs[0]); } } - return $currency . " ". $price; + return $currency . " " . $price; } return ""; } @@ -1233,7 +1197,6 @@ trait SolrMarcFincTrait * Get the provenience of a title. * * @return array - * @access public */ public function getProvenience() { @@ -1246,7 +1209,6 @@ trait SolrMarcFincTrait * 972 for TUBAF * * @return bool - * @access protected */ protected function getPurchaseInformation() { @@ -1262,7 +1224,6 @@ trait SolrMarcFincTrait * Get a short list of series for ISBD citation style * * @return array - * @access protected * @link http://www.loc.gov/marc/bibliographic/bd830.html */ protected function getSeriesWithVolume() @@ -1274,7 +1235,6 @@ trait SolrMarcFincTrait * Get local classification of UDK. * * @return array - * @access protected * @deprecated Seems to be only for HTWK in use formerly? */ protected function getUDKs() @@ -1326,7 +1286,6 @@ trait SolrMarcFincTrait * Get addional entries for personal names. * * @return array - * @access protected * @link http://www.loc.gov/marc/bibliographic/bd700.html */ protected function getAdditionalAuthors() @@ -1357,7 +1316,6 @@ trait SolrMarcFincTrait * for UBL only implemented. Refs. #1315 * * @return array - * @access public */ public function getAdditionals() { @@ -1390,7 +1348,7 @@ trait SolrMarcFincTrait // only proceed if we actually have a value for the text if (count($text) > 0) { $array[$i] = [ - 'text' => implode(', ', $text), + 'text' => implode(', ', $text), 'identifier' => ($line->getSubfield('i')) ? $line->getSubfield('i')->getData() : '', 'note' => ($line->getSubfield('n')) @@ -1409,7 +1367,7 @@ trait SolrMarcFincTrait foreach ($linkFields as $current) { $linked[] = $current->getData(); } - $linkedRecords = $this->searchRelatedRecords('isbn',$linked, 1); + $linkedRecords = $this->searchRelatedRecords('isbn', $linked, 1); if (!empty($linkedRecords['first_results'])) { $array[$i]['related_records'] = $linkedRecords; } @@ -1423,7 +1381,7 @@ trait SolrMarcFincTrait foreach ($linkFields as $current) { $linked[] = $current->getData(); } - $linkedRecords = $this->searchRelatedRecords('isbn',$linked, 1); + $linkedRecords = $this->searchRelatedRecords('isbn', $linked, 1); if (!empty($linkedRecords['first_results'])) { $array[$i] = [ 'related_records' => $linkedRecords, @@ -1450,12 +1408,12 @@ trait SolrMarcFincTrait { $array = []; $fields = [ - '773' => ['a'=>['',': '], 't'=>['',''], 'g'=>[' ; ','']], - '490' => ['a'=>['','']], - '800' => ['a'=>['',': '], 't'=>['',''], 'v'=>[' ; ',''] ,'g'=>[' ; ','']], - '810' => ['a'=>['',': '], 't'=>['',''], 'v'=>[' ; ',''] ,'g'=>[' ; ','']], - '811' => ['a'=>['',': '], 't'=>['',''], 'v'=>[' ; ',''] ,'g'=>[' ; ','']], - '830' => ['a'=>['',''], 'v'=>[' ; ','']] + '773' => ['a' => ['',': '], 't' => ['',''], 'g' => [' ; ','']], + '490' => ['a' => ['','']], + '800' => ['a' => ['',': '], 't' => ['',''], 'v' => [' ; ',''],'g' => [' ; ','']], + '810' => ['a' => ['',': '], 't' => ['',''], 'v' => [' ; ',''],'g' => [' ; ','']], + '811' => ['a' => ['',': '], 't' => ['',''], 'v' => [' ; ',''],'g' => [' ; ','']], + '830' => ['a' => ['',''], 'v' => [' ; ','']] ]; $i = 0; @@ -1487,9 +1445,9 @@ trait SolrMarcFincTrait } elseif (empty($val)) { continue; } else { - $text[] = $l_delim.$val->getData().$r_delim; - if (in_array($subfield,['a','t'])) $label[] = $l_delim.$val->getData().$r_delim; - else $suffix[] = $l_delim.$val->getData().$r_delim; + $text[] = $l_delim . $val->getData() . $r_delim; + if (in_array($subfield, ['a','t'])) $label[] = $l_delim . $val->getData() . $r_delim; + else $suffix[] = $l_delim . $val->getData() . $r_delim; } } else { if (empty($val)) { @@ -1497,21 +1455,21 @@ trait SolrMarcFincTrait } if ($field == '490') { if ($line->getIndicator(1) == 0) { - $text[] = $l_delim.$val->getData().$r_delim; - if ($subfield === 'a') $label[] = $l_delim.$val->getData().$r_delim; - else $suffix[] = $l_delim.$val->getData().$r_delim; + $text[] = $l_delim . $val->getData() . $r_delim; + if ($subfield === 'a') $label[] = $l_delim . $val->getData() . $r_delim; + else $suffix[] = $l_delim . $val->getData() . $r_delim; } } elseif ($subfield == 'v' && in_array($field, ['800', '810', '811'])) { if (!empty($val)) { - $suffix[] = $text[] = $l_delim.$val->getData().$r_delim; + $suffix[] = $text[] = $l_delim . $val->getData() . $r_delim; // do not use the next (and last) subfield $g, // if $v is already set break; } } else { - $text[] = $l_delim.$val->getData().$r_delim; - if (in_array($subfield,['a','t'])) $label[] = $l_delim.$val->getData().$r_delim; - else $suffix[] = $l_delim.$val->getData().$r_delim; + $text[] = $l_delim . $val->getData() . $r_delim; + if (in_array($subfield, ['a','t'])) $label[] = $l_delim . $val->getData() . $r_delim; + else $suffix[] = $l_delim . $val->getData() . $r_delim; } } } @@ -1520,9 +1478,9 @@ trait SolrMarcFincTrait // only proceed if we actually have a value for the text if (count($text) > 0) { $array[$i] = [ - 'text' => implode('', $text), - 'label' => !empty($label) ? implode('',$label) : '', - 'suffix' => !empty($suffix) ? implode('',$suffix) : '', + 'text' => implode('', $text), + 'label' => !empty($label) ? implode('', $label) : '', + 'suffix' => !empty($suffix) ? implode('', $suffix) : '', 'identifier' => ($line->getSubfield('i')) ? $line->getSubfield('i')->getData() : 'Set Multipart' ]; @@ -1551,7 +1509,6 @@ trait SolrMarcFincTrait * Refs. #8509 * * @return array|null - * @access public */ public function getAdditionalNotes() { @@ -1574,13 +1531,12 @@ trait SolrMarcFincTrait * Returns all notes. * * @return array - * @access public */ public function getAllNotes() { $notes = array_merge( - (array) $this->getGeneralNotes(), - (array) $this->getAdditionalNotes() + (array)$this->getGeneralNotes(), + (array)$this->getAdditionalNotes() ); foreach ($notes as &$note) { if (preg_match('/(.*)\.\s*$/', $note, $matches)) { @@ -1595,7 +1551,6 @@ trait SolrMarcFincTrait * Refs #8369 * * @return array - * @access public */ public function getHierarchyParentID() { @@ -1617,7 +1572,7 @@ trait SolrMarcFincTrait if ($field->getSubfield('w')) { // refactored with #18333 $related = $this->getRelatedKxpRecord($field); - if (!empty( $related['first_results'] ?? [])) { + if (!empty($related['first_results'] ?? [])) { $parentID[] = current($related['first_results'])->getUniqueId(); } } elseif ($fieldNumber == '490') { @@ -1645,7 +1600,6 @@ trait SolrMarcFincTrait * Refs #8369 * * @return array - * @access public */ public function getHierarchyParentTitle() { @@ -1728,7 +1682,6 @@ trait SolrMarcFincTrait * the bsz heading subjects chains. * * @return array - * @access public */ public function getAllSubjectHeadingsExtended() { @@ -1740,7 +1693,7 @@ trait SolrMarcFincTrait foreach ($fields as $field) { $subjectrow = $field->getIndicator('1'); if ($subjectrow != $firstindicator) { - $key = (isset($key) ? $key +1 : 0); + $key = (isset($key) ? $key + 1 : 0); $firstindicator = $subjectrow; } // #5668 #5046 BSZ MARC may contain uppercase subfields but solrmarc set @@ -1770,7 +1723,6 @@ trait SolrMarcFincTrait * @param boolean $extended If dynamic index extension activated * * @return array - * @access public */ public function getAllSubjectHeadings($extended = false) { @@ -1845,15 +1797,14 @@ trait SolrMarcFincTrait * Check if Topics exists. Realized for instance of UBL only. * * @return boolean True if topics exist. - * @access public */ public function hasTopics() { $rvk = $this->getRvkWithMetadata(); - return ( + return parent::hasTopics() || (is_array($rvk) && count($rvk) > 0) - ); + ; } /** @@ -1861,7 +1812,6 @@ trait SolrMarcFincTrait * for UBL only implemented. * * @return array - * @access public */ public function getTopics() { @@ -1916,7 +1866,6 @@ trait SolrMarcFincTrait * for petrucci music library. * * @return array - * @access protected */ protected function getCatalogueNumber() { @@ -1927,7 +1876,6 @@ trait SolrMarcFincTrait * Get the volume number * * @return array - * @access protected */ protected function getVolume() { @@ -1939,7 +1887,6 @@ trait SolrMarcFincTrait * * @return array Return multidimensional array with key of 'coordinates' * and 'scale' - * @access public */ public function getCartographicData() { @@ -1966,7 +1913,6 @@ trait SolrMarcFincTrait * Get an array of content notes. * * @return array - * @access protected */ protected function getContentNote() { @@ -1977,7 +1923,6 @@ trait SolrMarcFincTrait * Get an array of included titles. * * @return array - * @access protected */ protected function getIncludedTitles() { @@ -1990,7 +1935,6 @@ trait SolrMarcFincTrait * Get dissertation notes for the record. * * @return array $retVal - * @access public */ public function getDissertationNote() { @@ -2015,7 +1959,6 @@ trait SolrMarcFincTrait * @param boolean $allow_multiple_results * * @return string|array - * @access protected */ protected function getRelatedItems($allow_multiple_results = false) { @@ -2027,7 +1970,7 @@ trait SolrMarcFincTrait } public function searchRelatedRecords($field, $values, $limit = 20, - $filters=[], $backend_id = 'Solr' + $filters = [], $backend_id = 'Solr' ) { if (!empty($filters)) { @@ -2078,7 +2021,6 @@ trait SolrMarcFincTrait * Get RVK classification number with metadata from Marc records. Refs #599 * * @return array - * @access public */ public function getRvkWithMetadata() { @@ -2119,7 +2061,6 @@ trait SolrMarcFincTrait * Get RVK notation * * @return array - * @access public */ public function getRVK() { @@ -2148,7 +2089,6 @@ trait SolrMarcFincTrait * Get BK notation * * @return array - * @access public */ public function getBK() { @@ -2200,7 +2140,6 @@ trait SolrMarcFincTrait * Get DDC notation * * @return array - * @access public */ public function getDDC() { @@ -2225,7 +2164,6 @@ trait SolrMarcFincTrait * Get an array of citations and references notes. * * @return array - * @access public */ public function getReferenceNotes() { @@ -2236,7 +2174,6 @@ trait SolrMarcFincTrait * Get the publishers number and source of the record. * * @return array - * @access public */ public function getPublisherNumber() { @@ -2247,7 +2184,6 @@ trait SolrMarcFincTrait * Get the musical key of a piece (Marc 384). * * @return array - * @access public */ public function getMusicalKey() { @@ -2259,7 +2195,6 @@ trait SolrMarcFincTrait * * @return array Items internal Bibliotheca-ID called "Mediennummer" * @deprecated Remove when Bibliotheca support ends - * @access public */ public function getMediennummer() { @@ -2284,7 +2219,6 @@ trait SolrMarcFincTrait * Get title uniform * * @return array - * @access public */ public function getTitleUniform() { @@ -2319,14 +2253,22 @@ trait SolrMarcFincTrait } /** + * Get an array of publication detail lines combining information from Marc 260, 264, 533 * + * @return array */ public function getPublicationDetails() { $places = $names = $dates = []; - foreach (array('260','264') as $pos => $field_name) { + + $getSubfieldLinesConcat = function ($field, $code, $separator) { + return implode($separator, array_map(function ($elem) {return $elem->getData();}, $field->getSubfields($code) ?? [])); + }; + + // getting contents from marc 260 and 264 + foreach (['260','264'] as $pos => $field_name) { if ($fields = $this->getMarcRecord()->getFields($field_name)) { foreach ($fields as $field) { // for MARC $264 if indicator2 equals 1 we have publication details @@ -2334,29 +2276,30 @@ trait SolrMarcFincTrait if ($pos === '264' && $field->getIndicator('2') !== '1') { continue; } - foreach (array( + foreach ([ 'places' => 'a', 'names' => 'b', 'dates' => 'c' - ) as $key => $sub_name) { - if ($lines = $field->getSubfields($sub_name)) { - ${$key}[] = implode( - ', ', - array_map( - function ($elem) { - return $elem->getData(); - }, - $lines - ) - ); - } else { - ${$key}[] = ''; - } + ] as $key => $sub_name) { + ${$key}[] = $getSubfieldLinesConcat($field, $sub_name, ', '); } } } } + // getting (additional) contents from marc 533 - Reproduction Note (https://www.loc.gov/marc/bibliographic/bd533.html) + if ($fields = $this->getMarcRecord()->getFields('533')) { + $mapping = ['type' => 'a', 'place' => 'b', 'name' => 'c', 'date' => 'd']; + foreach ($fields as $field) { + foreach ($mapping as $key => $sub_name) { + ${$key} = $getSubfieldLinesConcat($field, $sub_name, ', '); + } + $places[] = (empty($type) ? '' : $type . '. ') . $place ?? ''; + $names[] = $name ?? ''; + $dates[] = $date ?? ''; + } + } + $i = 0; $retval = []; while (isset($places[$i]) || isset($names[$i]) || isset($dates[$i])) { @@ -2377,14 +2320,13 @@ trait SolrMarcFincTrait * Get the delivery status of the record. * * @return string - * @access public */ public function getDeliveryStatus() { $retVal = []; $statuses = $this->getMarcRecord()->getFields('366'); - if(!is_null($statuses)) { + if(null !== $statuses) { foreach ($statuses as $status) { $value = $status->getSubfield('e'); if($value) { @@ -2421,7 +2363,7 @@ trait SolrMarcFincTrait preg_match('/([1-9]\d*)/', $data, $matches); if ($page = $matches[0]) { - return (int) $page; + return (int)$page; } } return null; @@ -2491,4 +2433,4 @@ trait SolrMarcFincTrait } return null; } -} \ No newline at end of file +} diff --git a/module/finc/src/finc/Resolver/Driver/Ezb.php b/module/finc/src/finc/Resolver/Driver/Ezb.php index d75a33704612cf2f422a7242df9da3f13fb6a442..49010ca04e3bcf9c791a0fca8348f8aa7686333e 100644 --- a/module/finc/src/finc/Resolver/Driver/Ezb.php +++ b/module/finc/src/finc/Resolver/Driver/Ezb.php @@ -128,8 +128,10 @@ class Ezb extends AbstractBase implements TranslatorAwareInterface // use IP-based request as fallback $openURL .= '&pid=client_ip%3D' . $_SERVER['REMOTE_ADDR']; } - $openURL .= isset($parsed['zdbid']) ? - '%26zdbid%3D' . $parsed['zdbid'] : ''; + $openURL .= !isset($parsed['rft.issn']) && isset($parsed['zdbid']) ? + '&zdbid=' . $parsed['zdbid'] : ''; + + $openURL .= urlencode('&ezb=1'); $url = $this->getResolverUrl($openURL); diff --git a/module/finc/src/finc/View/Helper/Root/ExternalLink.php b/module/finc/src/finc/View/Helper/Root/ExternalLink.php new file mode 100644 index 0000000000000000000000000000000000000000..91b1df9feaadbd1b7b2d51291c99fbd5a88d46d9 --- /dev/null +++ b/module/finc/src/finc/View/Helper/Root/ExternalLink.php @@ -0,0 +1,105 @@ +<?php +/** + * External link view helper + * + * PHP version 7 + * + * Copyright (C) Leipzig University Library 2020. + * + * 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 Dorian Merz <merz@ub.uni-leipzig.de> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development Wiki + */ +namespace finc\View\Helper\Root; + +/** + * External link view helper + * + * @category VuFind + * @package View_Helpers + * @author Dorian Merz <merz@ub.uni-leipzig.de> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development Wiki + */ +class ExternalLink extends \Zend\View\Helper\AbstractHelper +{ + /** + * Context view helper + * + * @var \VuFind\View\Helper\Root\Translate + */ + protected $translator; + + /** + * Default html attributes for external links + * + * @var string[] + */ + protected $defaultAttributes = [ + 'target' => "_blank", + 'rel' => 'noopener' + ]; + + /** + * Renders an anchor element (hyperlink) to an external website + * + * @param string $href URL of the external website + * @param string $label desired label or translation token + * @param array $attributes more attributes to apply to the a element, + * key-value-pairs + * @param bool $translateLabel true if label shall be translated + * + * @return string + */ + public function __invoke( + $href, + $label = '', + $attributes = [], + $translateLabel = false + ) { + $link = '<a href="' . $href . '"'; + $attributes = array_merge($this->defaultAttributes, $attributes); + foreach ($attributes as $key => $value) { + $link .= ' ' . $key . '="' . $value . '"'; + } + $link .= '>'; + if (empty($label)) { + $label = $href; + } elseif ($translateLabel) { + $label = $this->translate($label); + } + $link .= $label . '</a>'; + + return $link; + } + + /** + * Helper function to provide access to Translate ViewHelper + * + * @param string $label translation token + * + * @return string + */ + protected function translate($label) + { + if (!isset($this->translator)) { + $this->translator = $this->getView()->plugin('translate'); + } + return $this->translator->translate($label); + } +} diff --git a/module/finc/src/finc/View/Helper/Root/Factory.php b/module/finc/src/finc/View/Helper/Root/Factory.php index e4109ef4a2a8d6de1cde6956221ed5be15b0e8f9..4e44d5bae6a6e2bf0f8fa2a1aac7ae8a438cfb84 100644 --- a/module/finc/src/finc/View/Helper/Root/Factory.php +++ b/module/finc/src/finc/View/Helper/Root/Factory.php @@ -151,7 +151,8 @@ class Factory // constructor if (file_exists( \VuFind\Config\Locator::getConfigPath('OpenUrlRules.json') - )) { + ) + ) { $openUrlRules = json_decode( file_get_contents( \VuFind\Config\Locator::getConfigPath('OpenUrlRules.json') @@ -194,7 +195,8 @@ class Factory // constructor if (file_exists( \VuFind\Config\Locator::getConfigPath('ExternalCatalogue.json') - )) { + ) + ) { $externalAccessLinks = json_decode( file_get_contents( \VuFind\Config\Locator::getConfigPath('ExternalCatalogue.json') @@ -209,9 +211,26 @@ class Factory ); } + /** + * Construct Head Title Helper + * + * @param ContainerInterface $container Service manager + * + * @return HeadTitle + */ public static function getHeadTitle(ContainerInterface $container) { $config = $container->get('VuFind\Config')->get('config')->Site; return new HeadTitle($config->title ?? ''); } + + /** + * Construct ExternalLink + * + * @return ExternalLink + */ + public static function getExternalLink() + { + return new ExternalLink(); + } } diff --git a/module/finc/src/finc/View/Helper/Root/Flashmessages.php b/module/finc/src/finc/View/Helper/Root/Flashmessages.php index 1b099d258b2ac6056d4c5f7c0706a8efb742528f..c26fbb8288ac275b56259037cc28f61869a73fb5 100644 --- a/module/finc/src/finc/View/Helper/Root/Flashmessages.php +++ b/module/finc/src/finc/View/Helper/Root/Flashmessages.php @@ -39,8 +39,8 @@ namespace finc\View\Helper\Root; class Flashmessages extends \VuFind\View\Helper\Bootstrap3\Flashmessages { /** - * Generate flash message <p>'s with appropriate classes based on message type. - * This is basically a copy of the parent method but uses p-Tags instead of divs + * Generate flash message <div>'s with appropriate classes based on message type. + * This is basically a copy of the parent method but adds role = alert to divs * * @return string $html */ @@ -53,14 +53,14 @@ class Flashmessages extends \VuFind\View\Helper\Bootstrap3\Flashmessages $this->fm->getMessages($ns), $this->fm->getCurrentMessages($ns) ); foreach (array_unique($messages, SORT_REGULAR) as $msg) { - $html .= '<p class="' . $this->getClassForNamespace($ns) . '"'; + $html .= '<div class="' . $this->getClassForNamespace($ns) . '"'; if (isset($msg['dataset'])) { foreach ($msg['dataset'] as $attr => $value) { $html .= ' data-' . $attr . '="' . htmlspecialchars($value) . '"'; } } - $html .= '>'; + $html .= ' role="alert">'; // Advanced form: if (is_array($msg)) { // Use a different translate helper depending on whether @@ -83,7 +83,7 @@ class Flashmessages extends \VuFind\View\Helper\Bootstrap3\Flashmessages $transEsc = $this->getView()->plugin('transEsc'); $html .= $transEsc($msg); } - $html .= '</p>'; + $html .= '</div>'; } $this->fm->clearMessages($ns); $this->fm->clearCurrentMessages($ns); diff --git a/module/finc/src/finc/View/Helper/Root/SideFacet.php b/module/finc/src/finc/View/Helper/Root/SideFacet.php index 240b5abd29b89c68c0424847ccf0df155a639a4c..528bd3b3c2d1c9c989df33c63b3f5ca36c5ca677 100644 --- a/module/finc/src/finc/View/Helper/Root/SideFacet.php +++ b/module/finc/src/finc/View/Helper/Root/SideFacet.php @@ -89,4 +89,29 @@ class SideFacet extends AbstractHelper } return $sideFacets; } + + /** + * Get term with corresponding language tag within html element + * + * @param string $term translation to decorate with language tag + * @param string $element wrapping html element + * @param string $language current language + * + * @return string + * + * @deprecated remove when there's a VuFind core solution + */ + public function getLanguageTag(string $term, string $element, string $language) + { + $retval = $term; + + if (isset($this->config->LanguageTags[$term]) + && $this->config->LanguageTags[$term] !== $language + ) { + $retval = "<$element " . 'lang="' . $this->config->LanguageTags[$term] + . '">' . "$term</$element>"; + } + + return $retval; + } } diff --git a/themes/finc-accessibility/js/account_ajax.js b/themes/finc-accessibility/js/account_ajax.js deleted file mode 100644 index 9d657d9f5d95421a30dd8782a76fa4205947137f..0000000000000000000000000000000000000000 --- a/themes/finc-accessibility/js/account_ajax.js +++ /dev/null @@ -1,256 +0,0 @@ -/*global userIsLoggedIn, VuFind */ -VuFind.register('account', function Account() { - // Retrieved statuses - var LOADING = -1 * Math.PI; // waiting for request - var MISSING = -2 * Math.PI; // no data available - var INACTIVE = -3 * Math.PI; // status element missing - var _statuses = {}; - - // Account Icons - var ICON_LEVELS = { - "NONE": 0, - "GOOD": 1, - "WARNING": 2, - "DANGER": 3 - }; - var _accountIcons = {}; - _accountIcons[ICON_LEVELS.NONE] = "fa fa-user-circle"; - _accountIcons[ICON_LEVELS.GOOD] = "fa fa-bell text-success"; - _accountIcons[ICON_LEVELS.WARNING] = "fa fa-bell text-warning"; - _accountIcons[ICON_LEVELS.DANGER] = "fa fa-exclamation-triangle text-danger"; - - var _submodules = []; - - var _sessionDataPrefix = "vf-account-status-"; - var _save = function _save(module) { - sessionStorage.setItem( - _sessionDataPrefix + module, - JSON.stringify(_statuses[module]) - ); - }; - - // Clearing save forces AJAX update next page load - var clearCache = function clearCache(name) { - if (typeof name === "undefined") { - for (var sub in _submodules) { - if (Object.prototype.hasOwnProperty.call(_submodules, sub)) { - clearCache(sub); - } - } - } else { - sessionStorage.removeItem(_sessionDataPrefix + name); - } - }; - - var _getStatus = function _getStatus(module) { - return (typeof _statuses[module] === "undefined") ? LOADING : _statuses[module]; - }; - - var _render = function _render() { - var accountStatus = ICON_LEVELS.NONE; - for (var sub in _submodules) { - if (Object.prototype.hasOwnProperty.call(_submodules, sub)) { - var $element = $(_submodules[sub].selector); - if (!$element) { - _statuses[sub] = INACTIVE; - continue; - } - var status = _getStatus(sub); - if (status === MISSING) { - $element.addClass('hidden'); - } else { - $element.removeClass('hidden'); - if (status === LOADING) { - $element.html('<i class="fa fa-spin fa-spinner"></i>'); - } else { - var moduleStatus = _submodules[sub].render($element, _statuses[sub], ICON_LEVELS); - if (moduleStatus > accountStatus) { - accountStatus = moduleStatus; - } - } - } - } - } - $("#account-icon").attr("class", _accountIcons[accountStatus]); - if (accountStatus > ICON_LEVELS.NONE) { - $("#account-icon") - .attr("data-toggle", "tooltip") - .attr("data-placement", "bottom") - .attr("title", VuFind.translate("account_has_alerts")) - ; - } else { - $("#account-icon").tooltip("destroy"); - } - }; - var _ajaxLookup = function _ajaxLookup(module) { - $.ajax({ - url: VuFind.path + '/AJAX/JSON?method=' + _submodules[module].ajaxMethod, - dataType: 'json' - }) - .done(function ajaxLookupDone(response) { - _statuses[module] = response.data; - }) - .fail(function ajaxLookupFail() { - _statuses[module] = MISSING; - }) - .always(function ajaxLookupAlways() { - _save(module); - _render(); - }); - }; - - var _load = function _load(module) { - var $element = $(_submodules[module].selector); - if (!$element) { - _statuses[module] = INACTIVE; - } else { - var json = sessionStorage.getItem(_sessionDataPrefix + module); - var session = typeof json === "undefined" ? null : JSON.parse(json); - if ( - session === null || - session === LOADING || - session === MISSING - ) { - _statuses[module] = LOADING; - _ajaxLookup(module); - } else { - _statuses[module] = session; - } - _render(); - } - }; - - var init = function init() { - // Update information when certain actions are performed - $("#renewals").submit(function clearCheckedOut() { - clearCache("checkedOut"); - }); - $('#cancelHold, [name="placeHold"]').submit(function clearHolds() { - clearCache("holds"); - }); - $('#ILLRequestForm, #cancelILLRequest').submit(function clearHolds() { - clearCache("illRequests"); - }); - $('[name="placeStorageRetrievalRequest"], #cancelStorageRetrievalRequest').submit(function clearStorageRetrievals() { - clearCache("storageRetrievalRequests"); - }); - $("#library_card").change(function clearChangeLibraryCard() { - clearCache(/* all */); - }); - }; - - var register = function register(name, module) { - if (typeof _submodules[name] === "undefined") { - _submodules[name] = typeof module == 'function' ? module() : module; - } - var $el = $(_submodules[name].selector); - if ($el.length > 0) { - $el.removeClass("hidden"); - _statuses[name] = LOADING; - _load(name); - } else { - _statuses[name] = INACTIVE; - } - }; - - return { - init: init, - clearCache: clearCache, - // if user is logged out, clear cache instead of register - register: userIsLoggedIn ? register : clearCache - }; -}); - -$(document).ready(function registerAccountAjax() { - - VuFind.account.register("fines", { - selector: ".fines-status", - ajaxMethod: "getUserFines", - render: function render($element, status, ICON_LEVELS) { - if (status.value === 0) { - $element.addClass("hidden"); - return ICON_LEVELS.NONE; - } - $element.html('<span class="badge overdue">' + status.display + '</span>'); - return ICON_LEVELS.DANGER; - } - }); - - VuFind.account.register("checkedOut", { - selector: ".checkedout-status", - ajaxMethod: "getUserTransactions", - render: function render($element, status, ICON_LEVELS) { - var html = ''; - var level = ICON_LEVELS.NONE; - if (status.ok > 0) { - html += '<span class="badge ok" data-toggle="tooltip" title="' + VuFind.translate('Checked Out Items') + '">' + status.ok + '</span>'; - } - if (status.warn > 0) { - html += '<span class="badge warn" data-toggle="tooltip" title="' + VuFind.translate('renew_item_due_tooltip') + '">' + status.warn + '</span>'; - level = ICON_LEVELS.WARNING; - } - if (status.overdue > 0) { - html += '<span class="badge overdue" data-toggle="tooltip" title="' + VuFind.translate('renew_item_overdue_tooltip') + '">' + status.overdue + '</span>'; - level = ICON_LEVELS.DANGER; - } - $element.html(html); - $('[data-toggle="tooltip"]', $element).tooltip(); - return level; - } - }); - - VuFind.account.register("holds", { - selector: ".holds-status", - ajaxMethod: "getUserHolds", - render: function render($element, status, ICON_LEVELS) { - var level = ICON_LEVELS.NONE; - if (status.available > 0) { - $element.html('<i class="fa fa-bell text-success" data-toggle="tooltip" title="' + VuFind.translate('hold_available') + '"></i>'); - level = ICON_LEVELS.GOOD; - } else if (status.in_transit > 0) { - $element.html('<i class="fa fa-clock-o text-warning" data-toggle="tooltip" title="' + VuFind.translate('request_in_transit') + '"></i>'); - } else { - $element.addClass("holds-status hidden"); - } - $('[data-toggle="tooltip"]', $element).tooltip(); - return level; - } - }); - - VuFind.account.register("illRequests", { - selector: ".illrequests-status", - ajaxMethod: "getUserILLRequests", - render: function render($element, status, ICON_LEVELS) { - var level = ICON_LEVELS.NONE; - if (status.available > 0) { - $element.html('<i class="fa fa-bell text-success" data-toggle="tooltip" title="' + VuFind.translate('ill_request_available') + '"></i>'); - level = ICON_LEVELS.GOOD; - } else if (status.in_transit > 0) { - $element.html('<i class="fa fa-clock-o text-warning" data-toggle="tooltip" title="' + VuFind.translate('request_in_transit') + '"></i>'); - } else { - $element.addClass("holds-status hidden"); - } - $('[data-toggle="tooltip"]', $element).tooltip(); - return level; - } - }); - - VuFind.account.register("storageRetrievalRequests", { - selector: ".storageretrievalrequests-status", - ajaxMethod: "getUserStorageRetrievalRequests", - render: function render($element, status, ICON_LEVELS) { - var level = ICON_LEVELS.NONE; - if (status.available > 0) { - $element.html('<i class="fa fa-bell text-success" data-toggle="tooltip" title="' + VuFind.translate('storage_retrieval_request_available') + '"></i>'); - level = ICON_LEVELS.GOOD; - } else if (status.in_transit > 0) { - $element.html('<i class="fa fa-clock-o text-warning" data-toggle="tooltip" title="' + VuFind.translate('request_in_transit') + '"></i>'); - } else { - $element.addClass("holds-status hidden"); - } - $('[data-toggle="tooltip"]', $element).tooltip(); - return level; - } - }); - -}); diff --git a/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml b/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml index 6c3f63c4b61fab76fef821b2b1b8d4f9fbcb35a4..8d7fc91cc4c775c9d19045d2361d7e4c22b9ae69 100644 --- a/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml +++ b/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml @@ -14,5 +14,5 @@ ] ); ?> -<p class="alert alert-info"><?=$link?></p> +<p class="alert alert-info" role="alert"><?=$link?></p> <!-- finc-accessibility: Recommend - AlphaBrowseLink - END --> diff --git a/themes/finc-accessibility/templates/Recommend/Channels.phtml b/themes/finc-accessibility/templates/Recommend/Channels.phtml index 10710cbd4018d93ad48304cd973dca02d7bcf16a..9ea450e3ed1056f39a5a9eebb1616a27140dcba3 100644 --- a/themes/finc-accessibility/templates/Recommend/Channels.phtml +++ b/themes/finc-accessibility/templates/Recommend/Channels.phtml @@ -7,7 +7,7 @@ . $results->getUrlQuery()->getParams(false) . '&source=' . urlencode($results->getParams()->getSearchClassId()); ?> -<p class="channels-alert alert alert-info"> +<p class="channels-alert alert alert-info" role="alert"> <a href="<?=$this->escapeHtmlAttr($link)?>"><?=$this->transEsc('channel_expand')?></a> </p> <!-- finc-accessibility: Recommend - Channels - END --> diff --git a/themes/finc-accessibility/templates/Recommend/DOI.phtml b/themes/finc-accessibility/templates/Recommend/DOI.phtml index 0a20a62a35e08cb2eaf590fb0199514e022c1384..d39d99a2e6cc32115663df33cc0dd5747cae4d80 100644 --- a/themes/finc-accessibility/templates/Recommend/DOI.phtml +++ b/themes/finc-accessibility/templates/Recommend/DOI.phtml @@ -3,7 +3,7 @@ <?php $doi = $this->recommend->getDOI(); if (!empty($doi)): ?> <?php $url = $this->recommend->getURL(); ?> - <p class="alert alert-info"> + <p class="alert alert-info" role="alert"> <?=$this->translate('doi_detected_html', ['%%url%%' => $url, '%%doi%%' => $doi])?> </p> <?php if ($this->recommend->isFullMatch()): ?> diff --git a/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml b/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml index c79a65f63ca767b0ff7333209e7ac8624dbe71b9..07f915a551d4bf3f16dec7ae90ec717809d2883c 100644 --- a/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml +++ b/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml @@ -2,7 +2,7 @@ <?php /* #17950 - use <p> for alerts - HR */ ?> <?php if ($this->recommend->hasFilters()): ?> - <p class="alert alert-info"> + <p class="alert alert-info" role="alert"> <?=$this->transEsc('nohit_active_filters')?> <a href="<?=$this->recommend->getFilterlessUrl()?>"><?=$this->transEsc('nohit_query_without_filters')?></a> </p> diff --git a/themes/finc-accessibility/templates/Recommend/SideFacets/filter-list.phtml b/themes/finc-accessibility/templates/Recommend/SideFacets/filter-list.phtml new file mode 100644 index 0000000000000000000000000000000000000000..d7e75e1a60ccff2ce9e4bf5a8cdb58d4fe7bdc24 --- /dev/null +++ b/themes/finc-accessibility/templates/Recommend/SideFacets/filter-list.phtml @@ -0,0 +1,33 @@ +<!-- finc-accessibility - Recommend - SideFacets - filter-list.phtml --> +<?php /* #18509 copied from bootstrap for adding language tags to displayText */ ?> +<div class="facet-group active-filters"> + <div class="title"><?=$this->transEsc('Remove Filters')?></div> + <?php foreach ($filterList as $field => $filters): ?> + <?php foreach ($filters as $i => $filter): ?> + <?php + $index = isset($filter['field']) ? array_search($filter['field'], $collapsedFacets) : false; + if ($index !== false) { + unset($collapsedFacets[$index]); // Open if we have a match + } + if (isset($filter['specialType']) && $filter['specialType'] == 'keyword') { + $removeLink = $this->currentPath() . $results->getUrlQuery()->replaceTerm($filter['value'], ''); + } else { + $removeLink = $this->currentPath() . $results->getUrlQuery()->removeFacet($filter['field'], $filter['value'], $filter['operator']); + } + if ($filter['displayText'] == '[* TO *]') { + $filter['displayText'] = $this->translate('filter_wildcard'); + } + ?> + <a class="facet" href="<?=$removeLink ?>" title="<?=$this->transEsc('clear_tag_filter') ?>"> + <span class="sr-only"><?=$this->transEsc('clear_tag_filter') ?></span> + <span class="text"> + <?php if ($filter['operator'] == 'NOT'): ?><?=$this->transEsc('NOT') ?><?php endif; ?> + <?php if ($filter['operator'] == 'OR' && $i > 0): ?><?=$this->transEsc('OR') ?><?php endif; ?> + <?=$this->transEsc($field) ?>: <?=$this->sideFacet()->getLanguageTag($this->escapeHtml($filter['displayText']), 'span', $this->layout()->userLang) ?> + </span> + <span class="status"><i class="fa fa-times" aria-hidden="true"></i></span> + </a> + <?php endforeach; ?> + <?php endforeach; ?> +</div> +<!-- finc-accessibility - Recommend - SideFacets - filter-list.phtml - END --> diff --git a/themes/finc-accessibility/templates/Recommend/SwitchType.phtml b/themes/finc-accessibility/templates/Recommend/SwitchType.phtml index c44dc55b6b04da6d8e3fd71da4d8501f47b8fadf..9276727ecdf680fa8c1b7cb6629c34f6ba34778e 100644 --- a/themes/finc-accessibility/templates/Recommend/SwitchType.phtml +++ b/themes/finc-accessibility/templates/Recommend/SwitchType.phtml @@ -2,7 +2,7 @@ <?php /* #17950 - use <p> for alerts - HR */ ?> <?php if ($handler = $this->recommend->getNewHandler()): ?> - <p class="alert alert-info"> + <p class="alert alert-info" role="alert" role="alert"> <?=$this->transEsc('widen_prefix')?> <a href="<?=$this->recommend->getResults()->getUrlQuery()->setHandler($handler)?>"><?=$this->transEsc($this->recommend->getNewHandlerName())?></a>. </p> diff --git a/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml b/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml index d65ddb57d0e14cf38e6911fafdc8e393755d7fb3..a8ddccec426875e49ae2dc9914bcda25cc33a56d 100644 --- a/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml +++ b/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml @@ -11,9 +11,9 @@ $thumbnail = false; $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('result'); ob_start(); ?> - <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtml($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtml($coverDetails['size'])?>" aria-hidden="true"> <?php if ($coverDetails['cover']): ?> - <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="_record_link"> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="_record_link" tabindex="-1"> <img src="<?=$this->escapeHtmlAttr($coverDetails['cover'])?>" class="recordcover" alt="<?=$this->transEsc('Cover Image')?>"/> </a> <?php else: ?> @@ -118,7 +118,7 @@ <i class="fa fa-fw fa-star" aria-hidden="true"></i> <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>" class="save-record" data-lightbox id="<?=$this->driver->getUniqueId() ?>" title="<?=$this->transEsc('Add to favorites')?>"><?=$this->transEsc('Add to favorites')?></a><br/> <?php /* Saved lists */ ?> - <p class="savedLists alert alert-info hidden"> + <p class="savedLists alert alert-info hidden" role="alert"> <strong><?=$this->transEsc("Saved in")?>:</strong> </p> <?php endif; ?> diff --git a/themes/finc-accessibility/templates/Related/Channels.phtml b/themes/finc-accessibility/templates/Related/Channels.phtml index 04f65247244c0ea79f6b2872dbfe1a73ec3368f9..5b5abb0465820528c50343ab7aad9fa33b6526c6 100644 --- a/themes/finc-accessibility/templates/Related/Channels.phtml +++ b/themes/finc-accessibility/templates/Related/Channels.phtml @@ -7,7 +7,7 @@ . '?id=' . urlencode($driver->getUniqueId()) . '&source=' . urlencode($driver->getSourceIdentifier()); ?> -<p class="channels-alert alert alert-info"> +<p class="channels-alert alert alert-info" role="alert"> <a href="<?=$this->escapeHtmlAttr($link)?>"><?=$this->transEsc('channel_expand')?></a> </p> <!-- finc-accessibility: Related - Channels - END --> diff --git a/themes/finc-accessibility/templates/myresearch/delete.phtml b/themes/finc-accessibility/templates/myresearch/delete.phtml index 19fc345724ecabbc95f7602577310e30e2be84f4..aeb2c39b4b64b8759d3c88c1df86a5bd96292a15 100644 --- a/themes/finc-accessibility/templates/myresearch/delete.phtml +++ b/themes/finc-accessibility/templates/myresearch/delete.phtml @@ -7,7 +7,7 @@ <div id="popupMessages"><?=$this->flashmessages()?></div> <div id="popupDetails"> <?php if (!$this->list): ?> - <p class="alert alert-info"><?=$this->transEsc("fav_delete_warn") ?></p> + <p class="alert alert-info" role="alert"><?=$this->transEsc("fav_delete_warn") ?></p> <?php else: ?> <h2><?=$this->transEsc("List") ?>: <?=$this->escapeHtml($this->list->title) ?></h2> <?php endif; ?> diff --git a/themes/finc-accessibility/templates/myresearch/login.phtml b/themes/finc-accessibility/templates/myresearch/login.phtml index 5bf1facad28941ca265940bc867cf9cd8d4841c9..f7d5f80479408229447b485f1b3b0056d30a18c3 100644 --- a/themes/finc-accessibility/templates/myresearch/login.phtml +++ b/themes/finc-accessibility/templates/myresearch/login.phtml @@ -22,7 +22,7 @@ <?=$this->flashmessages()?> <?php if ($hideLogin): ?> - <p class="alert alert-danger"><?=$this->transEsc('login_disabled')?></p> + <p class="alert alert-danger" role="alert"><?=$this->transEsc('login_disabled')?></p> <?php else: ?> <?=$this->auth()->getLogin()?> <?php endif; ?> diff --git a/themes/finc-accessibility/templates/record/comments-list.phtml b/themes/finc-accessibility/templates/record/comments-list.phtml index 66b90c54bb8dfd790243408f195f0f0c04471309..fa892bbad12807b77f5528e057e0e19c6e5e8e69 100644 --- a/themes/finc-accessibility/templates/record/comments-list.phtml +++ b/themes/finc-accessibility/templates/record/comments-list.phtml @@ -1,7 +1,7 @@ <!-- finc-accessibility: record - comments-list --> <?php $comments = $this->driver->getComments(); ?> <?php if (empty($comments) || count($comments) == 0): ?> - <p class="alert alert-info"><?=$this->transEsc('Be the first to leave a comment')?>!</p> + <p class="alert alert-info" role="alert"><?=$this->transEsc('Be the first to leave a comment')?>!</p> <?php else: ?> <?php foreach ($comments as $comment): ?> <div class="comment"> diff --git a/themes/finc/images/dfg_logo_text.png b/themes/finc/images/dfg_logo_text.png old mode 100755 new mode 100644 diff --git a/themes/finc/js/cart-finc.js b/themes/finc/js/cart-finc.js new file mode 100644 index 0000000000000000000000000000000000000000..0fbaf1015f44cd429d87a2f1db9a0f5745c5c320 --- /dev/null +++ b/themes/finc/js/cart-finc.js @@ -0,0 +1,8 @@ +/* #18034 - inform screen reader about changes, eventually intregrate by PR into bootstrap cart.js - RL */ +$(document).ready(function() { + var cart = document.getElementById("cartSummary"); + if (cart != null) { + cart.setAttribute("aria-live", "polite"); + cart.setAttribute("aria-atomic", "true"); + } +}); diff --git a/themes/finc/js/lightbox.js b/themes/finc/js/lightbox.js index 50e34faa90b8204e93fa5c5085a02bde4186a5bb..ecd9155acd7e7952e7780678724aced2b96168cf 100644 --- a/themes/finc/js/lightbox.js +++ b/themes/finc/js/lightbox.js @@ -42,7 +42,7 @@ VuFind.register('lightbox', function Lightbox() { // Public: Present an alert function showAlert(message, _type) { var type = _type || 'info'; - _html('<p class="flash-message alert alert-' + type + '">' + message + '</p>' + _html('<div class="flash-message alert alert-' + type + '" role="alert">' + message + '</div>' + '<button class="btn btn-default" data-dismiss="modal">' + VuFind.translate('close') + '</button>'); _modal.modal('show'); } @@ -50,7 +50,7 @@ VuFind.register('lightbox', function Lightbox() { var type = _type || 'info'; _modalBody.find('.flash-message,.fa.fa-spinner').remove(); _modalBody.find('h2:first-of-type') - .after('<p class="flash-message alert alert-' + type + '">' + message + '</p>'); + .after('<div class="flash-message alert alert-' + type + '" role="alert">' + message + '</div>'); } function close() { _modal.modal('hide'); diff --git a/themes/finc/scss/_customVariables.scss b/themes/finc/scss/_customVariables.scss index 2ec7208aa6fee819e34ae66f6cc2d778ee0fe718..d8f505d4b88e7fd32bd74953b1592c2392463fb3 100644 --- a/themes/finc/scss/_customVariables.scss +++ b/themes/finc/scss/_customVariables.scss @@ -149,6 +149,9 @@ $button-title-hover-bg: $brand-secondary !default; $btn-language-hover-bg: $brand-primary !default; $btn-language-active-hover-bg: $steel !default; +$btn-language-hover-color: $white !default; + +$btn-header-nav-medium-only-padding: 6px 2px !default; // Padding for toolbar buttons in record view/detail view $record-view-toolbar-button-padding: .5rem; @@ -225,7 +228,7 @@ $navbar-height-sm: $navbar-height !default; $navbar-height-xs: $navbar-height + 40px !default; $navbar-max-height-xs: $navbar-height + 40px !default; -//// Navigation elements default height: This height must be adapted to the button height, which changes with default font size; apply to navigation elements such as select dropdowns +//// Navigation elements default height: This height _must_ be adapted to the button height (.btn, .search-filter-toggle {}), which changes with default font size; apply to navigation elements such as select dropdowns $navigation-element-default-height: 38px; //// Top-padding for #content -> .row first-of-type (and .sidebar) - change this value to change both; diff --git a/themes/finc/scss/compiled.scss b/themes/finc/scss/compiled.scss index 91c61145434bd4598a9d808516cd808adde03d9e..dce8272442bc2503932997b3945fa6e771c16f05 100644 --- a/themes/finc/scss/compiled.scss +++ b/themes/finc/scss/compiled.scss @@ -101,6 +101,11 @@ body { } } + // for XS + @media (max-width: $screen-xs-max) { + padding-top: 8.5rem; + } + // for tablet @media (min-width: $screen-sm-min) { padding-top: $navbar-height-sm; @@ -131,25 +136,32 @@ label, } // HEADINGS -//// All -//// remove top margin to align with sidebars etc., except advanced search on XS -h1:first-of-type { - margin-top: 0; -} +//// h1 +h1 { + font-size: 2rem; + + //// remove top margin to align with sidebars etc., except advanced search on XS + &:first-of-type { + margin-top: 0; -@media only screen and (max-width: $screen-xs-max) { - h1:first-of-type { - margin-top: revert; + @media (max-width: $screen-xs-max) { + margin-top: revert; - body:not(.template-name-advanced) & { - margin-top: 0; + body:not(.template-name-advanced) & { + margin-top: 0; + } } } -} -//// h1 -h1 { - font-size: 2rem; + .template-dir-cart.template-name-cart .container &, + .template-dir-content.template-name-content &, + .template-dir-myresearch.template-name-editlist &, + .template-dir-search.template-name-newitem &, + .template-dir-search.template-name-reserves & { + @media (max-width: $screen-xs-max) { + padding-top: 15px; + } + } } //// h2 @@ -159,16 +171,16 @@ h2 { .sidebar & { font-size: 1.5rem; - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { margin-left: $grid-gutter-width / 2; } - @media only screen and (max-width: $screen-sm-max) { + @media (max-width: $screen-sm-max) { font-size: 1.25rem; margin-top: 1.75rem; } - @media only screen and (min-width: $screen-md-min) { + @media (min-width: $screen-md-min) { &:first-of-type { margin-top: 0; } @@ -184,20 +196,20 @@ h3 { //// h4 h4 { font-size: 1.25rem; -} -////// H4 atop Sidebar - align to limit and sort -.sidebar h4 { - margin-top: 0; + ////// H4 atop Sidebar - align to limit and sort + .sidebar & { + margin-top: 0; - @media (max-width: $screen-sm-max) { - text-align: center; - } + @media (max-width: $screen-sm-max) { + text-align: center; + } - // keep level with left-hand content - @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - font-size: $font-size-base + 2px; - margin-top: ($grid-gutter-width / 2); + // keep level with left-hand content + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + font-size: $font-size-base + 2px; + margin-top: ($grid-gutter-width / 2); + } } } @@ -370,7 +382,6 @@ legend { } //// label {} - .text-success, .text-danger { padding: .5em; @@ -523,6 +534,13 @@ select { .template-name-myresearch & { background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+); } + + .searchForm & { + @media (min-width: $screen-sm-min) { + // prevent adv search button from breaking onto new line + max-width: 140px; + } + } } // remove icons in limiter select boxes in adv. search @@ -565,6 +583,8 @@ a { // CLASSES (Elements that are used in several places) //// BUTTONS +// NOTE: buttons have a default height of 38px, the same as $navigation-element-default-height for select boxes etc + ////// Transparent buttons (button with border and darker text on light or white BGs) .btn-transparent { @include button-variant($btn-transparent-color, $btn-transparent-bg, $btn-transparent-border); @@ -686,7 +706,7 @@ a { //// HOVERABLE DROPDOWNS -- make DDs hoverable as in FNDTN // Add the dropdown-on-hover class to the parent li container! OR use on all (see commented-out part below) // Menu will show on hover -@media only screen and (min-width: $screen-sm-min) { +@media (min-width: $screen-sm-min) { .dropdown-on-hover:hover .dropdown-menu { display: block; } @@ -855,7 +875,7 @@ table.collapse.in { // push COVER down on SM and XS .media-left { - @media only screen and (max-width: $screen-sm-max) { + @media (max-width: $screen-sm-max) { margin-top: 15px; } } @@ -869,6 +889,7 @@ table.collapse.in { .cover-container { min-width: 6em; } + // cover - END } @@ -1015,6 +1036,40 @@ table.collapse.in { position: absolute; } +// Class to remplace hidden-sm, hidden-md, hidden-lg +.hidden-sm-up { + @media (min-width: $screen-sm-min) { + display: none; + } +} + +.hidden-sm-md { + @media (min-width: $screen-sm-min) and (max-width: $screen-md-max) { + display: none; + } +} + +.visible-sm-only { + @media (max-width: $screen-xs-max) { + display: none; + } + + @media (min-width: $screen-md-min) { + display: none; + } +} + +.visible-sm-md-only { + @media (max-width: $screen-xs-max) { + display: none; + } + + @media (min-width: $screen-lg-min) { + display: none; + } +} + + // Flex container for wrapping flex elements, such als header .flex-container { @media (min-width: $screen-sm-min) { @@ -1305,7 +1360,7 @@ header, display: flex; // important for subsequent flex elements // stack elements on top of each other on XS - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { flex-direction: column; } } @@ -1319,7 +1374,7 @@ header, //// Keep navbar on left, when offcanvas is active, give same appearance as ever .offcanvas.active .navbar-fixed-top { - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { margin-top: -$navbar-height-xs; position: relative; } @@ -1339,9 +1394,9 @@ header, min-height: 3rem; } - @media only screen and (max-width: $screen-xs-max) { - header & { - min-height: 5rem; + header & { + @media (max-width: $screen-xs-max) { + min-height: 9rem; } } @@ -1364,12 +1419,12 @@ header, // Searchbox see below // Set max height for xs devices - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { min-height: $navbar-height-xs; } // Define height for navbar on small, allow for stacked search box + - @media only screen and (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { min-height: $navbar-height-sm; //padding-bottom: ($grid-gutter-width / 2); } @@ -1385,9 +1440,9 @@ header, } // Style language dropdown for XS -@media (max-width: $screen-xs-max) { - // avoid BG bleed on small - .navbar .navbar-nav { +.navbar .navbar-nav { + @media (max-width: $screen-xs-max) { + // avoid BG bleed on small margin-bottom: 0; } } @@ -1401,12 +1456,15 @@ header, border: 0; min-width: auto; - .btn:hover { + .btn:hover, + .btn:focus { background-color: $btn-language-hover-bg; + color: $btn-language-hover-color; } .active .btn:hover { background-color: $btn-language-active-hover-bg; + color: $btn-language-hover-color; } li a { @@ -1422,18 +1480,40 @@ header, } } } +} - &.oneLanguage { - display: block; - position: relative; +// Language select when there is only one language +.oneLanguage { + display: block; + margin-top: 0; + position: relative; + + .btn { + background: transparent; + color: $brand-primary; + + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + float: right; + padding: 6px 0; + } + + @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + float: right; + padding: 6px; + } + } + + .visible-sm-only { + text-transform: capitalize; } } + .navbar-header { flex: 0 1 auto; // ensure proper margins on XS in conjunction with flex-direction: column - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { .container > & { margin-left: 0; margin-right: 0; @@ -1482,7 +1562,7 @@ header, // Remove cart text to make searchbox fit on intermediate tablets .cart-label { - @media only screen and (min-width: $screen-sm-min) and (max-width: 994px) { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { display: none; } } @@ -1532,8 +1612,8 @@ header, } //// navbar-right - add negative right margin to align last button in row to content in sidebar below (right padding) -@media (min-width: $screen-sm-min) { - .navbar-right { +.navbar-right { + @media (min-width: $screen-sm-min) { margin-right: -$navbar-padding-horizontal; } } @@ -1542,6 +1622,11 @@ header, .nav > li > a.btn { @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); + // make buttons fit on SM + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + padding: $btn-header-nav-medium-only-padding; // 6px 2px + } + &:hover, &:focus { background-color: $component-active-bg; // Same hover-color must be applied to 'Advanced Search' button below @@ -1552,108 +1637,64 @@ header, // NAVBAR - END + // SEARCHBOX and Autocomplete // Make seachbox container flexible -- values should complement those of #header-collapse (right-hand side navigation elements) .search.container { padding-right: 0; - // Make wider to fit searchbox and right-hand nav-elements - @media (min-width: $screen-sm-min) { - flex: 0 1 auto; - padding-top: $button-top-padding; - width: auto; - } - // Float "Find" button next to searchbox on XS and SM @media (max-width: $screen-sm-max) { padding-left: 0; } - @media only screen and (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { flex: content; } - .searchForm_lookfor { - @media (max-width: $screen-xs-max) { - //max-width: 80%; - } - } - - .searchForm { - @media only screen and (max-width: $screen-sm-max) { - display: flex; - - input { - flex-grow: 2; - flex-shrink: 2; - // max-width: 43%; - } - - .navbar { - flex-grow: 1; - flex-shrink: 1; - } - - // take out of flexbox flow - .checkbox { - position: absolute; - top: 40px; - } - } - - @media only screen and (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - display: block; - - .checkbox { - position: static; - } - } - } - - .btn, - .form-control { - @media only screen and (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - float: left; - } + // Make wider to fit searchbox and right-hand nav-elements + @media (min-width: $screen-sm-min) { + flex: 0 1 auto; + padding-top: $button-top-padding; + width: auto; } } -//// this will get search box and buttons in line - -.navbar-left { - // push searchbox down on mobile - @media only screen and (max-width: $screen-xs-max) { - display: contents; +.searchForm { + @media (max-width: $screen-sm-max) { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; margin-bottom: 0; margin-top: 0; - - &.navbar-form { - padding-top: 0; - } + padding-top: 0; } -} -.searchForm { // Search slot inside the search container - @media only screen and (min-width: $screen-sm-min) { + @media (min-width: $screen-sm-min) { width: 100%; } - .list-unstyled li { - float: left; + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + display: block; + } - // Advanced Search button - .btn.secondary { - &:hover, - &:focus { - background-color: $component-active-bg; // Same hover-color must be applied to Header buttons above - color: $white; - } + // Searchform input field + input:not([type='checkbox']) { + @media (max-width: $screen-sm-max) { + display: flex; + flex-basis: 50%; + flex-grow: 2; + flex-shrink: 2; } } - input { - float: left; + // Fixme: Is there a navbar inside searchForm anywhere? + .navbar { + @media (max-width: $screen-sm-max) { + flex-grow: 1; + flex-shrink: 1; + } } // Keep filters, shards etc; apply same styles to checkboxes on HOME and all other pages, @@ -1664,29 +1705,41 @@ header, float: none; padding-top: ($grid-gutter-width / 4); + @media (max-width: $screen-sm-max) { + // make this correspond to .searchForm @media (max-width: $screen-sm-max) {}, requires "flex-wrap: wrap" on parent + display: flex; + margin-top: .7rem; + padding-top: 0; + width: 100%; + } + + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + position: static; + } + + // actual checkbox box input { margin-right: .25rem; // make sure, input and label are aligned in acceptable manner between 100% and 200% zoom margin-top: $inputs-top-margin; } } -} -//// Searchbox on Homepage -@media only screen and (max-width: $screen-xs-max) { - .searchHomeContent { - .well { - background-color: transparent; - border: 0; - box-shadow: none; - min-height: ($grid-gutter-width / 2); - padding: 0; + // BUTTONS in search form + .btn, + .form-control { + // align pre-filter and search button + vertical-align: top; + + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + float: left; } + } - .searchForm .navbar-left, - .searchForm .navbar-right { - border: 0; - margin-top: 0; + // make advanced search button discernible + .btn-transparent { + @media (max-width: $screen-sm-max) { + border: 1px solid $oil; } } } @@ -1699,6 +1752,18 @@ header, } //// Advanced Search links in header +// outer container for adv search links +.navbar-form { + margin-bottom: 0; // overwrites BS theme + + .result-advanced & { + // create sufficient space for header menu + @media (min-width: $screen-sm-min) and (max-width: $screen-md-max) { + max-width: 400px; + } + } +} + .adv_search_terms { background-color: $brand-secondary; border: 1px solid $brand-primary; @@ -1708,13 +1773,15 @@ header, } .adv_search_links { - border-bottom: 1px solid $brand-primary; - border-left: 1px solid $brand-primary; - border-right: 1px solid $brand-primary; + border: 1px solid $brand-primary; list-style: none; margin: 0; padding: 0; + @media (min-width: $screen-sm-min) { + margin-top: 5px; + } + a { border-top: 0; display: inline; @@ -1726,7 +1793,7 @@ header, } // 786px and above as inline list - @media only screen and (min-width: $screen-sm-min) { + @media (min-width: $screen-sm-min) { a { border-bottom: 0; border-right: 1px solid $brand-primary; @@ -1740,6 +1807,7 @@ header, } } + // SEARCHBOX and Autocomplete - END // BREADCRUMBS - for detailed switches see customVariables @@ -1757,8 +1825,18 @@ header, color: $white; } + // Result list after an advanced search in width XS should not get this slash + > li + li::before { + @media (max-width: $screen-xs-max) { + display: none; + } + } + //// color of links in breadcrumbs - a, + a { + color: $white; + } + > .active a { color: darken($breadcrumb-active-color, 10%); } @@ -1766,15 +1844,16 @@ header, //// more contrast: switch the colors a:focus, a:hover { - background-color: $breadcrumb-color; - color: $breadcrumb-bg; + background-color: transparent; + color: darken($white, 10%); } } -////// Prevent overlapping of header on breadcrumb on 100% zoom on advanced search result list -////// (works only correctly for one line in cell "Your search terms") -.template-dir-search.template-name-results .search .navbar-form { - margin-bottom: 5px; +// Search result after advanced search needs padding for XS +.result-advanced .breadcrumbs { + @media (max-width: $screen-xs-max) { + padding-top: .6rem; + } } // BREADCRUMBS - END @@ -1805,7 +1884,7 @@ footer { .sidebar { padding-top: $content-top-padding; - @media only screen and (max-width: $screen-sm-max) { + @media (max-width: $screen-xs-max) { padding-top: 0; } } @@ -1844,10 +1923,6 @@ footer { float: left; } -.limit { - margin-right: ($grid-gutter-width / 2); -} - .limit, .sort { margin-bottom: 5px; @@ -1855,6 +1930,7 @@ footer { label { line-height: normal; margin-bottom: 0; + padding-right: 0; } select { @@ -1862,8 +1938,28 @@ footer { } } -.search-controls-div { +.limit { + margin-right: ($grid-gutter-width / 2); + + @media (max-width: $screen-xs-max) { + float: right; + margin-bottom: 7px; + margin-right: 0; + } + + label { + text-align: left; + } +} + +.limit-inner, +.sort-inner { display: inline-block; + + // top align buttons and select boxes + .btn { + vertical-align: top; + } } .search-sort { @@ -1873,9 +1969,15 @@ footer { // limit the width of the select field if necessary - for more select details, see FORMS section above .sort select { max-width: 12em; + + @media only screen and (max-width: 410px) { + max-width: 9em; + } } -@media only screen and (max-width: $screen-xs-max) { + +// FIXME: THis needs to be reviewed for #18810 - CK +@media (max-width: $screen-sm-max) { .limit, .sort { float: left; @@ -1885,35 +1987,24 @@ footer { select { display: block; } - + select { margin-bottom: 0; margin-right: .2rem; } } - - .limit { - margin-right: 1rem; - } - + // Place the refresh button near to the select box - .search-controls-div { + .limit-inner, + .sort-inner { display: flex; } - - // Force the label for floating the text left - .search-sort.text-right { - text-align: left; - } - - // Force the search-sort content to being floated left. Otherwise the refresh button is not visible during user zoom 200%. - .sort.right { - float: left !important; - } } +// SEARCH CONTROLS - END + //// Off-Canvas -@media only screen and (max-width: $screen-sm-max) { +@media (max-width: $screen-sm-min) { .close-offcanvas { display: block; } @@ -1974,7 +2065,6 @@ footer { } //// Off-Canvas - END -// SEARCH CONTROLS - END //// Search Results padding ////// pulled out via .search-results, use negative gutter-width divided by 2 @@ -1988,13 +2078,26 @@ footer { .bulk-action-buttons, .bulkActionButtons { padding-left: ($grid-gutter-width / 2); + + @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + .btn-group { + margin-left: -($grid-gutter-width / 2); + } + } +} + +// truncate "add to bookbag" to make it fit -- Fixme: needs review, CK +#updateCart { + @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { + max-width: 163px; + } } //// Result List ol, ul that contains li.result or facet group that contains li.facet .record-list { list-style: none; - padding: 0; margin: 0; + padding: 0; } //// Results (see BS SCSS/COMPONENTS/... for details) @@ -2019,11 +2122,11 @@ footer { font-weight: normal; // overwrites VF-BS-Theme setting // reset font size for xs - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { font-size: $font-size-base; } - @media only screen and (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { + @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { font-size: $font-size-base + 2px; } } @@ -2194,7 +2297,7 @@ footer { /////// Format items in availability column .availability-column { - @media only screen and (max-width: $screen-sm-max) { + @media (max-width: $screen-sm-max) { a { display: block; margin-top: 6px; @@ -2353,6 +2456,17 @@ footer { ////// Add top margin for better looks .searchHomeContent { margin-top: 1em; + + @media (max-width: $screen-xs-max) { + // Fixme: Where is .well used? CK + .well { + background-color: transparent; + border: 0; + box-shadow: none; + min-height: ($grid-gutter-width / 2); + padding: 0; + } + } } ////// browsing suggestion lists on home (prevent torn-apart look when 2 columns only) @@ -2430,7 +2544,7 @@ footer { // SIDEBAR // Width when offcanvas is off body:not(.offcanvas) .sidebar { - @media only screen and (max-width: $screen-xs-max) { + @media (max-width: $screen-xs-max) { width: 100%; } } @@ -2496,7 +2610,7 @@ body:not(.offcanvas) .sidebar { //// Offcanvas is used to widths of 767px ($screen-xs-max) -@media only screen and (max-width: $screen-xs-max) { +@media (max-width: $screen-xs-max) { .offcanvas.active .sidebar { padding-right: ($grid-gutter-width / 2); } @@ -2753,7 +2867,7 @@ footer ul { opacity: unset; right: 0; - @media (min-width: 768px) { + @media (min-width: $screen-sm-min) { right: -60px; body.rtl & { @@ -2923,7 +3037,6 @@ input { // Accessibility - END // Account - .has-error .form-control, .sms-error .form-control { border: 1px solid $brand-danger; @@ -2938,7 +3051,9 @@ input { // Account - END // Dropdown Toggler color -// WARNING: Potential Breaking Change! e.g. bookbag delete button with dropdown -- could result in white text on white background --> introduce variable "$btn-transparent-active-color" in custom themes and define color +// WARNING: Potential Breaking Change! +// e.g. bookbag delete button with dropdown -- could result in white text on white background +// --> introduce variable "$btn-transparent-active-color" in custom themes and define color // FIXME: MOVE TO buttons or dropdowns section .open .btn-transparent.dropdown-toggle { &[aria-expanded="true"] { @@ -2961,11 +3076,19 @@ input { } // AMSL - .template-dir-amsl.template-name-sources-list { .panel-body span { margin: 10px 15px 10px 0; } } -// AMSL - END \ No newline at end of file +// AMSL - END + +.template-dir-browse.template-name-home { + .browse-container { + @media (max-width: $screen-xs-max) { + padding-top: 15px; + } + } +} + diff --git a/themes/finc/templates/Recommend/SideFacets/single-facet.phtml b/themes/finc/templates/Recommend/SideFacets/single-facet.phtml index 58b71027afa3d45a1526d6942dabac89ac2457af..bedb8055591bb54649d1295fab44e0d0510c0d48 100644 --- a/themes/finc/templates/Recommend/SideFacets/single-facet.phtml +++ b/themes/finc/templates/Recommend/SideFacets/single-facet.phtml @@ -21,6 +21,9 @@ $displayText = $this->escapeHtml($this->facet['value']); } + // #18509 decorate special untranslated terms with language tags + $displayText = $this->sideFacet()->getLanguageTag($displayText, 'span', $this->layout()->userLang); + if ($this->facet['operator'] == 'OR') { $displayText = '<i class="fa ' . ($this->facet['isApplied'] ? 'fa-check-square-o' : 'fa-square-o') . '" aria-hidden="true"></i> ' diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml index fcd4bba892f0c6b2d12ea9b1414a3ad4f49a056b..da6f1ba8e886185d7a21902dc4b8be2d31fbaeaf 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml @@ -6,7 +6,7 @@ $cover = $coverDetails['html']; $preview = $this->record($this->driver)->getPreviews(); ?> <?php if ($QRCode || $cover || $preview): ?> - <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="<?=$cover?'true':'false'?>> <?php /* Display thumbnail if appropriate: */ ?> <?php if ($cover): ?> <?=$cover?> @@ -34,7 +34,7 @@ <?php endif; ?> <?php /* Display the lists that this record is saved to */ ?> - <p class="savedLists hidden alert alert-info" id="savedLists"> + <p class="savedLists hidden alert alert-info" id="savedLists" role="alert"> <strong><?=$this->transEsc("Saved in")?>:</strong> </p> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml index c254fb694053657433ec03fbd7cdecf0852a6cdd..53e91883a964fd80e73fbdfe44a6adc239dba54e 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml @@ -9,7 +9,7 @@ $preview = $this->record($this->driver)->getPreviews(); ?> <?php if ($QRCode || $cover || $preview): ?> - <div class="media-left <?= $this->escapeHtmlAttr($coverDetails['size']) ?> img-col"> + <div class="media-left <?= $this->escapeHtmlAttr($coverDetails['size']) ?> img-col" aria-hidden="<?=$cover?'true':'false'?>"> <?php /* Display thumbnail if appropriate: */ ?> <?php if ($cover): ?> <?=$cover?> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml index fb02204b5e109f165299c750dffcf523a98e066b..04e30ed779b6e49868cd3a8cc932f49b536accd8 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml @@ -21,7 +21,7 @@ $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('list' <li class="result<?php if ($this->driver->supportsAjaxStatus()): ?> ajaxItem<?php endif ?>"> <?php if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler-myresearch.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler-myresearch.phtml index 3a0f991d8c718e6956ad65a2ad51fe92f3830328..c185ad9f4c1002ef73e9729f58209e1cbb5693ab 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler-myresearch.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler-myresearch.phtml @@ -1,7 +1,7 @@ <!-- finc: RecordDriver - DefaultRecord - offcanvas-toggler-myresearch --> <?php ?> <span class="offcanvas-toggler"> - <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" title="<?=$this->transEsc('sidebar_expand')?>"> + <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" aria-label="<?=$this->transEsc('sidebar_expand')?>"> <?=$this->transEsc('offcanvas-toggler-myresearch')?> </a> </span> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler.phtml index aa6b8054f3cc968367097f1c570c0f9ef6d3db7b..bd8ba5bf89242ef3e8d353c2b6bb3218df06f3b6 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/offcanvas-toggler.phtml @@ -1,7 +1,7 @@ <!-- finc: RecordDriver - DefaultRecord - offcanvas-toggler --> <?php ?> <span class="offcanvas-toggler"> - <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" title="<?=$this->transEsc('sidebar_expand')?>"> + <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" aria-label="<?=$this->transEsc('sidebar_expand')?>"> <?=$this->transEsc('offcanvas-toggler-record-view')?> </a> </span> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml index 36660cc5e396252fc74e6434b0e0fd971fcc63e4..5be28ca9b03c5b5062c999a4e1214a44eebdde7d 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml @@ -8,7 +8,7 @@ $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('resul $describedById = $driver->getSourceIdentifier() . '|' . $driver->getUniqueId(); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover?> </div> <?php $thumbnail = ob_get_contents(); ?> @@ -216,7 +216,7 @@ $i = 0; <?=$block?> <?php endif; ?> <?php /* Saved lists */ ?> - <p class="savedLists alert alert-info hidden"> + <p class="savedLists alert alert-info hidden" role="alert"> <strong><?=$this->transEsc("Saved in")?>:</strong> </p> <?php endif; ?> diff --git a/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml b/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml index b21060414fe9f741847bb2c695b19086527eca64..4d6782043354e03aaba5a131f530df365700489c 100644 --- a/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml +++ b/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml @@ -13,7 +13,7 @@ $thumbnail = false; $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('result'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/RecordDriver/SolrAI/core.phtml b/themes/finc/templates/RecordDriver/SolrAI/core.phtml index 85550c63194e1c7b09e2e18ef66db7aeda4e3d63..4408efacce9795b28a166f97b3f33cfbad1535af 100644 --- a/themes/finc/templates/RecordDriver/SolrAI/core.phtml +++ b/themes/finc/templates/RecordDriver/SolrAI/core.phtml @@ -10,7 +10,7 @@ $preview = $this->record($this->driver)->getPreviews(); ?> <?php if ($QRCode || $cover || $preview): ?> - <div class="media-left <?= $this->escapeHtmlAttr($coverDetails['size']) ?> img-col"> + <div class="media-left <?= $this->escapeHtmlAttr($coverDetails['size']) ?> img-col" aria-hidden="<?=$cover?'true':'false'?>"> <?php /* Display thumbnail if appropriate: */ ?> <?php if ($cover): ?> <?=$cover?> @@ -73,7 +73,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/SolrAI/result-list.phtml b/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml index 25c28d3b4118de527446d7216f83a413a90ea57c..43128c1339ec62287bb668015c83d9274630ac7f 100644 --- a/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml +++ b/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml @@ -6,7 +6,7 @@ $thumbnail = false; $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('result'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/RecordDriver/SolrLido/core.phtml b/themes/finc/templates/RecordDriver/SolrLido/core.phtml index 7ff89c40e2447efb65cc2f80f18a041b505449a5..22041396bbf6639fc4e5803a47f737edebc48d6a 100644 --- a/themes/finc/templates/RecordDriver/SolrLido/core.phtml +++ b/themes/finc/templates/RecordDriver/SolrLido/core.phtml @@ -30,7 +30,7 @@ $preview = $this->record($this->driver)->getPreviews(); ?> <?php if ($QRCode || $cover || $preview): ?> - <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?> img-col"> + <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?> img-col" aria-hidden="<?=$cover?'true':'false'?>"> <?php /* Display thumbnail if appropriate: */ ?> <?php if ($cover): ?> <?=$cover?> diff --git a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml index 62ca005ec177d49d5bd7eaf67169c92bc4495bb0..66c9a108e801f5978cfd5c7019085a804ed3e0b0 100644 --- a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml +++ b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml @@ -10,7 +10,7 @@ $preview = $this->record($this->driver)->getPreviews(); ?> <?php if ($QRCode || $cover || $preview): ?> - <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?> img-col"> + <div class="media-left <?=$this->escapeHtmlAttr($coverDetails['size'])?> img-col" aria-hidden="<?=$cover?'true':'false'?>"> <?php /* Display thumbnail if appropriate: */ ?> <?php if ($cover): ?> <?=$cover?> diff --git a/themes/finc/templates/footer.phtml b/themes/finc/templates/footer.phtml index 926350450de85245ddf54ca6dff4990dd7694093..b39d33f6adef441e6b1a61844b7c4a6b7531d49c 100644 --- a/themes/finc/templates/footer.phtml +++ b/themes/finc/templates/footer.phtml @@ -34,14 +34,11 @@ <hr> <div class="footer-container powered-by"> <div class="footer-column"> - <?=$this->layout()->poweredBy?> - <span lang="en">Powered by</span> - <a href="https://vufind.org/" title="<?=$this->transEsc('vufind-logo_title')?>" target="_blank"> - <img src="<?=$this->imageLink('vufind_logo.png')?>" alt="<?=$this->transEsc('vufind-logo_alt')?>"/> - </a> - <a href="http://blog.finc.info" title="<?=$this->transEsc('finc-logo_title')?>" target="_blank"> - <img src="<?=$this->imageLink('finc_logo.png')?>" alt="<?=$this->transEsc('finc-logo_alt')?>"/> - </a> + <span> + <?= $this->transEsc("Footer-Powered-By-Text") ?> + </span> + <?= $this->externalLink("https://vufind.org", '<img src="' . $this->imageLink('vufind_logo.png') . '" alt="' . $this->translate('vufind-logo_alt') . '" aria-hidden="true"/>', ['title' => $this->translate('vufind-logo_title')]) ?> + <?= $this->externalLink("http://blog.finc.info", '<img src="' . $this->imageLink('finc_logo.png') . '" alt="' . $this->translate('finc-logo_alt') . '" aria-hidden="true"/>', ['title' => $this->translate('finc-logo_title'), 'aria-hidden' => 'true']) ?> </div> </div> </footer> diff --git a/themes/finc/templates/header.phtml b/themes/finc/templates/header.phtml index fc370fe70a5bb8367eab7727d972fb0dd3969b42..1f64dd68a52fb9b8c1732260854b20eebae2fc2d 100644 --- a/themes/finc/templates/header.phtml +++ b/themes/finc/templates/header.phtml @@ -17,7 +17,7 @@ <?php /* remove h1 from header and use h1 in content area instead - CK*/ ?> <a class="navbar-brand lang-<?=$this->layout()->userLang?>" href="<?=$this->url('home')?>" aria-label="<?=$this->transEsc('Home')?>"> <?php /* Custom finc header - make sure that one variant of Library name is readable on any device - CK*/ ?> - <span class="hidden-sm hidden-md hidden-lg"><?=$this->transEsc("LibraryName")?></span> + <span class="hidden-sm-up"><?=$this->transEsc("LibraryName")?></span> <img src="<?=$this->imageLink('headerlogo.png')?>" class="hidden-xs" alt="Logo <?=$this->transEsc('LibraryName')?>" aria-hidden="true"> <?php /* Custom finc header - END */ ?> </a> @@ -48,7 +48,8 @@ <li class="logoutOptions<?php if ($account->dropdownEnabled()): ?> with-dropdown<?php endif ?><?php if (!$account->isLoggedIn()): ?> hidden<?php endif ?>"> <a class="btn" href="<?=$this->url('myresearch-home', [], ['query' => ['redirect' => 0]])?>"> <i id="account-icon" class="fa fa-home" aria-hidden="true"></i> - <span><?=$this->transEsc("Your Account")?></span> + <span class="hidden-sm-md"><?=$this->transEsc("Your Account")?></span> + <span class="visible-sm-md-only"><?=$this->transEsc("Account")?></span> </a> </li> <?php if ($account->dropdownEnabled()): ?> @@ -109,7 +110,10 @@ <?php foreach ($this->layout()->allLangs as $langCode => $langName): ?> <?php if ($langCode !== $this->layout()->userLang) : ?> <li> - <button type="submit" class="btn <?=(count($this->layout()->allLangs) == 2) ? ' btn-secondary' : ''?>" href="#" onClick="document.langForm.mylang.value='<?=$langCode?>';document.langForm.submit()"><?=$this->displayLanguageOption($langName)?></button> + <button type="submit" class="btn <?=(count($this->layout()->allLangs) == 2) ? ' btn-secondary' : ''?>" href="#" onClick="document.langForm.mylang.value='<?=$langCode?>';document.langForm.submit()"> + <span class="visible-sm-md-only"><?=$langCode?></span> + <span class="hidden-sm-md"><?=$this->displayLanguageOption($langName)?></span> + </button> </li> <?php endif; ?> <?php endforeach; ?> diff --git a/themes/finc/templates/layout/layout.phtml b/themes/finc/templates/layout/layout.phtml index de31a198ebb34751939531dd2df5d536f8046c64..fac3c55ea90673bac2a47b954084ead02a7cc4a3 100644 --- a/themes/finc/templates/layout/layout.phtml +++ b/themes/finc/templates/layout/layout.phtml @@ -142,7 +142,19 @@ JS; ?> <?=$this->headScript()?> </head> -<body class="template-dir-<?=$this->templateDir?> template-name-<?=$this->templateName?> <?=$this->layoutClass('offcanvas-row')?><?php if ($this->layout()->rtl): ?> rtl<?php endif; ?>"> +<?php +$searchType = ''; +// to determine the searchtype it is necessary to ask the child model for its searchType +if ($this->layout()->templateName === 'results' && $this->layout()->hasChildren()) { + try { + $searchType + = current($this->layout()->getChildren())->params->getSearchType(); + } catch (\Throwable $t) { + // ignore all errors + } +} +?> +<body class="template-dir-<?=$this->templateDir?> template-name-<?=$this->templateName?> <?=$this->layoutClass('offcanvas-row')?><?php if ($this->layout()->rtl): ?> rtl<?php endif; ?><?php if ($searchType=='advanced'): ?> result-advanced<?php endif; ?>"> <?php // Set up the search box -- there are three possible cases: // 1. No search box was set; we should default to the normal box // 2. It was set to false; we should display nothing @@ -185,9 +197,10 @@ if (!isset($this->layout()->searchbox)) { && !empty($this->layout()->breadcrumbs) && $this->layout()->breadcrumbs !== false ): ?> - <ul class="breadcrumb large-centered hidden-xs hidden-print"> + <?php /* The breadcrumb for the result list after advanced search will also be shown for XS but not with the Start link - #17720 - HR */ ?> + <ul class="breadcrumb large-centered<?php if (!(($this->templateDir=='search') && ($this->templateName=='results') && ($searchType=='advanced'))) : ?> hidden-xs<?php endif; ?> hidden-print"> <?php /* added Home link - #17603 - HR */?> - <li><a href="<?=$this->url('home')?>"><?=$this->transEsc('Home')?></a></li> + <li <?php if (($this->templateDir=='search') && ($this->templateName=='results') && ($searchType=='advanced')) : ?> class="hidden-xs"<?php endif; ?>><a href="<?=$this->url('home')?>"><?=$this->transEsc('Home')?></a></li> <?php if (is_array($this->layout()->breadcrumbs)): ?> <?php if (count($this->layout()->breadcrumbs) > 1): ?> <?=$this->render('breadcrumbs/multi.phtml', [ @@ -212,7 +225,6 @@ if (!isset($this->layout()->searchbox)) { <?=$this->layout()->content?> </div> </div> - <?=$this->render('footer.phtml')?> diff --git a/themes/finc/templates/myresearch/checkedout.phtml b/themes/finc/templates/myresearch/checkedout.phtml index 00979e067ad3eea77db77c565373ebbb01b99c5e..a0ae5b548244ab7d72d87af175ff79aedbb86724 100644 --- a/themes/finc/templates/myresearch/checkedout.phtml +++ b/themes/finc/templates/myresearch/checkedout.phtml @@ -85,7 +85,7 @@ <?php if (isset($ilsDetails['renewable']) && $ilsDetails['renewable'] && isset($ilsDetails['renew_details'])): ?> <?php $safeId = preg_replace('/[^a-zA-Z0-9]/', '', $ilsDetails['renew_details']); ?> <label> - <input class="checkbox-select-item" type="checkbox" name="renewSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['renew_details'])?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item')?>" /> + <input class="checkbox-select-item" type="checkbox" name="renewSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['renew_details'])?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item_checked_out_renew')?>" /> </label> <input type="hidden" name="selectAllIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['renew_details'])?>" /> <input type="hidden" name="renewAllIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['renew_details'])?>" /> @@ -102,7 +102,7 @@ $thumbnailAlignment = $this->record($resource)->getThumbnailAlignment('account'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover ?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/myresearch/historicloans.phtml b/themes/finc/templates/myresearch/historicloans.phtml index 969bed2ec547bad90b19f7e89b04222ed21f0dfc..2f73364f07ac9703c2240869447fb082bdf65d1d 100644 --- a/themes/finc/templates/myresearch/historicloans.phtml +++ b/themes/finc/templates/myresearch/historicloans.phtml @@ -51,7 +51,7 @@ $thumbnailAlignment = $this->record($resource)->getThumbnailAlignment('account'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover ?> </div> <?php $thumbnail = ob_get_contents(); diff --git a/themes/finc/templates/myresearch/holds.phtml b/themes/finc/templates/myresearch/holds.phtml index 315ba230bf4cfd4cd947dff18d0dd16cc0b970a7..d46127d4fc138748d752e11aa24f6a2dee01a031 100644 --- a/themes/finc/templates/myresearch/holds.phtml +++ b/themes/finc/templates/myresearch/holds.phtml @@ -53,7 +53,7 @@ <input type="hidden" name="cancelAllIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" /> <div class="checkbox"> <label> - <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item')?>" /> + <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item_hold_cancel')?>" /> </label> </div> <?php endif; ?> @@ -65,7 +65,7 @@ $thumbnailAlignment = $this->record($resource)->getThumbnailAlignment('account'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover ?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/myresearch/illrequests.phtml b/themes/finc/templates/myresearch/illrequests.phtml index c95819f7c4f53a17bc9d01f5bd165940b39fc4de..086406fd81ddfa636e747aff995ef2e247820d06 100644 --- a/themes/finc/templates/myresearch/illrequests.phtml +++ b/themes/finc/templates/myresearch/illrequests.phtml @@ -54,7 +54,7 @@ <div class="checkbox"> <input type="hidden" name="cancelAllIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" /> <label> - <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item')?>" /> + <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item_ill_request_cancel')?>" /> </label> </div> <?php endif; ?> @@ -66,7 +66,7 @@ $thumbnailAlignment = $this->record($resource)->getThumbnailAlignment('account'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover ?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/myresearch/storageretrievalrequests.phtml b/themes/finc/templates/myresearch/storageretrievalrequests.phtml index b05bc9fb85ecb8da4d6b794ce1caf0542d3b2549..18bd7f3ca95305f8e741381b199fc031ffef1a69 100644 --- a/themes/finc/templates/myresearch/storageretrievalrequests.phtml +++ b/themes/finc/templates/myresearch/storageretrievalrequests.phtml @@ -53,7 +53,7 @@ <div class="checkbox"> <input type="hidden" name="cancelAllIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" /> <label class="pull-left flip"> - <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item')?>" /> + <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtmlAttr($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" aria-describedby="<?=$describedById?>" aria-label="<?=$this->transEsc('select_item_storage_retrieval_request_cancel')?>" /> </label> </div> <?php endif; ?> @@ -65,7 +65,7 @@ $thumbnailAlignment = $this->record($resource)->getThumbnailAlignment('account'); if ($cover): ob_start(); ?> - <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>"> + <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtmlAttr($coverDetails['size'])?>" aria-hidden="true"> <?=$cover ?> </div> <?php $thumbnail = ob_get_contents(); ?> diff --git a/themes/finc/templates/record/checkbox.phtml b/themes/finc/templates/record/checkbox.phtml index 4a77b03ba688132f05fb98d9ebb3c5b4e9b4d49d..408f48b1a76de9533c3568044d94c2582ead29b9 100644 --- a/themes/finc/templates/record/checkbox.phtml +++ b/themes/finc/templates/record/checkbox.phtml @@ -1,6 +1,7 @@ <!-- finc: record - checkbox --> +<?php $label = isset($this->context) ? 'select_item_' . $this->context : 'select_item'; ?> <label class="record-checkbox hidden-print"> - <input class="checkbox-select-item" type="checkbox" name="ids[]" value="<?=$this->id?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?> aria-describedby="<?=$this->id?>" aria-label="<?=$this->transEsc('select_item')?>"/> + <input class="checkbox-select-item" type="checkbox" name="ids[]" value="<?=$this->id?>"<?php if(isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?> aria-describedby="<?=$this->id?>" aria-label="<?=$this->transEsc($label)?>"/> <span class="checkbox-icon"></span> <?php if (strlen($this->number ?? '') > 0): ?><span class="sr-only"><?=$this->transEsc('result_checkbox_label', ['%%number%%' => $this->number]) ?></span><?php endif; ?> </label> diff --git a/themes/finc/templates/record/cover.phtml b/themes/finc/templates/record/cover.phtml index f8d179eb3f3b9d1e6c246f092509450557a16f84..d528c97f6358d0cb62317dc0a7e8e359ddc0ba2b 100644 --- a/themes/finc/templates/record/cover.phtml +++ b/themes/finc/templates/record/cover.phtml @@ -4,7 +4,7 @@ the class .nocover prevents nocover images from loading in lightbox or can be used to hide the images */ ?> <?php $alt = $alt ?? $this->transEsc('Cover Image')?> <?php if ($cover): ?> - <?php if ($this->link): ?><a href="<?=$this->escapeHtmlAttr($this->link)?>" target="_blank" aria-hidden="true"><?php endif; ?> + <?php if ($this->link): ?><a href="<?=$this->escapeHtmlAttr($this->link)?>" target="_blank" tabindex="-1"><?php endif; ?> <img alt="<?=$alt?>" <?php if ($linkPreview): ?>data-linkpreview="true" <?php endif; ?>class="recordcover" src="<?=$this->escapeHtmlAttr($cover); ?>" aria-hidden="true"/> <?php if ($this->link): ?></a><?php endif; ?> <?php elseif ($cover === false): ?> @@ -14,7 +14,7 @@ <div class="spinner"><i class="fa fa-spinner fa-spin"></i></div> <div class="cover-container"> <?=$this->render('record/coverReplacement')?> - <a class="coverlink hidden"> + <a class="coverlink hidden" tabindex="-1"> <img src onerror="loadCoverByElement({source:'<?=$this->escapeHtmlAttr($driver->getSourceIdentifier())?>', recordId:'<?=$this->escapeHtmlAttr($driver->getUniqueID())?>', size:'<?=$this->escapeHtmlAttr($size)?>'}, $('#cover-<?=$driver->getUniqueID()?>'))" <?php if ($linkPreview): ?>data-linkpreview="true" <?php endif; ?> class="recordcover ajax" alt="<?=$this->escapeHtmlAttr($alt); ?>" /> </a> diff --git a/themes/finc/templates/search/advanced/layout.phtml b/themes/finc/templates/search/advanced/layout.phtml index 9298d19437392defad3a3205ad534266e2fe72b1..10453d28ce049b94643f250672bbbd6111ad451d 100644 --- a/themes/finc/templates/search/advanced/layout.phtml +++ b/themes/finc/templates/search/advanced/layout.phtml @@ -78,7 +78,7 @@ if (isset($searchDetails) && is_object($searchDetails)) { <div class="clearfix"> <?php ?> <span class="offcanvas-toggler"> - <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" title="<?=$this->transEsc('sidebar_expand')?>"> + <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" aria-label="<?=$this->transEsc('sidebar_expand')?>"> <?=$this->transEsc('offcanvas-toggler-search-tips')?> </a> </span> diff --git a/themes/finc/templates/search/advanced/ranges.phtml b/themes/finc/templates/search/advanced/ranges.phtml index 3c41b51dda92daf80d898a75add153796865aa68..bad19945e1b1cf91b1015f2c3f76682bba306f6d 100644 --- a/themes/finc/templates/search/advanced/ranges.phtml +++ b/themes/finc/templates/search/advanced/ranges.phtml @@ -9,11 +9,11 @@ <input type="hidden" name="<?=$this->escapeHtmlAttr($current['type'])?>range[]" value="<?=$escField?>"/> <div class="date-fields"> <div class="date-from"> - <label for="<?=$escField?>from"><?=$this->transEsc('date_from')?>:</label> + <label id="from-label" for="<?=$escField?>from"><?=$this->transEsc('date_from')?>:</label> <input type="text" name="<?=$escField?>from" id="<?=$escField?>from" value="<?=isset($current['values'][0])?$this->escapeHtmlAttr($current['values'][0]):''?>" class="form-control" <?=$extraInputAttribs?>/> </div> <div class="date-to"> - <label for="<?=$escField?>to"><?=$this->transEsc('date_to')?>:</label> + <label id="to-label" for="<?=$escField?>to"><?=$this->transEsc('date_to')?>:</label> <input type="text" name="<?=$escField?>to" id="<?=$escField?>to" value="<?=isset($current['values'][1])?$this->escapeHtmlAttr($current['values'][1]):''?>" class="form-control" <?=$extraInputAttribs?>/> </div> </div> @@ -67,6 +67,10 @@ $('#{$escField}from, #{$escField}to').change(function () { true ); }); +$(document).ready(function() { + $(".slider-handle.min-slider-handle").attr("aria-labelledby", "from-label"); + $(".slider-handle.max-slider-handle").attr("aria-labelledby", "to-label"); +}); JS; ?> <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET'); ?> diff --git a/themes/finc/templates/search/controls/limit.phtml b/themes/finc/templates/search/controls/limit.phtml index 8c34fc5bc7c59e9b45cfec87ffa22e854c485ad9..d90750005b5f49a86ae0a44a6965f312c3bffddc 100644 --- a/themes/finc/templates/search/controls/limit.phtml +++ b/themes/finc/templates/search/controls/limit.phtml @@ -5,7 +5,7 @@ <?php /* finc: DO NOT use class 'form-inline' as it messes up the select box */ ?> <form class="limit" action="<?=$this->currentPath() . $this->results->getUrlQuery()->setLimit(null)?>" method="post"> <label for="limit"><?=$this->transEsc('Results per page')?></label> - <div class="search-controls-div"> + <div class="limit-inner"> <?php /* finc: DO NOT use class 'form-control' as it messes up the select box */ ?> <select id="limit" name="limit"> <?php foreach ($limitList as $limitVal => $limitData): ?> diff --git a/themes/finc/templates/search/controls/sort.phtml b/themes/finc/templates/search/controls/sort.phtml index 557a995a4dc38021cd6812228a1263145acd9e0b..ba9d20221c30bfdea7103b55cdf4ec63204bc914 100644 --- a/themes/finc/templates/search/controls/sort.phtml +++ b/themes/finc/templates/search/controls/sort.phtml @@ -5,7 +5,7 @@ <form class="search-sort text-right" action="<?=$this->currentPath()?>" method="get" name="sort"> <?=$this->results->getUrlQuery()->asHiddenFields(['sort' => '/.*/']);?> <label for="sort_options_1"><?=$this->transEsc('Sort')?></label> - <div class="search-controls-div"> + <div class="sort-inner"> <?php /* finc: DO NOT use class 'form-control' as it messes up the select box */ ?> <select id="sort_options_1" name="sort"> <?php foreach ($list as $sortType => $sortData): ?> diff --git a/themes/finc/templates/search/results.phtml b/themes/finc/templates/search/results.phtml index d5c200b30de591ff488b6242b07328cdbeb46164..de9ade6fd08919a365af15829592376107b95f24 100644 --- a/themes/finc/templates/search/results.phtml +++ b/themes/finc/templates/search/results.phtml @@ -1,5 +1,7 @@ <!-- finc: search - results --> <?php +$this->context = 'search_result'; + // Set up page title: $lookfor = $this->results->getUrlQuery()->isQuerySuppressed() ? '' : $this->params->getDisplayQuery(); if (isset($this->overrideTitle)) { @@ -71,7 +73,7 @@ $this->headScript()->appendFile("check_save_statuses.js"); <?=$this->context()->renderInContext('search/controls/showing.phtml', ['lookfor' => $lookfor, 'recordTotal' => $recordTotal]) ?> </span> <span class="offcanvas-toggler"> - <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" title="<?=$this->transEsc('sidebar_expand') ?>"> + <a class="search-filter-toggle btn btn-primary visible-xs" href="#myresearch-sidebar" data-toggle="offcanvas" aria-label="<?=$this->transEsc('sidebar_expand') ?>"> <?=$this->transEsc('Refine Results') ?> </a> </span> diff --git a/themes/finc/templates/search/searchbox.phtml b/themes/finc/templates/search/searchbox.phtml index 3e8963def57269b1389a5f9cf8727fabd3a67044..6529d9cf80bec94a36c23c786561f41c587cdffa 100644 --- a/themes/finc/templates/search/searchbox.phtml +++ b/themes/finc/templates/search/searchbox.phtml @@ -35,7 +35,8 @@ $hiddenFilterParams = $this->searchTabs()->getCurrentHiddenFilterParams($this->s <?php $tabs = $this->context($this)->renderInContext('search/searchTabs', ['searchTabs' => $tabConfig['tabs']]); ?> <?php if (!empty($tabs)): ?><?=$tabs?> <div class="tab-content clearfix no-gutter-all"><?php endif; ?> - <p class="adv_search_terms"><?=$this->transEsc("Your search terms")?> : "<strong><?=$this->escapeHtml($this->lookfor)?></strong>"</p> + <?php /* Do not show the advanced search terms (adv_search_terms) because they will be shown within the breadcrumb - #17720 - HR */ ?> + <?php /* <p class="adv_search_terms"><?=$this->transEsc("Your search terms")?> : "<strong><?=$this->escapeHtml($this->lookfor)?></strong>"</p> */ ?> <p class="adv_search_links"> <a href="<?=$this->url($advSearch)?>?edit=<?=$this->escapeHtmlAttr($this->searchId)?>"><?=$this->transEsc("Edit this Advanced Search")?></a> <a href="<?=$this->url($advSearch) . $hiddenFilterParams?>"><?=$this->transEsc("Start a new Advanced Search")?></a> diff --git a/themes/finc/theme.config.php b/themes/finc/theme.config.php index 51037a227bb81a1179f169b376ce8b91026d8014..3896a57fa8beb2d1e681c1a4b599d47299116f8c 100644 --- a/themes/finc/theme.config.php +++ b/themes/finc/theme.config.php @@ -5,7 +5,8 @@ return [ 'check_item_statuses.js', 'lightbox_form_cache.js', 'covers.js', - 'common-finc.js' + 'common-finc.js', + 'cart-finc.js' ], 'helpers' => [ 'aliases' => [ @@ -18,6 +19,7 @@ return [ 'record' => 'finc\View\Helper\Root\Record', 'flashmessages' => 'finc\View\Helper\Root\Flashmessages', 'headTitle' => 'finc\View\Helper\Root\HeadTitle', + 'externalLink' => 'finc\View\Helper\Root\ExternalLink', ], 'factories' => [ 'finc\View\Helper\Root\BranchInfo' => @@ -44,6 +46,8 @@ return [ 'VuFind\View\Helper\Root\FlashmessagesFactory', 'finc\View\Helper\Root\HeadTitle' => 'finc\View\Helper\Root\Factory::getHeadTitle', + 'finc\View\Helper\Root\ExternalLink' => + 'finc\View\Helper\Root\Factory::getExternalLink', ] ] ];