diff --git a/application/modules/admin/controllers/CmsController.php b/application/modules/admin/controllers/CmsController.php index ab181289fd91178280ed4b5711e32f6f7dbf908c..9adcd8650d0cbfe6fda5f87d6771913da394265f 100644 --- a/application/modules/admin/controllers/CmsController.php +++ b/application/modules/admin/controllers/CmsController.php @@ -40,35 +40,40 @@ class Admin_CmsController extends ZendAfi_Controller_Action { $identity = Class_Users::getLoader()->getIdentity(); if (0 != $this->_bib->getId()) { - $bibs = array($this->_bib); + $bibs = [$this->_bib]; } else { - $bibs = Class_Bib::getLoader()->findAllBy(array('order' => 'libelle')); + $bibs = Class_Bib::getLoader()->findAllBy(['order' => 'libelle']); array_unshift($bibs, $this->_bib); } - $categories = array(); + $add_link_label = $this->view->tagImg(URL_ADMIN_IMG . 'ico/add_cat.gif') . $this->view->_(' Ajouter une catégorie'); - $add_link_options = array('module' => 'admin', - 'controller' => 'cms', - 'action' => 'catadd'); - - foreach ($bibs as $bib) { - $categories[] = array('bib'=> $bib, - 'containers' => $bib->getArticleCategories(), - 'add_link' => $this->view->tagAnchor($this->view->url(array_merge($add_link_options, array('id_bib' => $bib->getId()))), - $add_link_label)); - } + $add_link_options = ['module' => 'admin', + 'controller' => 'cms', + 'action' => 'catadd']; + + $categories = array_map( + function($bib) use ($add_link_options, $add_link_label){ + return ['bib'=> $bib, + 'containers' => $bib->getArticleCategories(), + 'add_link' => $this->view->tagAnchor($this->view->url( + array_merge($add_link_options, + ['id_bib' => $bib->getId()])), + $add_link_label)]; + }, + + $bibs); $this->view->categories = $categories; $this->view->categorieActions = $this->_getTreeViewContainerActions(); $this->view->articleActions = $this->_getTreeViewItemActions(); - $this->view->titre = 'Mise à jour des articles'; + $this->view->titre = $this->view->_('Mise à jour des articles'); $this->view->headScript()->appendScript('var treeViewSelectedCategory = ' . (int)$this->_getParam('id_cat') . ';'); @@ -156,14 +161,12 @@ class Admin_CmsController extends ZendAfi_Controller_Action { public function newsduplicateAction() { - $category = $this->getCategoryAndSetComboCat(); - $duplicated_article = Class_Article::find($this->_getParam('id_article')); - - $new_article = $duplicated_article->copy(); + $new_article = Class_Article::find($this->_getParam('id'))->copy(); $this->view->article = $new_article; $this->view->titre = $this->_('Dupliquer l\'article: ').$new_article->getTitre(); $this->view->combo_lieu_options = $this->comboLieuOptions(); + $this->view->combo_cat = $this->view->comboCategories($new_article->getCategorie()); $this->view->form_action = $this->view->url(['module' => 'admin', 'controller' => 'cms', 'action' => 'newsadd', @@ -343,63 +346,55 @@ class Admin_CmsController extends ZendAfi_Controller_Action { * @return array */ private function _getTreeViewContainerActions() { - return array( - array( - 'url' => $this->_getUrlForActionAndIdName('catedit'), - 'icon' => 'ico/edit.gif', - 'label' => 'Modifier' - ), - array( - 'url' => $this->_getUrlForActionAndIdName('catdel'), - 'icon' => 'ico/del.gif', - 'label' => 'Supprimer', - 'condition' => 'hasNoChild', - 'anchorOptions' => array( - 'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cette catégorie ?')" - ) - ), - array( - 'url' => $this->_getUrlForActionAndIdName('newsadd', 'id_cat'), - 'icon' => 'ico/add_news.gif', - 'label' => 'Ajouter un article', - ), - array( - 'url' => $this->_getUrlForActionAndIdName('catadd'), - 'icon' => 'ico/add_cat.gif', - 'label' => 'Ajouter une sous-catégorie' - ), - ); + return [ + ['url' => $this->_getUrlForActionAndIdName('catedit'), + 'icon' => 'ico/edit.gif', + 'label' => 'Modifier'], + + ['url' => $this->_getUrlForActionAndIdName('catdel'), + 'icon' => 'ico/del.gif', + 'label' => 'Supprimer', + 'condition' => 'hasNoChild', + 'anchorOptions' => [ + 'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cette catégorie ?')"]], + + ['url' => $this->_getUrlForActionAndIdName('newsadd', 'id_cat'), + 'icon' => 'ico/add_news.gif', + 'label' => 'Ajouter un article'], + + ['url' => $this->_getUrlForActionAndIdName('catadd'), + 'icon' => 'ico/add_cat.gif', + 'label' => 'Ajouter une sous-catégorie'], + ]; } private function _getTreeViewItemActions() { - return array( - array( - 'url' => $this->_getUrlForActionAndIdName('makeinvisible'), - 'icon' => 'ico/show.gif', - 'label' => 'Rendre cet article invisible', - 'condition' => 'isVisible' - ), - array( - 'url' => $this->_getUrlForActionAndIdName('makevisible'), - 'icon' => 'ico/hide.gif', - 'label' => 'Rendre cet article visible', - 'condition' => 'isNotVisible' - ), - array( - 'url' => $this->_getUrlForActionAndIdName('newsedit'), - 'icon' => 'ico/edit.gif', - 'label' => 'Modifier', - ), - array( - 'url' => $this->_getUrlForActionAndIdName('delete'), - 'icon' => 'ico/del.gif', - 'label' => 'Supprimer', - 'anchorOptions' => array( - 'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cet article ?')" - ), - ) - ); + return [ + ['url' => $this->_getUrlForActionAndIdName('makeinvisible'), + 'icon' => 'ico/show.gif', + 'label' => 'Rendre cet article invisible', + 'condition' => 'isVisible'], + + ['url' => $this->_getUrlForActionAndIdName('makevisible'), + 'icon' => 'ico/hide.gif', + 'label' => 'Rendre cet article visible', + 'condition' => 'isNotVisible'], + + ['url' => $this->_getUrlForActionAndIdName('newsedit'), + 'icon' => 'ico/edit.gif', + 'label' => 'Modifier'], + + ['url' => $this->_getUrlForActionAndIdName('newsduplicate'), + 'icon' => 'ico/copier.gif', + 'label' => 'Dupliquer'], + + ['url' => $this->_getUrlForActionAndIdName('delete'), + 'icon' => 'ico/del.gif', + 'label' => 'Supprimer', + 'anchorOptions' => [ + 'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cet article ?')"]] + ]; } diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php index 4133690ea148a3d08eb049651009a2d3eb48a9ae..d6b4b80d976ee5a330d6a314d0f449742a74a3eb 100644 --- a/tests/application/modules/AbstractControllerTestCase.php +++ b/tests/application/modules/AbstractControllerTestCase.php @@ -202,7 +202,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe $request->setRequestUri($url); } $request->setPathInfo(null); - $controller = $this->getFrontController(); + $this->frontController ->setRequest($request) ->setResponse($this->getResponse()) diff --git a/tests/application/modules/admin/controllers/CmsControllerTest.php b/tests/application/modules/admin/controllers/CmsControllerTest.php index ebf9fd0b411b37f5340386f6b6b84d93101bf97f..15204cc975e11c6c29bc9ba043a92564e8a16882 100644 --- a/tests/application/modules/admin/controllers/CmsControllerTest.php +++ b/tests/application/modules/admin/controllers/CmsControllerTest.php @@ -93,7 +93,8 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase { $domaine_a_la_une = Class_Catalogue::newInstanceWithId(66, ['libelle' => 'A la Une']); - Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Catalogue') + $this + ->onLoaderOfModel('Class_Catalogue') ->whenCalled('findAllBy') ->with(['order' => 'libelle']) ->answers([$this->domaine_art, @@ -135,6 +136,7 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase { public function setupArticles() { $cat_a_la_une = Class_ArticleCategorie::newInstanceWithId(23, ['libelle' => 'A la Une']); $this->annecy->setArticleCategories([$cat_a_la_une]); + $this->cat_evenements = Class_ArticleCategorie::newInstanceWithId(34, ['libelle' => 'Evènements', 'parent_categorie' => $cat_a_la_une, @@ -161,15 +163,16 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase { 'domaine_ids' => [11,12], 'avis_users' => []]); - - $this->article_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')->whenCalled('save') - ->answers(true) - ->getWrapper(); + $this->cat_evenements->setArticles([$this->concert]); + $this->article_wrapper = $this + ->onLoaderOfModel('Class_Article') + ->whenCalled('save')->answers(true) + ->getWrapper(); - $this->categorie_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_ArticleCategorie'); + $this->categorie_wrapper = $this->onLoaderOfModel('Class_ArticleCategorie'); $this->cat_evenements->setBib($this->annecy); @@ -209,6 +212,7 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase { + class CmsControllerArticleEditWithoutLanguesTest extends CmsControllerTestCase { public function setUp() { parent::setUp(); @@ -351,37 +355,41 @@ class CmsControllerArticleDuplicateActionTest extends AbstractControllerTestCase 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', + ['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_article/8080/id_cat/23'); + $this->dispatch('/admin/cms/newsduplicate/id/8080', true); } public function setupArticle() { - $this->fixture('Class_Article',['id' => 8080, - 'titre' => 'Concert', - 'categorie' => $this->fixture('Class_ArticleCategorie',['id' => 23, - 'libelle' => 'A la Une']), - 'auteur' => $this->_admin_bib, - 'description' => 'Venez nombreux ici: <img src="'.BASE_URL.'/images/bonlieu.jpg" />', - 'contenu' => 'à Bonlieu. <img src="'.BASE_URL.'/images/truffaz.jpg" />', - 'debut' => '2011-03-20', - 'fin' => '2011-03-28', - 'events_debut' => '2011-03-27', - 'events_fin' => '2011-03-28', - 'cacher_titre' => 1, - 'langue' => 'fr', - 'tags' => 'concert;jazz', - 'avis' => true]); + $this->fixture('Class_Article', + ['id' => 8080, + 'titre' => 'Concert', + 'categorie' => $this->fixture('Class_ArticleCategorie', + ['id' => 23, + 'libelle' => 'A la Une']), + 'auteur' => $this->_admin_bib, + 'description' => 'Venez nombreux ici: <img src="'.BASE_URL.'/images/bonlieu.jpg" />', + 'contenu' => 'à Bonlieu. <img src="'.BASE_URL.'/images/truffaz.jpg" />', + 'debut' => '2011-03-20', + 'fin' => '2011-03-28', + 'events_debut' => '2011-03-27', + 'events_fin' => '2011-03-28', + 'cacher_titre' => 1, + 'langue' => 'fr', + 'tags' => 'concert;jazz', + 'avis' => true]); } @@ -1598,11 +1606,12 @@ class CmsControllerArticleAddActionInvalidDatePostTest extends CmsControllerTest } + + class CmsControllerArticleIndexActionTest extends CmsControllerTestCase { public function setUp() { parent::setUp(); - $_SESSION["MENU_DEPLOY"] = array("CMS" => array(34, 23)); - $this->dispatch('admin/cms'); + $this->dispatch('admin/cms', true); } /** @test */ @@ -1610,9 +1619,29 @@ class CmsControllerArticleIndexActionTest extends CmsControllerTestCase { $this->assertController('cms'); $this->assertAction('index'); } + + + /** @test */ + public function titreShouldBeMiseAJourDesArticles() { + $this->assertXPathContentContains('//h1', 'Mise à jour des articles'); + } + + + /** @test */ + public function articleConcertShouldHaveLinkForEdit() { + $this->assertXPath('//a[contains(@href, "admin/cms/newsedit/id/4")]'); + } + + + /** @test */ + public function articleConcertShouldHaveLinkForDuplicate() { + $this->assertXPath('//a[contains(@href, "admin/cms/newsduplicate/id/4")]'); + } } + + class CmsControllerArticleTraductionFREditTest extends CmsControllerTestCase { public function setUp() { parent::setUp();