diff --git a/.gitattributes b/.gitattributes index e5938f2267eb602f930c1b09d39d615fa5935b14..d93aa24c4aac9aac03c535d81685d3176815d6ee 100644 --- a/.gitattributes +++ b/.gitattributes @@ -534,6 +534,7 @@ application/modules/admin/views/scripts/menus/rss.phtml -text application/modules/admin/views/scripts/menus/sitotheque.phtml -text application/modules/admin/views/scripts/modo/_avis_partial.phtml -text application/modules/admin/views/scripts/modo/alert.phtml -text +application/modules/admin/views/scripts/modo/articlesformulaires.phtml -text application/modules/admin/views/scripts/modo/aviscms.phtml -text application/modules/admin/views/scripts/modo/avisnotice.phtml -text application/modules/admin/views/scripts/modo/formulaires.phtml -text diff --git a/application/modules/admin/controllers/ModoController.php b/application/modules/admin/controllers/ModoController.php index 497c6f69142df710eca00098ce140d11f3a1c9f1..53bfe5038e801cde2f7536dac828534a2e2ad223 100644 --- a/application/modules/admin/controllers/ModoController.php +++ b/application/modules/admin/controllers/ModoController.php @@ -952,8 +952,17 @@ class Admin_ModoController extends Zend_Controller_Action { $this->_redirect('admin/modo/alert'); } - + public function formulairesAction() { - $this->view->formulaires = Class_Formulaire::findAll(); + $article = Class_Article::find($this->_getParam('id_article')); + + if ($article) + $this->view->subview = $this->view->partial('modo/formulaires.phtml', + ['formulaires' => $article->getFormulaires()]); + else + $this->view->subview = $this->view->partial('modo/articlesformulaires.phtml', + ['articles' => Class_Article::articlesWithFormulaire()]); + $this->_forward('index'); } + } \ No newline at end of file diff --git a/application/modules/admin/views/scripts/modo/articlesformulaires.phtml b/application/modules/admin/views/scripts/modo/articlesformulaires.phtml new file mode 100644 index 0000000000000000000000000000000000000000..88c8d72a30b46f94bf50494679bca06eddaa35a4 --- /dev/null +++ b/application/modules/admin/views/scripts/modo/articlesformulaires.phtml @@ -0,0 +1,8 @@ +<?php +echo '<ul>'; +foreach ($this->articles as $article) { +echo '<li> +<a href="formulaires/id_article/'.$article->getId().'">'.$article->getTitre().'</a>'; +} +echo '</ul>'; +?> \ No newline at end of file diff --git a/library/Class/Article.php b/library/Class/Article.php index c98ba56d3157d83fa35f1456c81c4a24b2408811..17a85cbc06abdd50260c97571ae1ee4b9ba6b77c 100644 --- a/library/Class/Article.php +++ b/library/Class/Article.php @@ -361,6 +361,11 @@ class ArticleLoader extends Storm_Model_Loader { public function filterByLocaleAndWorkflow($articles) { return Class_Article::filterByLocaleAndWorkflow($articles); } + + public function articlesWithFormulaire() { + return Class_Article::findAll('select id_article,titre from cms_article where id_article in (select distinct id_article from formulaires)'); + } + } diff --git a/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php b/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php index 08715fc7e17a9cedff005e6ebe790f2254a714d7..1bb64e3a1ce8fa19177a213e0a4798b3508dbb97 100644 --- a/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php +++ b/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php @@ -19,12 +19,16 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase { +class ModoControllerFormulaireForArticleListTest extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); + $article = Class_Article::newInstanceWithId(12, ['titre' => 'Inscrivez vous au Hackaton']); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Formulaire') - ->whenCalled('findAll') + ->whenCalled('findAllBy') + ->with([ 'role' => 'article', + 'model' => $article, + 'order' => 'date_creation desc']) ->answers([ Class_Formulaire::newInstanceWithId(3, ['data' => serialize(['nom' => 'Tinguette', 'prenom' => 'Quentine'])]), @@ -35,10 +39,11 @@ class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase Class_Formulaire::newInstanceWithId(6, ['data' => serialize(['name' => 'Lefort', 'prenom' => 'Nono', 'age' => 12])]) - ]); + ]) + ->beStrict(); - $this->dispatch('admin/modo/formulaires', true); + $this->dispatch('admin/modo/formulaires/id_article/12', true); } @@ -75,5 +80,33 @@ class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase } +class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase { + public function setUp() { + parent::setUp(); + $hackaton = Class_Article::newInstanceWithId(4, ['titre' => 'Inscrivez vous au Hackaton']); + $preinscription =Class_Article::newInstanceWithId(2, ['titre' => 'Formulaire de préinscription']); + + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') + ->whenCalled('findAll') + ->with('select id_article,titre from cms_article where id_article in (select distinct id_article from formulaires)') + ->answers([ + $hackaton, + $preinscription + ]); + + + + $this->dispatch('admin/modo/formulaires/', true); + } + + + /** @test */ + public function liShouldContainsLinkToFormulaireForHackaton() { + $this->assertXPathContentContains('//li/a[contains(@href,"formulaires/id_article/4")]', 'Inscrivez vous au Hackaton',$this->_response->getBody()); + } + + +} + ?>