diff --git a/library/Class/Album.php b/library/Class/Album.php index cc2b798a65d8a48f1872aad3eac155316e03b444..28e9b011a0f1be945284bf6002dae1aa6a30b44f 100644 --- a/library/Class/Album.php +++ b/library/Class/Album.php @@ -1279,6 +1279,18 @@ class Class_Album extends Storm_Model_Abstract { } + public function addSubField($field, $subfield, $value) { + $notes = $this->getNotesAsArray(); + foreach($notes as $k => $v){ + if (is_array($v) && isset($v['field']) && $v['field'] == $field) { + $notes[$k]['data'][] = [$subfield, $value]; + return $this; + } + } + return $this->addZone($field, [[$subfield, $value]]); + } + + public function clearZones($zone) { return $this->setNotes($this->_clearZones($zone)); } @@ -1380,7 +1392,7 @@ class Class_Album extends Storm_Model_Abstract { /** * add author in unimarc container if not present with the same function */ - public function addAuthor($name, $function = null) { + public function addAuthor($name, $function = '') { if (!$name) return $this; @@ -1404,6 +1416,17 @@ class Class_Album extends Storm_Model_Abstract { return (!$found) ? $this->addZone(self::AUTHOR_FIELD, $datas) : $this; } + + + /** + * add editor in unimarc container if not present with the same function + */ + public function addEditor($name) { + if (!$name) + return $this; + + return $this->addSubField('210', 'c', $name); + } } ?> \ No newline at end of file diff --git a/library/ZendAfi/Form/Album.php b/library/ZendAfi/Form/Album.php index d9b773f596ea1b95578cf7ba2a97c42ac9726bc9..427766087cd1e3f7abee69128e3cfd75103d0e97 100644 --- a/library/ZendAfi/Form/Album.php +++ b/library/ZendAfi/Form/Album.php @@ -29,6 +29,7 @@ class ZendAfi_Form_Album extends ZendAfi_Form { ->populate($album->toArray()) ->addDurationFor($album) ->addAuthorsFor($album) + ->addEditorsFor($album) ->addRightsFor($album) ->addVignetteFor($album) ->addFileFor($album) @@ -48,8 +49,12 @@ class ZendAfi_Form_Album extends ZendAfi_Form { ['legend' => $form->_('Description')]) ->addDisplayGroup(['authors'], - 'authors_editors', + 'authors', ['legend' => $form->_('Auteurs')]) + + ->addDisplayGroup(['editors'], + 'editors', + ['legend' => $form->_('Editors')]) ->addDisplayGroup(['droits', 'droits_precision', @@ -67,6 +72,7 @@ class ZendAfi_Form_Album extends ZendAfi_Form { 'tags'], 'album_metadata', ['legend' => $form->_('Metadonnées')]) + ->addDisplayGroup(['bibliotheques', 'annexes', 'sections'], @@ -102,6 +108,21 @@ class ZendAfi_Form_Album extends ZendAfi_Form { } + public function addEditorsFor($album) { + $values = ['editor' => []]; + foreach($album->getNotesAsArray() as $note) { + if (!is_array($note) || '210' != $note['field']) + continue; + foreach($note['data'] as $data) { + if ($data[0] == 'c') + $values['editor'][] = $data[1]; + } + } + $this->editors->setValues($values); + return $this; + } + + public function init() { parent::init(); Class_ScriptLoader::getInstance() @@ -184,7 +205,13 @@ class ZendAfi_Form_Album extends ZendAfi_Form { ['name' => 'fonction', 'label' => 'Fonction', 'source' => Class_CodifAuteurFonction::getAllLabels()]], 'values' => ['author' => [], 'fonction' => []], - 'deleteMessage' => 'cet auteur']); + 'deleteMessage' => 'cet auteur']) + + ->addElement('multiInput', 'editors', + ['label' => 'Editors', + 'fields' => [['name' => 'editor', 'label' => 'Name'] ], + 'values' => ['editor' => []], + 'deleteMessage' => ' this editor']); } diff --git a/tests/application/modules/admin/controllers/AlbumControllerTest.php b/tests/application/modules/admin/controllers/AlbumControllerTest.php index 23657760c1bf7870b09a0f3da9106cb23d271342..979605a10c78f31bb6db9f011b384bbe37c5f9dd 100644 --- a/tests/application/modules/admin/controllers/AlbumControllerTest.php +++ b/tests/application/modules/admin/controllers/AlbumControllerTest.php @@ -633,10 +633,23 @@ class Admin_AlbumControllerAddAlbumToPatrimoineTest extends Admin_AlbumControlle } + /** @test */ public function permalienShouldNotBeVisible() { $this->assertNotXPathContentContains('//div', 'Permalien'); } + + + /** @test */ + public function divMultiInputsAuthorsShouldBeBeVisible() { + $this->assertXPath('//div[@id="multi_inputs_authors"]'); + } + + + /** @test */ + public function divMultiInputsEditorsShouldBeBeVisible() { + $this->assertXPath('//div[@id="multi_inputs_editors"]'); + } } @@ -849,6 +862,8 @@ class Admin_AlbumControllerEditAlbumMesBDTest extends Admin_AlbumControllerTestC ->setAnnexes('73;93') ->setSections('42') ->setDuration('00:05:00') + ->addAuthor('Pba') + ->addEditor('Glo') ->save(); $this->dispatch('/admin/album/edit_album/id/43', true); } @@ -1078,6 +1093,19 @@ class Admin_AlbumControllerEditAlbumMesBDTest extends Admin_AlbumControllerTestC public function durationShouldDisplayFiveMinutes() { $this->assertXPath('//input[@name="duration"][@value="00:05:00"]'); } + + + /** @test */ + public function pageShouldContainsScriptWithAuthorPba() { + $this->assertXPathContentContains('//div[@id="multi_inputs_authors"]/following-sibling::script','Pba',$this->_response->getBody()); + } + + + /** @test */ + public function pageShouldContainsScriptWithEditorGlo() { + $this->assertXPathContentContains('//div[@id="multi_inputs_editors"]/following-sibling::script','Glo',$this->_response->getBody()); + } + }