diff --git a/module/VuFind/src/VuFind/Bootstrap.php b/module/VuFind/src/VuFind/Bootstrap.php index 1c9da23e849a8ac314b14b38f1bf9cdef9feb9fe..883f81b1da796640f51438397b8518013eee166e 100644 --- a/module/VuFind/src/VuFind/Bootstrap.php +++ b/module/VuFind/src/VuFind/Bootstrap.php @@ -65,6 +65,7 @@ class Bootstrap public function bootstrap() { $this->initAccount(); + $this->initContext(); $this->initTheme(); } @@ -83,6 +84,29 @@ class Bootstrap $this->events->attach('dispatch', $callback); } + /** + * Set view variables representing the current context. + * + * @return void + */ + protected function initContext() + { + $callback = function($event) { + $serviceManager = $event->getApplication()->getServiceManager(); + $viewModel = $serviceManager->get('viewmanager')->getViewModel(); + + // Grab the template name from the first child -- we can use this to + // figure out the current template context. + $children = $viewModel->getChildren(); + $parts = explode('/', $children[0]->getTemplate()); + $viewModel->setVariable('templateDir', $parts[0]); + $viewModel->setVariable( + 'templateName', isset($parts[1]) ? $parts[1] : null + ); + }; + $this->events->attach('dispatch', $callback); + } + /** * Set up theme handling. * diff --git a/themes/vufind/jquerymobile/templates/footer.phtml b/themes/vufind/jquerymobile/templates/footer.phtml index 6421d8e00465cc22b2d785e5966fc84168406f1b..0dc231d6a2d411de20e941c2bd1b24c56959e889 100644 --- a/themes/vufind/jquerymobile/templates/footer.phtml +++ b/themes/vufind/jquerymobile/templates/footer.phtml @@ -4,7 +4,7 @@ <? // if a module has footer-navbar.tpl, then use it, otherwise use default try { - echo $this->render("{$this->controller}/footer-navbar.phtml"); + echo $this->render("{$this->layout()->templateDir}/footer-navbar.phtml"); } catch (\Zend\View\Exception\RuntimeException $e) { // no module-specific footer navbar found -- use default. echo $this->render('default-footer-navbar.phtml'); diff --git a/themes/vufind/jquerymobile/templates/header.phtml b/themes/vufind/jquerymobile/templates/header.phtml index 820b6f70d2c0c4658cd0a82357d3b04107e46a4a..f7d66d28f038c9f8dbd1594ef5ed4691572a65b0 100644 --- a/themes/vufind/jquerymobile/templates/header.phtml +++ b/themes/vufind/jquerymobile/templates/header.phtml @@ -20,10 +20,10 @@ <? // if a module has header-navbar.tpl, then use it try { - echo $this->render("{$this->controller}/header-navbar.phtml"); + echo $this->render("{$this->layout()->templateDir}/header-navbar.phtml"); } catch (\Zend\View\Exception\RuntimeException $e) { // if this is a record view, load the record header; otherwise, do nothing: - if (substr($this->controller, -6) == 'record') { + if (substr($this->layout()->templateDir, -6) == 'record') { echo $this->render('record/header-navbar.phtml'); } } diff --git a/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml b/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml index 5de39491f9e0bd49679bb376dd4b4928f4ca86c4..2343dc6de810f68e9b1a305a1fc43dcf1aa2e1cb 100644 --- a/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml +++ b/themes/vufind/jquerymobile/templates/myresearch/footer-navbar.phtml @@ -1,8 +1,8 @@ <? if ($this->layout()->account->isLoggedIn()): ?> <div data-role="navbar"> <ul> - <li><a rel="external" <?=$this->action=="mylist" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-favorites')?>"><?=$this->transEsc('Favorites')?></a></li> - <li><a rel="external" <?=$this->action=="history" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('search-history')?>?require_login"><?=$this->transEsc('History')?></a></li> + <li><a rel="external" <?=$this->layout()->templateName=="mylist" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-favorites')?>"><?=$this->transEsc('Favorites')?></a></li> + <li><a rel="external" <?=$this->layout()->templateName=="history" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('search-history')?>?require_login"><?=$this->transEsc('History')?></a></li> <li><a rel="external" href="<?=$this->url('myresearch-logout')?>"><?=$this->transEsc("Log Out")?></a></li> </ul> </div> diff --git a/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml b/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml index 63edad2a5e74e2461b6e3f819743e4939076f0e2..a82b6b422fabd8580bcfa0ec12f1e0d3c9e35d4d 100644 --- a/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml +++ b/themes/vufind/jquerymobile/templates/myresearch/header-navbar.phtml @@ -1,9 +1,9 @@ <? if (VF_Account_Manager::getInstance()->isLoggedIn()): ?> <div data-role="navbar"> <ul> - <li><a rel="external" <?=$this->action=="checkedout" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-checkedout')?>"><?=$this->transEsc('Checked Out')?></a></li> - <li><a rel="external" <?=$this->action=="holds" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-holds')?>"><?=$this->transEsc('Holds')?></a></li> - <li><a rel="external" <?=$this->action=="fines" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-fines')?>"><?=$this->transEsc('Fines')?></a></li> + <li><a rel="external" <?=$this->layout()->templateName=="checkedout" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-checkedout')?>"><?=$this->transEsc('Checked Out')?></a></li> + <li><a rel="external" <?=$this->layout()->templateName=="holds" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-holds')?>"><?=$this->transEsc('Holds')?></a></li> + <li><a rel="external" <?=$this->layout()->templateName=="fines" ? ' class="ui-btn-active"' : ''?> href="<?=$this->url('myresearch-fines')?>"><?=$this->transEsc('Fines')?></a></li> </ul> </div> <? endif; ?> \ No newline at end of file diff --git a/themes/vufind/jquerymobile/templates/search/footer-navbar.phtml b/themes/vufind/jquerymobile/templates/search/footer-navbar.phtml index 2501d59e6c0f576ce4509cbb1f685fcd2c113f4e..3a8366aa1bab4f48e1abb3360f0b2ace9f4b830e 100644 --- a/themes/vufind/jquerymobile/templates/search/footer-navbar.phtml +++ b/themes/vufind/jquerymobile/templates/search/footer-navbar.phtml @@ -1,4 +1,4 @@ -<? if ($this->action == 'history'): // use myresearch navbar for Search/history ?> +<? if ($this->layout()->templateName == 'history'): // use myresearch navbar for Search/history ?> <?=$this->render('myresearch/footer-navbar.phtml')?> <? else: // use default navbar for everything else ?> <?=$this->render('default-footer-navbar.phtml');?> diff --git a/themes/vufind/jquerymobile/templates/search/header-navbar.phtml b/themes/vufind/jquerymobile/templates/search/header-navbar.phtml index 4a181480510cf14e6de900f7e7d017a41c81ceff..58cf4d71d8ac6dd6811dce42ba637088228c1965 100644 --- a/themes/vufind/jquerymobile/templates/search/header-navbar.phtml +++ b/themes/vufind/jquerymobile/templates/search/header-navbar.phtml @@ -1,6 +1,6 @@ -<? if ($this->action == 'history'): // use myresearch navbar for Search/history ?> +<? if ($this->layout()->templateName == 'history'): // use myresearch navbar for Search/history ?> <?=$this->render('myresearch/header-navbar.phtml')?> -<? elseif (isset($this->results) && $this->results->getResultTotal() > 0): ?> +<? elseif (isset($this->results) && is_object($this->results) && $this->results->getResultTotal() > 0): ?> <div data-role="navbar"> <ul> <li><a href="#Search-narrow" data-rel="dialog" data-transition="flip"><?=$this->transEsc('Narrow Search')?></a></li>