From c33d3c72d760db4e92a6e329c04111ce164f5cfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Lahmann?= <lahmann@ub.uni-leipzig.de> Date: Mon, 8 Jun 2015 14:22:12 -0400 Subject: [PATCH] Added passthru of access level from ResolverDriver to template for link-styling --- .../src/VuFind/Resolver/Driver/Redi.php | 19 ++++++++++++++++++- .../VuFindTest/Resolver/Driver/RediTest.php | 2 ++ .../templates/ajax/resolverLinks.phtml | 6 +++--- .../templates/ajax/resolverLinks.phtml | 6 +++--- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Redi.php b/module/VuFind/src/VuFind/Resolver/Driver/Redi.php index 54ada2c19da..93f624c6344 100644 --- a/module/VuFind/src/VuFind/Resolver/Driver/Redi.php +++ b/module/VuFind/src/VuFind/Resolver/Driver/Redi.php @@ -206,9 +206,25 @@ class Redi implements DriverInterface if ($ezbResultsNodesText->length == $ezbResultsNodesURL->length) { for ($i = 0; $i<$ezbResultsNodesText->length; $i++) { + $accessClass = 'unknown'; + $accessClassExpressions = [ + "denied" => "//div[@class='t_ezb_result'][" + . ($i+1) . "]/p/span[@class='t_ezb_red']", + "limited" => "//div[@class='t_ezb_result'][" + . ($i+1) . "]/p/span[@class='t_ezb_yellow']", + "open" => "//div[@class='t_ezb_result'][" + . ($i+1) . "]/p/span[@class='t_ezb_green']", + ]; // $i+1 because XPath-element-counting starts with 1 + foreach ($accessClassExpressions as $key => $value) { + if ($xpath->evaluate("count({$value})") == 1) { + $accessClass = $key; + } + } + $itemInfo = ''; - $expression = "//div[@class='t_ezb_result']/p[{$i}]/sup"; + $expression = "//div[@class='t_ezb_result'][" + . ($i+1) . "]/p/sup"; if ($xpath->evaluate("count({$expression})") == 1) { $itemInfo = $this->parseRediInfo( $xml, $xpath->query($expression)->item(0)->textContent @@ -219,6 +235,7 @@ class Redi implements DriverInterface 'title' => $ezbResultsNodesText->item($i)->textContent, 'href' => $ezbResultsNodesURL->item($i) ->attributes->getNamedItem("href")->textContent, + 'access' => $accessClass, 'coverage' => $itemInfo, 'service_type' => 'getFullTxt', ]; diff --git a/module/VuFind/tests/unit-tests/src/VuFindTest/Resolver/Driver/RediTest.php b/module/VuFind/tests/unit-tests/src/VuFindTest/Resolver/Driver/RediTest.php index f218fa33707..53e9c42835f 100644 --- a/module/VuFind/tests/unit-tests/src/VuFindTest/Resolver/Driver/RediTest.php +++ b/module/VuFind/tests/unit-tests/src/VuFindTest/Resolver/Driver/RediTest.php @@ -86,12 +86,14 @@ class RediTest extends \VuFindTest\Unit\TestCase 1 => [ 'title' => "Zum Volltext (via SpringerLink)", 'href' => "http://www-fr.redi-bw.de/links/?rl_site=ubl&rl_action=link&rl_link_target=ezb&rl_link_name=0.article&rl_citation=9443914d0e261c0c1f6a3fd8151213c1d4cec05f5d3053097da6fa5597bbb9d7", + 'access' => 'limited', 'coverage' => "", 'service_type' => "getFullTxt", ], 2 => [ 'title' => "Zur Zeitschriftenhomepage* (via www.ncbi.nlm.nih.gov)", 'href' => "http://www-fr.redi-bw.de/links/?rl_site=ubl&rl_action=link&rl_link_target=ezb&rl_link_name=1.article&rl_citation=9443914d0e261c0c1f6a3fd8151213c1d4cec05f5d3053097da6fa5597bbb9d7", + 'access' => 'open', 'coverage' => "*Es konnte nicht zuverlässig festgestellt werden, ob der gesuchte Aufsatz in den Zeitraum fällt, für den bei diesem Anbieter der Volltext verfügbar ist.", 'service_type' => "getFullTxt", ], diff --git a/themes/blueprint/templates/ajax/resolverLinks.phtml b/themes/blueprint/templates/ajax/resolverLinks.phtml index eb33b010ec6..2964ecf6d8d 100644 --- a/themes/blueprint/templates/ajax/resolverLinks.phtml +++ b/themes/blueprint/templates/ajax/resolverLinks.phtml @@ -6,7 +6,7 @@ <? foreach ($this->electronic as $link): ?> <li> <? if (!empty($link['href'])): ?> - <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"<?=!empty($link['access'])?' class=access-"'.$link['access'].'"':''?>><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? else: ?> <?=isset($link['title'])?$this->escapeHtml($link['title']):''?> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? endif; ?> @@ -22,7 +22,7 @@ <? foreach ($this->print as $link): ?> <li> <? if (!empty($link['href'])): ?> - <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"<?=!empty($link['access'])?' class=access-"'.$link['access'].'"':''?>><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? else: ?> <?=isset($link['title'])?$this->escapeHtml($link['title']):''?> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? endif; ?> @@ -38,7 +38,7 @@ <? foreach ($this->services as $link): ?> <? if (!empty($link['href'])): ?> <li> - <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> + <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"<?=!empty($link['access'])?' class=access-"'.$link['access'].'"':''?>><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> </li> <? endif; ?> <? endforeach; ?> diff --git a/themes/bootstrap3/templates/ajax/resolverLinks.phtml b/themes/bootstrap3/templates/ajax/resolverLinks.phtml index eb33b010ec6..2964ecf6d8d 100644 --- a/themes/bootstrap3/templates/ajax/resolverLinks.phtml +++ b/themes/bootstrap3/templates/ajax/resolverLinks.phtml @@ -6,7 +6,7 @@ <? foreach ($this->electronic as $link): ?> <li> <? if (!empty($link['href'])): ?> - <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"<?=!empty($link['access'])?' class=access-"'.$link['access'].'"':''?>><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? else: ?> <?=isset($link['title'])?$this->escapeHtml($link['title']):''?> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? endif; ?> @@ -22,7 +22,7 @@ <? foreach ($this->print as $link): ?> <li> <? if (!empty($link['href'])): ?> - <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"<?=!empty($link['access'])?' class=access-"'.$link['access'].'"':''?>><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? else: ?> <?=isset($link['title'])?$this->escapeHtml($link['title']):''?> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> <? endif; ?> @@ -38,7 +38,7 @@ <? foreach ($this->services as $link): ?> <? if (!empty($link['href'])): ?> <li> - <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> + <a href="<?=$this->escapeHtmlAttr($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtmlAttr($link['service_type']):''?>"<?=!empty($link['access'])?' class=access-"'.$link['access'].'"':''?>><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> </li> <? endif; ?> <? endforeach; ?> -- GitLab