diff --git a/application/modules/admin/controllers/ProfilController.php b/application/modules/admin/controllers/ProfilController.php index 5d1156864182577383078d47cbce05c6c8af4ece..cdcd23d08276c4f253a11ee32971e033233560c0 100644 --- a/application/modules/admin/controllers/ProfilController.php +++ b/application/modules/admin/controllers/ProfilController.php @@ -285,6 +285,13 @@ class Admin_ProfilController extends Zend_Controller_Action { } + public function deepcopyAction() { + $copy = $this->_profil->deepCopy(); + $copy->save(); + $this->_redirect('admin/profil/edit/id_profil/'.$copy->getId()); + } + + public function accueilAction() { // Instanciations et initialisations $this->view->titre = "Configuration de la page: ".$this->_profil->getLibelle(); diff --git a/application/modules/admin/views/scripts/profil/_profil_row.phtml b/application/modules/admin/views/scripts/profil/_profil_row.phtml index dbfa79f27c89e459e4bb6aaf910b261084ec6420..a53551c56efeb0ffc3bf2cc45602c7149603f2af 100644 --- a/application/modules/admin/views/scripts/profil/_profil_row.phtml +++ b/application/modules/admin/views/scripts/profil/_profil_row.phtml @@ -37,10 +37,11 @@ if ($this->profil->isTelephone()) { <div class="actions"> <?php - $actions = array(array('action' => 'edit', 'icon' => 'ico/edit.gif', 'help' => 'Modifier'), - array('action' => 'menusindex', 'icon' => 'picto/menus.png', 'help' => 'Configuration des menus'), - array('action' => 'proprietes', 'icon' => 'picto/module.gif', 'help' => 'Propriétés des modules'), - array('action' => 'newpage', 'icon' => 'ico/page_add.png', 'help' => 'Ajouter une page')); + $actions = [['action' => 'edit', 'icon' => 'ico/edit.gif', 'help' => 'Modifier'], + ['action' => 'menusindex', 'icon' => 'picto/menus.png', 'help' => 'Configuration des menus'], + ['action' => 'proprietes', 'icon' => 'picto/module.gif', 'help' => 'Propriétés des modules'], + ['action' => 'deep_copy', 'icon' => 'ico/page_copy.png', 'help' => 'Dupliquer le profil'], + ['action' => 'newpage', 'icon' => 'ico/page_add.png', 'help' => 'Ajouter une page']]; foreach ($actions as $action) echo $this->tagAnchor($this->url(array('action' => $action['action'], diff --git a/tests/application/modules/admin/controllers/ProfilControllerTest.php b/tests/application/modules/admin/controllers/ProfilControllerTest.php index 62a6d9de31d9d3d574e98223197a051d125e0d76..39091259b6c2115f0de10f66544f0b857d078d57 100644 --- a/tests/application/modules/admin/controllers/ProfilControllerTest.php +++ b/tests/application/modules/admin/controllers/ProfilControllerTest.php @@ -782,6 +782,7 @@ abstract class Admin_ProfilControllerProfilPanelTest extends Admin_ProfilControl /** @test */ public function profilsPanelShouldIncludeProfilJeunesse() { $this->assertXPathContentContains("//div[contains(@class, 'profils')]//div", "Jeunesse"); + $this->assertXPath("//div[contains(@class, 'profils')]//div[preceding-sibling::div[contains(text(), 'Jeunesse')]]//a[contains(@href, 'profil/deep_copy/id_profil/5')]"); } @@ -1032,10 +1033,31 @@ class Admin_ProfilControllerCopyProfilJeunesseTest extends Admin_ProfilControlle public function libelleShouldBeAccueilCopie() { $this->assertEquals('Accueil - copie', $this->new_page->getLibelle()); } +} + + + + +class Admin_ProfilControllerDeepCopyProfilJeunesseTest extends Admin_ProfilControllerProfilJeunesseWithPagesTestCase { + public function setUp() { + parent::setUp(); - /** @nontest */ - public function libelleShouldBeProfilJeunesse() { - $this->assertEquals('Profil Jeunesse', $this->new_page->getLibelle()); + $id = 500; + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil') + ->whenCalled('findAllBy') + ->answers([]) + ->whenCalled('save') + ->willDo(function ($model) use (&$id) { + $model->setId($id++); + } ); + + $this->dispatch('/admin/profil/deep_copy/id_profil/5', true); + } + + + /** @test */ + public function assertRedirectToEditProfilId100() { + $this->assertRedirect('admin/profil/edit/id_profil/500'); } }