diff --git a/module/VuFind/src/VuFind/Resolver/Driver/Redi.php b/module/VuFind/src/VuFind/Resolver/Driver/Redi.php index 54ada2c19da63e54865f36cb83521235642cd76f..93f624c634452f996a3d080bfc42413074483376 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 f218fa337076442609e232190f294e01fccb8376..53e9c42835fba0108af0acf31fe8e2597a100484 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 eb33b010ec6fc270342120c97febfe8168d5547e..2964ecf6d8d785ffe26a3ae0d1c7154fbe30786e 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 eb33b010ec6fc270342120c97febfe8168d5547e..2964ecf6d8d785ffe26a3ae0d1c7154fbe30786e 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; ?>