diff --git a/cosmogramme/php/_init.php b/cosmogramme/php/_init.php index ab235f99dd25229a1b91a67126caec4ab244ec7c..4edb762d08bafc03f21449f10d2114321b8b3760 100644 --- a/cosmogramme/php/_init.php +++ b/cosmogramme/php/_init.php @@ -2,7 +2,7 @@ // Constantes error_reporting(E_ERROR | E_PARSE); -define("PATCH_LEVEL","234"); +define("PATCH_LEVEL","235"); define("APPLI","cosmogramme"); define("COSMOPATH", "/var/www/html/vhosts/opac2/www/htdocs"); diff --git a/cosmogramme/sql/patch/patch_235.php b/cosmogramme/sql/patch/patch_235.php new file mode 100644 index 0000000000000000000000000000000000000000..13abd10da5f15eb86c8f3c767a6fde40678be851 --- /dev/null +++ b/cosmogramme/sql/patch/patch_235.php @@ -0,0 +1,4 @@ +<?php + +$adapter = Zend_Db_Table_Abstract::getDefaultAdapter(); +$adapter->query("ALTER TABLE album ADD status tinyint(1) unsigned DEFAULT NULL"); diff --git a/library/Class/Album.php b/library/Class/Album.php index 9517325b3e960f109e787cfce61120a0503ced79..31e6db70f5282e6fb2696e4a0c924ed1aae5293f 100644 --- a/library/Class/Album.php +++ b/library/Class/Album.php @@ -86,6 +86,9 @@ class Class_Album extends Storm_Model_Abstract { const DISTRIBUTOR_FIELD = '306$a'; const THUMB_PREFIX = 'thumb_'; + const STATUS_DRAFT = 1; + const STATUS_VALIDATED = 3; + protected static $DEFAULT_THUMBNAIL_VALUES; @@ -130,6 +133,7 @@ class Class_Album extends Storm_Model_Abstract { 'bibliotheques' => '', 'annexes' => '', 'sections' => '', + 'status' => self::STATUS_DRAFT, 'pcdm4' => '']; @@ -141,6 +145,11 @@ class Class_Album extends Storm_Model_Abstract { protected static $_fileSystem; protected $path_flash; + + protected static $_knownStatus = + [self::STATUS_DRAFT => 'Brouillon', + self::STATUS_VALIDATED => 'Validé']; + public $arbre_array; @@ -196,6 +205,14 @@ class Class_Album extends Storm_Model_Abstract { } + /** + * @return array + */ + public static function getKnownStatus() { + return self::$_knownStatus; + } + + /** * @return bool */ @@ -1238,11 +1255,6 @@ class Class_Album extends Storm_Model_Abstract { } - public function getStatus() { - return 'none'; - } - - public function formatedCount() { return sprintf('%03d', $this->getRessourcesCount()); } diff --git a/library/ZendAfi/Form/Album.php b/library/ZendAfi/Form/Album.php index 30c74e20f02ca2fd472fcd7b7f74f4a2a13dc561..55ea15b186c946b41df28020d83ba67e36dbd38c 100644 --- a/library/ZendAfi/Form/Album.php +++ b/library/ZendAfi/Form/Album.php @@ -28,6 +28,7 @@ class ZendAfi_Form_Album extends ZendAfi_Form { 'cat_id', 'type_doc_id', 'visible', + 'status', 'frbr_multi']; public static function newWith($album) { @@ -48,6 +49,7 @@ class ZendAfi_Form_Album extends ZendAfi_Form { 'cat_id', 'type_doc_id', 'visible', + 'status', 'fichier', 'pdf', 'authors', @@ -157,6 +159,10 @@ class ZendAfi_Form_Album extends ZendAfi_Form { ->addElement('checkbox', 'visible', ['label' => $this->_("Indexer l'album dans le catalogue ?")]) + ->addElement('radio', 'status', ['label' => $this->_('Statut'), + 'separator' => ' ', + 'value' => 1, + 'multiOptions' => Class_Album::getKnownStatus()]) ->addElement('ckeditor', 'description') diff --git a/tests/application/modules/admin/controllers/AlbumControllerTest.php b/tests/application/modules/admin/controllers/AlbumControllerTest.php index 30f72b31257f176adc7e26fc512c7e340108f863..352c01e0262b707e837fb7619a4e80f8da0e2ae8 100644 --- a/tests/application/modules/admin/controllers/AlbumControllerTest.php +++ b/tests/application/modules/admin/controllers/AlbumControllerTest.php @@ -620,6 +620,18 @@ class Admin_AlbumControllerAddAlbumToPatrimoineTest extends Admin_AlbumControlle } + /** @test */ + public function formShouldContainDraftStatus() { + $this->assertXpath('//form[@id="album"]//input[@name="status"][@value="1"]'); + } + + + /** @test */ + public function formShouldContainValidatedStatus() { + $this->assertXpath('//form[@id="album"]//input[@name="status"][@value="3"]'); + } + + /** @test */ public function formShouldHaveAFileFieldForFichier() { $this->assertXPath("//form[@id='album']//input[@type='file'][@name='fichier']"); @@ -884,6 +896,7 @@ class Admin_AlbumControllerPostAlbumRenaissanceToPatrimoineTest 'nature_doc' => '2;3', 'type_doc_id' => '102', 'visible' => '1', + 'status' => Class_Album::STATUS_VALIDATED, 'genre' => '32;23', 'dewey' => '0277;0285', 'pcdm4' => '0683;0684', @@ -968,6 +981,12 @@ class Admin_AlbumControllerPostAlbumRenaissanceToPatrimoineTest } + /** @test */ + public function newAlbumShouldBeValidated() { + $this->assertEquals(3, (int) $this->new_album->getStatus()); + } + + /** @test */ public function pseudoNoticeShouldBeIndexed() { $this->assertNotNull($this->new_notice); @@ -2859,7 +2878,19 @@ class Admin_AlbumControllerAddAlbumToAjaxTest extends Admin_AlbumControllerTestC /** @test */ public function indexElementBoxShouldBeUnchecked() { - $this->_xpath->assertXPath($this->_json->content, '//input[@type="checkbox"][@name="visible"][@value="0"]'); + $this->_xpath->assertXPath($this->_json->content, '//input[@type="checkbox"][@name="visible"][not(@checked)]'); + } + + + /** @test */ + public function formShouldContainDraftStatus() { + $this->_xpath->assertXpath($this->_json->content, '//form[@id="album"]//input[@name="status"][@value="1"]'); + } + + + /** @test */ + public function formShouldContainValidatedStatus() { + $this->_xpath->assertXpath($this->_json->content, '//form[@id="album"]//input[@name="status"][@value="3"]'); }