diff --git a/VERSIONS_HOTLINE/155241 b/VERSIONS_HOTLINE/155241 new file mode 100644 index 0000000000000000000000000000000000000000..64b9752aebe86f9e2a22ca80c0c9d022cffa9996 --- /dev/null +++ b/VERSIONS_HOTLINE/155241 @@ -0,0 +1 @@ + - correctif #155241 : Administration : La duplication d'article prend maintenant en charge les champs personnalisés. \ No newline at end of file diff --git a/library/ZendAfi/Controller/Plugin/Manager/Article.php b/library/ZendAfi/Controller/Plugin/Manager/Article.php index ebce05da8c2cbe73d688ff766b338afc1f22f518..61653508d93f6658dc6b824910f6921824d20d2a 100644 --- a/library/ZendAfi/Controller/Plugin/Manager/Article.php +++ b/library/ZendAfi/Controller/Plugin/Manager/Article.php @@ -48,10 +48,8 @@ class ZendAfi_Controller_Plugin_Manager_Article extends ZendAfi_Controller_Plugi return $this->_redirectToIndex(); } - if($category = $model->getCategorie()) - $this->_setParam('id_cat', $category->getId()); + parent::editAction(); - parent::addAction(); if ($this->_response->isRedirect()) return; @@ -60,10 +58,10 @@ class ZendAfi_Controller_Plugin_Manager_Article extends ZendAfi_Controller_Plugi ->setAction($this->_view->url(['module' => 'admin', 'controller' => 'cms', 'action' => 'add', - 'id_cat' => $this->_getParam('id_cat')], + 'id_cat' => $model->getIdCat()], null, true)); - $this->_view_renderer->setScriptAction('add'); + $this->_view_renderer->setScriptAction('edit'); } diff --git a/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php b/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php index 25bb72addc3d24dd905f36c9770561607d5d5733..e955b9d40f11e5b01ad735197c4007a99d3b7385 100644 --- a/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php +++ b/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php @@ -300,4 +300,51 @@ class CmsControllerCustomFieldsNotIndexableMetaPostEditActionTest public function recordShouldNotHaveHCFCFFacet() { $this->assertEquals('T8', $this->_record->getFacettes()); } +} + + + + +class CmsControllerCustomFieldsPostAddActionTest + extends CmsControllerCustomFieldsTestCase { + + + public function setUp() { + parent::setUp(); + + $admin = + $this->fixture(Class_Users::class, + ['id' => 787, + 'login' => 'ADMIN', + 'password' => 'TÉLÉPHONE', + 'role_level' => 7]); + + ZendAfi_Auth::getInstance()->logUser($admin); + + $this->fixture(Class_ArticleCategorie::class, + ['id' => 12, + 'libelle' => 'accueil']); + + $this->postDispatch('admin/cms/add/id_cat/12', + ['titre' => 'New Article', + 'contenu' => 'Welcome to the world', + 'field_5' => 'Hardcore gamers', + 'field_89' => ['Débutant'], + 'debut' => '', + 'fin' => '', + 'events_debut' => '', + 'events_fin' => '']); + } + + + /** @test */ + public function shouldHaveCreatedCustomValueHardcoreGamers() { + $this->assertNotNull(Class_CustomField_Value::findFirstBy(['value' => 'Hardcore gamers'])); + } + + + /** @test */ + public function shouldHaveCreatedCustomValueDebutant() { + $this->assertNotNull(Class_CustomField_Value::findFirstBy(['value' => 'Débutant'])); + } } \ No newline at end of file diff --git a/tests/application/modules/admin/controllers/CmsControllerTest.php b/tests/application/modules/admin/controllers/CmsControllerTest.php index eda6f8f2a3ee2c174c42ac9fa36f29cf46d39a72..1518c01c1b6ee76756321bed8685052edb305a82 100644 --- a/tests/application/modules/admin/controllers/CmsControllerTest.php +++ b/tests/application/modules/admin/controllers/CmsControllerTest.php @@ -494,6 +494,7 @@ class CmsControllerArticleWithoutCategoryAddActionTest extends CmsControllerWith class CmsControllerArticleDuplicateActionTest extends CmsControllerWithPermissionTestCase { + protected $_admin_bib, $_concert; @@ -501,28 +502,45 @@ class CmsControllerArticleDuplicateActionTest extends CmsControllerWithPermissio public function setUp() { parent::setUp(); - $this->_admin_bib = $this->fixture('Class_Users', - ['id' => 10, - 'login' => 'AdminBibConnected', - 'bib' => $this->fixture('Class_Bib', - ['id' => 2, - 'id_zone' => 4, - 'libelle' => 'Annecy']), - 'role' => 'admin_bib', - 'mail' => 'admin@afi-sa.fr', - 'password' => 'toto', - 'role_level' => ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB]); + $this->_admin_bib = + $this->fixture(Class_Users::class, + ['id' => 10, + 'login' => 'AdminBibConnected', + 'bib' => $this->fixture('Class_Bib', + ['id' => 2, + 'id_zone' => 4, + 'libelle' => 'Annecy']), + 'role' => 'admin_bib', + 'mail' => 'admin@afi-sa.fr', + 'password' => 'toto', + 'role_level' => ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB]); ZendAfi_Auth::getInstance()->logUser($this->_admin_bib); + $this->setupArticle(); - $this->dispatch('/admin/cms/newsduplicate/id/8080', true); + + $this->dispatch('/admin/cms/newsduplicate/id/8080'); } public function setupArticle() { - $this->fixture('Class_Article', + $meta = + $this->fixture(Class_CustomField_Meta::class, + ['id' => 1, + 'label' => 'Public', + 'field_type' => Class_CustomField_Meta::MULTI_CHECKBOX, + 'options_list' => 'Ado;Adulte;Enfant', + 'indexable' => 1]); + + $this->fixture(Class_CustomField::class, + ['id' => 1, + 'priority' => 1, + 'meta' => $meta, + 'model' => 'Article']); + + $this->fixture(Class_Article::class, ['id' => 8080, 'titre' => 'Concert', - 'categorie' => $this->fixture('Class_ArticleCategorie', + 'categorie' => $this->fixture(Class_ArticleCategorie::class, ['id' => 23, 'libelle' => 'A la Une']), 'auteur' => $this->_admin_bib, @@ -536,6 +554,12 @@ class CmsControllerArticleDuplicateActionTest extends CmsControllerWithPermissio 'langue' => 'fr', 'tags' => 'concert;jazz', 'avis' => true]); + + $this->fixture(Class_CustomField_Value::class, + ['id' => 1, + 'model_id' => 8080, + 'custom_field_id' => 1, + 'value' => 'Ado']); } @@ -561,6 +585,30 @@ class CmsControllerArticleDuplicateActionTest extends CmsControllerWithPermissio public function titreShouldBeDupliquerLArticleConcert() { $this->assertXPathContentContains('//h1', 'Dupliquer l\'article : Concert'); } + + + /** @test */ + public function fieldsetCustomFieldsShouldBePresent() { + $this->assertXPathContentContains('//form//fieldset//legend', 'Champs personnalisés'); + } + + + /** @test */ + public function publicAdulteShouldBePresent() { + $this->assertXPath('//form//input[@name="field_1[]"][@value="Adulte"]'); + } + + + /** @test */ + public function publicEnfantShouldBePresent() { + $this->assertXPath('//form//input[@name="field_1[]"][@value="Enfant"]'); + } + + + /** @test */ + public function publicAdoShouldBeChecked() { + $this->assertXPath('//form//input[@type="checkbox"][@checked][@name="field_1[]"][@value="Ado"]'); + } }