diff --git a/fid_bbi/config/vufind/config.ini b/fid_bbi/config/vufind/config.ini index 3587a84139717be9cd54c46f24af85bd8ec91447..b3f1bca0a50c0bc45153bfaad62e8ad1112bf3b6 100644 --- a/fid_bbi/config/vufind/config.ini +++ b/fid_bbi/config/vufind/config.ini @@ -215,3 +215,12 @@ Infodata = "https://wtiweb.wti-frankfurt.de/fid-bbi" [ExternalDatabases] DBIS = true + +[SearchTabs] +Solr:main = "All" +Solr:Releases = "Releases" + +[SearchTabsFilters] +Solr:Releases[] = 'facet_avail:Local' +Solr:Releases[] = 'publishDateSort:2021' + diff --git a/fid_bbi/config/vufind/searches.ini b/fid_bbi/config/vufind/searches.ini index 9a36cb108481edba52ea6e69f8f19d2ecfb49cbf..49eb36dfc05689297a17c6481d13cc5ff82b1fd8 100644 --- a/fid_bbi/config/vufind/searches.ini +++ b/fid_bbi/config/vufind/searches.ini @@ -88,3 +88,9 @@ author2_orig = "Alternative Author Name" author_corp_ref = "Alternative Corporate Name" author_corporate_orig = "Alternative Corporate Name" author_corporate2_orig = "Alternative Corporate Name" + +[SideRecommendations] +AllFields[] = SideFacets:Results:CheckboxFacets + +[TopRecommendations] +AllFields[] = SwitchTab diff --git a/themes/fid_bbi/languages/de.ini b/themes/fid_bbi/languages/de.ini index 315c09a272f5a55921fa4d94f6130f6e4899a591..5a4b23f4a822dec9670f67fb9b80ab9388940125 100644 --- a/themes/fid_bbi/languages/de.ini +++ b/themes/fid_bbi/languages/de.ini @@ -105,3 +105,13 @@ bbi_twitter_account = "https://twitter.com/FID_BBI" ; #20187 genderization Change Profile Data = "Kontodaten ändern" + +; #20242 +Releases = Neuerscheinungen +switchtab_info_releases = Diese Liste enthält nur Neuerscheinungen. +switchtab_with_licenses = Sie können diese Werke kostenlos zur Leihe bestellen. Das Buch wird direkt vom Buchhändler an Sie geschickt. – Die Kosten übernimmt der FID BBI. +switchtab_not_logged_in = Diese Werke können Forschende an deutschen Instituten (Nutzer*innengruppe 1) kostenlos zur Leihe bestellen. <br/>Noch keinen Account? <a href="%%registerUrl%%">Jetzt registrieren</a>. +switchtab_without_licenses = Diese Werke können Forschende an deutschen Instituten (Nutzer*innengruppe 1) kostenlos zur Leihe bestellen. +search_in_tab_releases = In Neuerscheinungen suchen +search_in_tab_all = Im gesamten Katalog nach "%%lookfor%%" suchen +search_everywhere = Neue Recherche im gesamten Katalog \ No newline at end of file diff --git a/themes/fid_bbi/languages/en.ini b/themes/fid_bbi/languages/en.ini index 67ef1e93049cd2d894dd40071088697b46e265d9..e2a0912377f8666a10be7db37495433337d5eda5 100644 --- a/themes/fid_bbi/languages/en.ini +++ b/themes/fid_bbi/languages/en.ini @@ -96,3 +96,13 @@ dbis_access_2 = "accessible via a single user license at your home library" bbi_blog_url = "https://www.fid-bbi.de/blog/" kvk_url = https://kvk.bibliothek.kit.edu/index.html?kataloge=K10PLUS&kataloge=BVB&kataloge=NRW&kataloge=HEBIS&kataloge=KOBV_SOLR&kataloge=DDB&kataloge=STABI_BERLIN&kataloge=TIB&kataloge=VD16&kataloge=VD17&kataloge=VD18&kataloge=BIBOPAC&kataloge=LBOE&kataloge=OENB&kataloge=ABES&kataloge=BASE&kataloge=DART_EUROPE&kataloge=DIGIBIB&kataloge=DFG_EBOOKS&kataloge=DFG_AUFSAETZE&kataloge=DOABOOKS&kataloge=DOAJ&kataloge=EROMM_WEBSEARCH&kataloge=EUROPEANA&kataloge=GOOGLE_BOOKS&kataloge=KUNST_HATHI&kataloge=ARCHIVE_ORG&kataloge=OAPEN&kataloge=ZVDD&kataloge=BHL&lang=en&digitalOnly=1&embedFulltitle=0&newTab=0 bbi_twitter_account = "https://twitter.com/FID_BBI" + +; #20242 +Releases = "New Publications" +switchtab_info_releases = This list only contains new publications +switchtab_with_licenses = You can order these new publications for loan free of charge. The book will be sent to you directly from the bookseller. - The costs are covered by the FID BBI. +switchtab_not_logged_in = Researchers at German institutes (user group 1) can order these publications for loan free of charge.<br/>No account yet? <a href="%%registerUrl%%">Register now.</a> +switchtab_without_licenses = Researchers at German institutes (user group 1) can order these publications for loan free of charge. +search_in_tab_releases = Search in new publications +search_in_tab_all = "Search entire catalog for "%%lookfor%%"" +search_everywhere = New search in entire catalog diff --git a/themes/fid_bbi/scss/blocks/search.scss b/themes/fid_bbi/scss/blocks/search.scss index 49495611674e5e1d4b7760c6b9f0437e696eb208..639a4eb9c37286e030b028a77ddb68d5f04ef953 100644 --- a/themes/fid_bbi/scss/blocks/search.scss +++ b/themes/fid_bbi/scss/blocks/search.scss @@ -156,6 +156,20 @@ } } +.switchtab-links { + li { + margin: g(.25); + + &::before { + content: none; + } + } + + .icon { + color: currentColor; + } +} + // Only used on default layout .search-menu { margin: g() 0 0; diff --git a/themes/fid_bbi/templates/Recommend/SwitchTab.phtml b/themes/fid_bbi/templates/Recommend/SwitchTab.phtml new file mode 100644 index 0000000000000000000000000000000000000000..01b0ed946b40b22febe63eb0b212ab2717ddf65b --- /dev/null +++ b/themes/fid_bbi/templates/Recommend/SwitchTab.phtml @@ -0,0 +1,52 @@ +<?php + $tabConfig = is_object($this->params) + ? $this->searchTabs()->getTabConfigForParams($this->params) : []; + $activeTab = $this->recommend->getActiveTab($tabConfig)["label"] ?? "All"; + if (count($tabConfig) > 0 && $activeTab !== "All"): ?> +<!-- fid_bbi: Recommend - SwitchTabs --> + <div class="alert alert-info"> + <?php if (count($tabConfig) > 0): ?> + <?=$this->transEsc('switchtab_info_'.strtolower($activeTab))?> + <div class="switchtab-links"><ul> + <li><a class="-icon" href="<?=$this->url('search-home')?>"> + <?=$this->icon('arrow-right')?> + <?=$this->translate('search_everywhere')?> + </a></li> + <?php $lookfor = $this->results->getParams()->getQuery()->getString(); + if (!empty($lookfor)): ?> + <?php $inactiveTabs = $this->recommend->getInactiveTabs($tabConfig); ?> + <?php foreach ($inactiveTabs as $tab): ?> + <?php if (!$tab['selected']): ?> + <li> + <a class="-icon" href="<?=$this->escapeHtmlAttr($tab['url'])?>"> + <?=$this->icon('arrow-right')?> + <?=$this->transEsc( + 'search_in_tab_'.strtolower($tab['label']), + [ + '%%lookfor%%' => $lookfor, + ] + ); ?> + </a> + </li> + <?php endif; ?> + <?php endforeach; ?> + <?php endif; ?> + </ul></div> + <?php endif; ?> + + <?php if ($this->permission()->allowDisplay('fid.Acquisitions')):?> + <?=$this->translate('switchtab_with_licenses')?> + <?php elseif ($this->permission()->allowDisplay('fid.LimitedAccess')):?> + <?=$this->translate('switchtab_without_licenses')?> + <?php else: ?> + <?=$this->translate( + 'switchtab_not_logged_in', + [ + '%%registerUrl%%' => + $this->url('myresearch-account',[],['query'=>['auth_method'=>'fid']]) + ] + )?> + <?php endif; ?> + </div> +<!-- fid_bbi: Recommend - SwitchTabs - END --> +<?php endif; ?> diff --git a/themes/fid_bbi/templates/Recommend/TopFacets.phtml b/themes/fid_bbi/templates/Recommend/TopFacets.phtml deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/themes/fid_bbi/templates/header.phtml b/themes/fid_bbi/templates/header.phtml index 6c0e3173d5e1e3a8bbfa367fd09f17f85193bbdb..eecc5943e2106f43a4659329eaefd4b11213aa95 100644 --- a/themes/fid_bbi/templates/header.phtml +++ b/themes/fid_bbi/templates/header.phtml @@ -59,6 +59,17 @@ <?=$this->translate('Advanced Search')?> </a> </li> + <?php $tabConfig = $this->searchTabs()->getTabConfig('Solr', null, null); + foreach ($tabConfig['tabs'] as $tab): + if ($tab['id'] !== 'Solr:main'): + ?> + <li> + <a class="-icon" href="<?=$tab['url']?>"> + <?=$this->icon('arrow-right')?> + <?=$this->translate($tab['label'])?> + </a> + </li> + <?php endif; endforeach;?> </ul> </div> <?php else: ?> diff --git a/themes/fid_bbi/templates/layout/layout.phtml b/themes/fid_bbi/templates/layout/layout.phtml index 118c33a1897ca8b12ad8d002096dad5fb22e212c..99ecdef2b63b46171d31ce50649493b9a9b72900 100644 --- a/themes/fid_bbi/templates/layout/layout.phtml +++ b/themes/fid_bbi/templates/layout/layout.phtml @@ -4,18 +4,14 @@ <!-- fid_bbi: layout - layout --> <?php $isHome = $this->templateDir === 'search' && $this->templateName === 'home'; ?> <body class="layout <?=$isHome ? '-home' : '-default'?>"> - <?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 -// 3. It is set to a custom string; we should display the provided version -// Set up default search box if no data was provided from the template; -// this covers case 1. Cases 2 and 3 are then covered by logic below. + <?php if ( $this->templateName === 'advanced' || $this->templateDir === 'records' || !isset($this->layout()->searchbox) ) { - $this->layout()->searchbox = $this->render('search/searchbox.phtml'); + // reset searchbox in case we did leave the results page + $this->layout()->searchbox = $this->render('search/searchbox.phtml', ['ignoreHiddenFilterMemory' => true]); } ?> <?php // Add landmark role to avoid 'all content must be inside landmarks error', CK ?> diff --git a/themes/fid_bbi/templates/search/results.phtml b/themes/fid_bbi/templates/search/results.phtml index 70b8d0fc5f3d5b88bffaefd0fdfd58e9f1663982..01a8e3c463a054e99a1b87545a5700b89aa98470 100644 --- a/themes/fid_bbi/templates/search/results.phtml +++ b/themes/fid_bbi/templates/search/results.phtml @@ -77,6 +77,10 @@ $this->headScript()->appendFile("check_save_statuses.js"); <?=$this->flashmessages()?> + <?php foreach ($top = $this->results->getRecommendations('top') as $index => $current): ?> + <?=$this->recommend($current, 'top', $index)?> + <?php endforeach; ?> + <div class="results-header"> <?php if ($this->params->getSearchType() === 'advanced'):?> <?=$this->render('search/advanced-search-info.phtml');?> @@ -102,10 +106,6 @@ $this->headScript()->appendFile("check_save_statuses.js"); <p class="alert alert-danger"><?=$this->transEsc('nohit_parse_error')?></p> <?php endif; ?> - <?php foreach (($top = $this->results->getRecommendations('top')) as $index => $current): ?> - <?=$this->recommend($current, 'top', $index)?> - <?php endforeach; ?> - <?php foreach ($this->results->getRecommendations('noresults') as $index => $current): ?> <?php if (!in_array($current, $top)): ?> <?=$this->recommend($current, 'noresults', $index)?> @@ -208,10 +208,6 @@ $this->headScript()->appendFile("check_save_statuses.js"); <?php endif; ?> <?php endif; ?> </div> - - <?php foreach ($this->results->getRecommendations('top') as $index => $current): ?> - <?=$this->recommend($current, 'top', $index)?> - <?php endforeach; ?> <?php endif; ?> <?php foreach ($this->results->getRecommendations('side') as $index => $current): ?> diff --git a/themes/fid_bbi/templates/search/searchbox.phtml b/themes/fid_bbi/templates/search/searchbox.phtml index b5c3baa15cdf571339e41d44651f49753a635b57..bfa917d964c804a302fb43d0fecc76d6f9c808d7 100644 --- a/themes/fid_bbi/templates/search/searchbox.phtml +++ b/themes/fid_bbi/templates/search/searchbox.phtml @@ -51,8 +51,6 @@ $tabConfig = $this->searchTabs()->getTabConfig( ); ?> -<?php // TODO: Use longer placeholder on large screen, like in the mockup? ?> -<?php $placeholder = $this->translate('search_terms'); ?> <form action="<?=$this->url($basicSearch)?>" autocomplete="off" @@ -66,8 +64,12 @@ $tabConfig = $this->searchTabs()->getTabConfig( isset($this->filterList) && is_array($this->filterList) ? $this->filterList : [], isset($this->checkboxFilters) && is_array($this->checkboxFilters) ? $this->checkboxFilters : [] ); - $filterActive = !empty($filterDetails) - || (($tabConfig['tabs'][0]['label'] ?? '') !== ($tabConfig['selected']['label'] ?? '')); + $filterActive = !empty($filterDetails); + $searchTab = $tabConfig['selected']['label'] ?? ''; + $searchTabsActive = $searchTab !== ($tabConfig['tabs'][0]['label'] ?? ''); + $placeholder = $searchTabsActive + ? $this->translate('search_in_tab_'.strtolower($searchTab)) + : $this->translate('search_terms'); ?> <input @@ -132,6 +134,12 @@ $tabConfig = $this->searchTabs()->getTabConfig( </div> <?php endif; ?> + <?php foreach ($hiddenFilters as $key => $filter): ?> + <?php foreach ($filter as $value): ?> + <input type="hidden" name="hiddenFilters[]" value="<?=$this->escapeHtmlAttr($key) . ':' . $this->escapeHtmlAttr($value)?>" /> + <?php endforeach; ?> + <?php endforeach; ?> + <button class="search-submit" type="submit"> <?=$this->icon('magnifier')?> <?=$this->transEsc('Find')?>