Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (2)
Showing
with 122 additions and 31 deletions
- correctif #155841 : Cosmogramme : Lors d'un import via un flux OAI en DublinCore, les identifiants multiples sont bien pris en comptes. Les ISSN et ISBN sont correctement detectés.
\ No newline at end of file
......@@ -618,23 +618,21 @@ class Class_Article extends Storm_Model_Abstract {
public function getFirstCarouselData() : array {
return $this->_getCarouselData('preg_match');
return $this->_getCarouselDataFrom('preg_match', $this->getSummary());
}
public function getAllCarouselsData() {
return $this->_getCarouselData('preg_match_all');
public function getAllCarouselsData() : array {
return $this->_getCarouselDataFrom('preg_match_all',
$this->getSummary() . $this->getFullContent());
}
protected function _getCarouselData(string $preg_function) : array {
protected function _getCarouselDataFrom(string $preg_function, string $content) : array {
$pattern = '|(?P<allimg><img[^>]+data-code="(?P<code>\w+)"[^>]+data-form="(?P<form>[^"]+)[^>]*>)|';
$matches = [];
$expression = '|(?P<allimg><img[^>]+data-code="(?P<code>\w+)"[^>]+data-form="(?P<form>[^"]+)[^>]*>)|';
return $preg_function($expression,
$this->getSummary() . $this->getFullContent(),
$matches) > 0
return $preg_function($pattern, $content, $matches) > 0
? $matches
: [];
}
......
......@@ -68,13 +68,31 @@ class Class_Cosmogramme_Integration_Record_DublinCore extends notice_unimarc {
->visitItems($this->_getItem())
->visitAuteur($authors);
return $this->_achieveUnimarc($unimarc_visitor);
$this->_acceptVisitorForIdentifier($this->_datas['id_oai'], $unimarc_visitor);
foreach($this->_datas['other_ids'] as $url)
$this->_acceptVisitorForIdentifier($url, $unimarc_visitor);
return $unimarc_visitor;
}
protected function _achieveUnimarc($unimarc_visitor) {
return $unimarc_visitor
->visitLabelledUrl($this->_('Consulter la ressource en ligne'), $this->_datas['id_oai']);
protected function _acceptVisitorForIdentifier(string $url,
Class_Indexation_PseudoNotice_UnimarcVisitor $unimarc_visitor)
{
$matches=[];
if (preg_match('/URN:ISBN[^\d]+((97(8|9))?\d{9}(\d|X))/',$url,$matches)) {
$unimarc_visitor->visitIsbn($matches[1]);
return $unimarc_visitor;
}
if (preg_match('/ISSN[^\d]+([0-9]{4}-[0-9]{4})/',$url,$matches)){
$unimarc_visitor->visitIssn($matches[1]);
return $unimarc_visitor;
}
if (Class_Url::isAnUrl($url))
$unimarc_visitor->visitLabelledUrl($this->_('Consulter la ressource en ligne'), $url);
return $unimarc_visitor;
}
......
......@@ -53,6 +53,16 @@ class Class_Indexation_PseudoNotice_UnimarcVisitor extends Class_Indexation_Pseu
}
public function visitIsbn(string $isbn) {
$this->addUnimarcField('010', ' ', 'a' . $isbn);
}
public function visitIssn(string $issn) {
$this->addUnimarcField('011', ' ', 'b' . $issn);
}
protected function _rendDate($date) {
if (!$date)
return false;
......
......@@ -45,6 +45,7 @@ class Class_WebService_OAI_DublinCoreParser extends Class_WebService_OAI_ParserA
public function newRecord($attributes) {
return $this->_record = ['record_id',
'id_oai' => '',
'other_ids' => [],
'titre' => '',
'date' => '',
'auteur' => [],
......@@ -62,7 +63,12 @@ class Class_WebService_OAI_DublinCoreParser extends Class_WebService_OAI_ParserA
public function enddc_identifier($data) {
$this->_record['id_oai'] = $data;
if(!$this->_record['id_oai']) {
$this->_record['id_oai'] = $data;
return;
}
$this->_record['other_ids'][] = $data;
}
......
......@@ -236,6 +236,11 @@ abstract class Intonation_Library_View_Wrapper_Abstract {
}
protected function _isWidgetContextLayoutCarousel() : bool {
return $this->getWidgetContext()->isLayoutCarousel();
}
/** @return string */
abstract public function getMainTitle();
......
......@@ -255,6 +255,9 @@ class Intonation_Library_View_Wrapper_Article extends Intonation_Library_View_Wr
public function getHtmlPicture() {
if ($this->_isWidgetContextLayoutCarousel())
return '';
$carousel_data = $this->_model->getFirstCarouselData();
if (empty($carousel_data))
......
......@@ -32,4 +32,9 @@ class Intonation_Library_Widget_Carousel_NullContext extends Class_Entity {
public function newCollectionWith($order) {
return new Storm_Collection;
}
public function isLayoutCarousel() : bool {
return false;
}
}
......@@ -396,6 +396,13 @@ abstract class Intonation_Library_Widget_Carousel_View extends Zendafi_View_Help
}
public function isLayoutCarousel() : bool {
return
array_key_exists($this->_settings->getLayout(),
(new Intonation_Library_Widget_Carousel_Definition)->getCarouselLayouts());
}
Abstract protected function _findElements();
abstract protected function _getWrapper();
abstract protected function _getLinkToAllTitle();
......
......@@ -187,6 +187,37 @@ class PhaseNoticeDublinCoreTest extends AbstractPhaseNoticeDublinCoreTestCase {
}
/** @test */
public function firstRecordISBNShouldBe9782955314357() {
$isbn = Class_Notice::find(1)->get_subfield('010','a');
$this->assertContains('9782955314357',$isbn);
}
/** @test */
public function firstRecordISSNShouldBe1234dash6789() {
$isbn = Class_Notice::find(1)->get_subfield('011','b');
$this->assertContains('1234-6789',$isbn);
}
/** @test */
public function firstRecord856UShouldNotContainsCeciNEstPasUneURL() {
$field856u = Class_Notice::find(1)->get_subfield('856','u');
$this->assertNotContains('Ceci n\'est pas une URL',
$field856u);
}
/** @test */
public function firstRecord856uShouldContainsTwoLinks() {
$field856u = Class_Notice::find(1)->get_subfield('856','u');
$this->assertEquals(['http://gallica.bnf.fr/ark:/12148/btv1b55006135m',
'https://biblio.nantes.archi.fr/cgi-bin/koha/opac-detail.pl?biblionumber=46829'],
$field856u);
}
/**
* @test
* @depends totalNumberOfRecordsFromOAIShouldBeNine
......
<?xml version="1.0" encoding="UTF-8" ?><OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2016-04-06T15:37:13Z</responseDate><request metadataPrefix="oai_dc" verb="ListRecords" set="gallica:typedoc:cartes:atlas">http://oai.bnf.fr/oai2/OAIHandler</request><ListRecords>
<record><header><identifier>oai:bnf.fr:gallica/ark:/12148/btv1b55006135m</identifier><datestamp>2012-09-21</datestamp><setSpec>gallica:typedoc:cartes:atlas</setSpec></header><metadata><oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:identifier>http://gallica.bnf.fr/ark:/12148/btv1b55006135m</dc:identifier>
<dc:identifier>URN:ISBN :9782955314357</dc:identifier>
<dc:identifier>URN:ISSN :1234-6789</dc:identifier>
<dc:identifier>Ceci n'est pas une URL</dc:identifier>
<dc:identifier>https://biblio.nantes.archi.fr/cgi-bin/koha/opac-detail.pl?biblionumber=46829</dc:identifier>
<dc:title>Citta, fortezze, isole, e porti principali dell'Europa, in planta, et in elevatione, descritte, e publicate ad uso dell'Accademia Cosmografica degli Argonauti / Dal Padre Maestro Coronelli, ...</dc:title>
<dc:creator>Coronelli, Vincenzo Maria (1650-1718). Cartographe</dc:creator>
<dc:date>1689</dc:date>
......
......@@ -42,7 +42,9 @@ abstract class TemplatesArticlesWidgetTestCase extends Admin_AbstractControllerT
'link_to_all' => 1,
'embeded_code'=> 1,
'IntonationShowFooter' => 1,
'layout' => 'multiple_carousel'])
'layout' => 'multiple_carousel',
'cycle' => 4,
'rendering' => 'card'])
->assertSave();
......@@ -62,7 +64,7 @@ abstract class TemplatesArticlesWidgetTestCase extends Admin_AbstractControllerT
['id' => 6,
'id_cat' => 34,
'titre' => 'Sprechen Sie Deutsch ?',
'contenu' => '<p>Ich ...</p>']);
'contenu' => '<p>Ich ...</p><img class="bokeh_kiosk" data-code="KIOSQUE" data-form="titre=&amp;style_liste=mur&amp;aleatoire=1&amp;tri=1&amp;boite=&amp;rss=1&amp;MybibappShowFooter=1&amp;link_to_all=1&amp;id_panier=123&amp;">']);
$this->fixture(Class_Article::class,
['id' => 7,
......@@ -174,8 +176,8 @@ class TemplatesArticlesEditWidgetTest extends TemplatesArticlesWidgetTestCase {
/** @test */
public function formCycleShouldBeEqualsToZero() {
$this->assertXPath('//input[@type="number"][@name="cycle"][@value="0"]');
public function formCycleShouldBeEqualsToFour() {
$this->assertXPath('//input[@type="number"][@name="cycle"][@value="4"]');
}
......@@ -541,9 +543,9 @@ class TemplatesArticlesMapTest extends TemplatesArticlesWithLocationTestCase {
parent::setUp();
ZendAfi_Auth::getInstance()->clearIdentity();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences')
->answers([Class_Article::find(7), Class_Article::find(8)]);
$this->onLoaderOfModel(Class_Article::class)
->whenCalled('getArticlesByPreferences')
->answers([Class_Article::find(7), Class_Article::find(8)]);
Class_Profil::find(1)
->setBoiteOfTypeInDivision(3,
......@@ -627,6 +629,12 @@ class TemplatesArticlesWithOrderCreationDateTest extends TemplatesArticlesWidget
$this->assertXPathContentContains('//a[contains(@href, "admin/cms/add")]',
'Ajouter un nouvel article');
}
/** @test */
public function recordsWidgetShouldNotBeInNewsWidgetCarousel() {
$this->assertNotXPath('//div[contains(@class, "boite news")]//div[contains(@class, "boite kiosque")]');
}
}
......@@ -941,24 +949,22 @@ abstract class TemplatesArticlesWithWidgetRenderWallTestCase extends AbstractCon
$this->_logAdmin();
$this->fixture(Class_Article::class,
[ 'id' => 55,
['id' => 55,
'titre' => 'Mes dvds',
'description' => 'Un article avec un kiosque dans du data-code',
'contenu' => '<img class="bokeh_kiosk" data-code="KIOSQUE" data-form="titre=&amp;style_liste=mur&amp;aleatoire=1&amp;tri=1&amp;boite=&amp;rss=1&amp;MybibappShowFooter=1&amp;link_to_all=1&amp;id_panier=123&amp;">
<img class="bokeh_kiosk" data-code="KIOSQUE" data-form="titre=&amp;style_liste=mur&amp;aleatoire=1&amp;tri=1&amp;boite=&amp;rss=1&amp;MybibappShowFooter=1&amp;link_to_all=1&amp;id_panier=124&amp;">']);
'contenu' => '<img class="bokeh_kiosk" data-code="KIOSQUE" data-form="titre=&amp;style_liste=mur&amp;aleatoire=1&amp;tri=1&amp;boite=&amp;rss=1&amp;MybibappShowFooter=1&amp;link_to_all=1&amp;id_panier=123&amp;"><img class="bokeh_kiosk" data-code="KIOSQUE" data-form="titre=&amp;style_liste=mur&amp;aleatoire=1&amp;tri=1&amp;boite=&amp;rss=1&amp;MybibappShowFooter=1&amp;link_to_all=1&amp;id_panier=124&amp;">']);
$this->_dispatch();
$this->_dispatch();
}
protected function _dispatch() {
$this->dispatch('/cms/articleview/id/55');
}
protected function _logAdmin() {
}
protected function _logAdmin() { }
}
......@@ -1063,9 +1069,6 @@ class TemplatesArticlesWithWidgetRenderWallNotLoggedTest
class TemplatesArticlesRenderAllFromArticleTest
extends TemplatesArticlesWithWidgetRenderWallTestCase {
protected $_storm_default_to_volatile = true;
protected function _dispatch() {}
......