From 49659eb2760f4f837555141939145cc4b36177df Mon Sep 17 00:00:00 2001 From: Ere Maijala <ere.maijala@helsinki.fi> Date: Wed, 1 May 2019 09:47:42 -0400 Subject: [PATCH] Set query parameters through router. --- module/VuFind/src/VuFind/Record/Router.php | 8 +++++++- module/VuFind/src/VuFind/View/Helper/Root/RecordLink.php | 9 ++++++--- .../RecordDriver/DefaultRecord/result-list.phtml | 2 +- .../templates/RecordDriver/EDS/result-list.phtml | 2 +- .../bootstrap3/templates/RecordTab/hierarchytree.phtml | 2 +- themes/bootstrap3/templates/RecordTab/holdingsils.phtml | 4 ++-- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/module/VuFind/src/VuFind/Record/Router.php b/module/VuFind/src/VuFind/Record/Router.php index 008f1f85edc..49685fd27fd 100644 --- a/module/VuFind/src/VuFind/Record/Router.php +++ b/module/VuFind/src/VuFind/Record/Router.php @@ -85,14 +85,20 @@ class Router * @param \VuFind\RecordDriver\AbstractBase|string $driver Record driver * representing record to link to, or source|id pipe-delimited string * @param string $tab Action to access + * @param array $query Optional query params * * @return array */ - public function getTabRouteDetails($driver, $tab = null) + public function getTabRouteDetails($driver, $tab = null, $query = []) { $route = $this->getRouteDetails( $driver, '', empty($tab) ? [] : ['tab' => $tab] ); + // Add the options and query elements only if we need a query to avoid + // an empty element in the route definition: + if ($query) { + $route['options']['query'] = $query; + } // If collections are active and the record route was selected, we need // to check if the driver is actually a collection; if so, we should switch diff --git a/module/VuFind/src/VuFind/View/Helper/Root/RecordLink.php b/module/VuFind/src/VuFind/View/Helper/Root/RecordLink.php index 59c2814aa91..fb4e746f063 100644 --- a/module/VuFind/src/VuFind/View/Helper/Root/RecordLink.php +++ b/module/VuFind/src/VuFind/View/Helper/Root/RecordLink.php @@ -180,15 +180,18 @@ class RecordLink extends \Zend\View\Helper\AbstractHelper * representing record to link to, or source|id pipe-delimited string * @param string $tab Optional record * tab to access + * @param array $query Optional query params * * @return string */ - public function getTabUrl($driver, $tab = null) + public function getTabUrl($driver, $tab = null, $query = []) { // Build the URL: $urlHelper = $this->getView()->plugin('url'); - $details = $this->router->getTabRouteDetails($driver, $tab); - return $urlHelper($details['route'], $details['params']); + $details = $this->router->getTabRouteDetails($driver, $tab, $query); + return $urlHelper( + $details['route'], $details['params'], $details['options'] ?? [] + ); } /** diff --git a/themes/bootstrap3/templates/RecordDriver/DefaultRecord/result-list.phtml b/themes/bootstrap3/templates/RecordDriver/DefaultRecord/result-list.phtml index c97910034a8..e6409a3af1b 100644 --- a/themes/bootstrap3/templates/RecordDriver/DefaultRecord/result-list.phtml +++ b/themes/bootstrap3/templates/RecordDriver/DefaultRecord/result-list.phtml @@ -198,7 +198,7 @@ <div class="hierarchyTreeLink"> <input type="hidden" value="<?=$this->escapeHtmlAttr($hierarchyID)?>" class="hiddenHierarchyId" /> <i class="result-link-icon fa fa-fw fa-sitemap" aria-hidden="true"></i> - <a class="hierarchyTreeLinkText result-link-label" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchyID)?>#tabnav" title="<?=$this->transEsc('hierarchy_tree')?>" data-lightbox-href="<?=$this->recordLink()->getTabUrl($this->driver, 'AjaxTab')?>?hierarchy=<?=urlencode($hierarchyID)?>" data-lightbox-post="tab=hierarchytree"> + <a class="hierarchyTreeLinkText result-link-label" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree', ['hierarchy' => $hierarchyID])?>#tabnav" title="<?=$this->transEsc('hierarchy_tree')?>" data-lightbox-href="<?=$this->recordLink()->getTabUrl($this->driver, 'AjaxTab', ['hierarchy' => $hierarchyID])?>" data-lightbox-post="tab=hierarchytree"> <?=$this->transEsc('hierarchy_view_context')?><?php if (count($trees) > 1): ?>: <?=$this->escapeHtml($hierarchyTitle)?><?php endif; ?> </a> </div> diff --git a/themes/bootstrap3/templates/RecordDriver/EDS/result-list.phtml b/themes/bootstrap3/templates/RecordDriver/EDS/result-list.phtml index 066344817c9..1328784fbf4 100644 --- a/themes/bootstrap3/templates/RecordDriver/EDS/result-list.phtml +++ b/themes/bootstrap3/templates/RecordDriver/EDS/result-list.phtml @@ -126,7 +126,7 @@ <div class="hierarchyTreeLink"> <input type="hidden" value="<?=$this->escapeHtmlAttr($hierarchyID)?>" class="hiddenHierarchyId" /> <i class="fa fa-fw fa-sitemap" aria-hidden="true"></i> - <a class="hierarchyTreeLinkText" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchyID)?>#tabnav" title="<?=$this->transEsc('hierarchy_tree')?>"> + <a class="hierarchyTreeLinkText" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree', ['hierarchy' => $hierarchyID])?>#tabnav" title="<?=$this->transEsc('hierarchy_tree')?>"> <?=$this->transEsc('hierarchy_view_context')?><?php if (count($trees) > 1): ?>: <?=$this->escapeHtml($hierarchyTitle)?><?php endif; ?> </a> </div> diff --git a/themes/bootstrap3/templates/RecordTab/hierarchytree.phtml b/themes/bootstrap3/templates/RecordTab/hierarchytree.phtml index 630d4be321e..f21040fa361 100644 --- a/themes/bootstrap3/templates/RecordTab/hierarchytree.phtml +++ b/themes/bootstrap3/templates/RecordTab/hierarchytree.phtml @@ -26,7 +26,7 @@ <?php if($activeTree == $hierarchy): ?> <i class="fa fa-sitemap" aria-hidden="true"></i> <?=$this->escapeHtml($hierarchyTitle)?> <?php else: ?> - <i class="fa fa-sitemap text-muted" aria-hidden="true"></i> <a href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchy)?>"><?=$this->escapeHtml($hierarchyTitle)?></a> + <i class="fa fa-sitemap text-muted" aria-hidden="true"></i> <a href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree', ['hierarchy' => $hierarchy])?>"><?=$this->escapeHtml($hierarchyTitle)?></a> <?php endif; ?> <?php endforeach; ?> </div> diff --git a/themes/bootstrap3/templates/RecordTab/holdingsils.phtml b/themes/bootstrap3/templates/RecordTab/holdingsils.phtml index 8c4f33b0b27..934039e77fc 100644 --- a/themes/bootstrap3/templates/RecordTab/holdingsils.phtml +++ b/themes/bootstrap3/templates/RecordTab/holdingsils.phtml @@ -32,11 +32,11 @@ <?php if ($account->loginEnabled() && $offlineMode != 'ils-offline'): ?> <?php if (!$user): ?> <div class="alert alert-info"> - <a href="<?=$this->recordLink()->getTabUrl($this->driver, 'Holdings')?>?login=true&catalogLogin=true" data-lightbox><?=$this->transEsc("hold_login")?></a> + <a href="<?=$this->recordLink()->getTabUrl($this->driver, 'Holdings', ['login' => 'true', 'catalogLogin' => 'true'])?>" data-lightbox><?=$this->transEsc("hold_login")?></a> </div> <?php elseif (!$user->cat_username): ?> <div class="alert alert-info"> - <?=$this->translate("hold_profile_html", ['%%url%%' => $this->recordLink()->getTabUrl($this->driver, 'Holdings') . '?catalogLogin=true'])?> + <?=$this->translate("hold_profile_html", ['%%url%%' => $this->recordLink()->getTabUrl($this->driver, 'Holdings', ['catalogLogin' => 'true'])])?> </div> <?php endif; ?> <?php endif; ?> -- GitLab