diff --git a/application/modules/admin/views/scripts/profil/_formProfil.phtml b/application/modules/admin/views/scripts/profil/_formProfil.phtml index 5d81d1d5f31de6bc3cde6c52a03dad12e4d3357e..fc89e7861bee499e8c90641d1bcaddcd4696c253 100644 --- a/application/modules/admin/views/scripts/profil/_formProfil.phtml +++ b/application/modules/admin/views/scripts/profil/_formProfil.phtml @@ -246,6 +246,18 @@ Class_ScriptLoader::getInstance() </td> </tr> + <tr class="only_browser"> + <td align="right"><?php echo $this->traduire('Ordre des divisons'); ?></td> + <td class="gauche" style="padding-left:5px"> + <?php + echo $this->formRadioButtons("ordre_divisions", + $this->profil->getOrdreDivisions(), + ["1 (toujours visible) - 2 (remplacée par le contenu)- 3 (seulement page accueil)", + "3 (seulement page accueil) - 2 (remplacée par le contenu) - 1 (toujours visible)"]); + ?> + </td> + </tr> + <tr class="only_browser"> <td colspan="2"> <div style="width:300px;margin-left:139px"> diff --git a/application/modules/opac/views/scripts/accueil.phtml b/application/modules/opac/views/scripts/accueil.phtml index d3a0538b4a3b728403daf048b0662909c596d953..56ec5f8bd789a5efb0f6acf3c78992bc4d62f6a6 100644 --- a/application/modules/opac/views/scripts/accueil.phtml +++ b/application/modules/opac/views/scripts/accueil.phtml @@ -1,29 +1,32 @@ <div id="site_web_wrapper" style="width:<?php echo $this->profil->getLargeurSite(); ?>px; margin-left:auto; margin-right:auto"> -<div class="siteWeb portail_background_img"> - <div id="site_web_content"> - <?php echo $this->partial("banniere.phtml", array("profil" => $this->profil)); ?> - <div id="col_wrapper"> - <?php - switch ($this->profil->getNbDivisions()) { - case 1: - echo $this->division($this->profil, 1, 'colContenu'); - break; + <div class="siteWeb portail_background_img"> + <div id="site_web_content"> + <?php echo $this->partial("banniere.phtml", array("profil" => $this->profil)); ?> + <div id="col_wrapper"> + <?php + switch ($this->profil->getNbDivisions()) { + case 1: + echo $this->division($this->profil, 1, 'colContenu'); + break; - case 2: - echo $this->division($this->profil, 1, 'colGauche'); - echo $this->division($this->profil, 2, 'colContenu'); - break; + case 2: + echo $this->divisionMap($this->profil, + $this->profil->isDivisionsFromRightToLeft() + ? [2 => 'colContenu', 1 => 'colDroite'] + : [1 => 'colGauche', 2 => 'colContenu']); + break; - case 3: - echo '<div id="right_col_color">'; - echo $this->division($this->profil, 1, 'colGauche'); - echo $this->division($this->profil, 2, 'colMilieu'); - echo $this->division($this->profil, 3, 'colDroite'); - echo '</div>'; - break; - } - ?> - <div class="clear"></div> - </div> <!-- col_wrapper --> - </div> <!-- site_web_content --> -</div> <!-- siteWeb --> + case 3: + echo '<div id="right_col_color">'; + echo $this->divisionMap($this->profil, + $this->profil->isDivisionsFromRightToLeft() + ? [3 => 'colGauche', 2 => 'colContenu', 1 => 'colDroite'] + : [1 => 'colGauche', 2 => 'colContenu', 3 => 'colDroite']); + echo '</div>'; + break; + } + ?> + <div class="clear"></div> + </div> <!-- col_wrapper --> + </div> <!-- site_web_content --> + </div> <!-- siteWeb --> diff --git a/application/modules/opac/views/scripts/contenu.phtml b/application/modules/opac/views/scripts/contenu.phtml index 4748175deab9dbb7bb5508217138b7473f3a2633..de63e76633014ee3fb739dff857b91e00569dce5 100644 --- a/application/modules/opac/views/scripts/contenu.phtml +++ b/application/modules/opac/views/scripts/contenu.phtml @@ -1,18 +1,23 @@ <div id="site_web_wrapper" style="width:<?php echo $this->profil->getLargeurSite(); ?>px; margin-left:auto; margin-right:auto"> <div class="siteWeb module_background_img module"> <div id="site_web_content"> - + <?php echo $this->partial("banniere.phtml", array("profil" => $this->profil)); ?> <div id="col_wrapper"> <?php - if ($this->profil->getNbDivisions() == 1) { - echo $this->division($this->profil, 1, 'colContenu', $this->actionContent); - } else { - echo $this->division($this->profil, 1, 'colGauche'); - echo $this->division($this->profil, 2, 'colContenu', $this->actionContent); - } + if ($this->profil->getNbDivisions() == 1) { + echo $this->division($this->profil, 1, 'colContenu', $this->actionContent); + } else { + if ($this->profil->isDivisionsFromRightToLeft()) { + echo $this->division($this->profil, 2, 'colContenu', $this->actionContent); + echo $this->division($this->profil, 1, 'colDroite'); + } else { + echo $this->division($this->profil, 1, 'colGauche'); + echo $this->division($this->profil, 2, 'colContenu', $this->actionContent); + } + } ?> <div class="clear"></div> </div> <!-- col_wrapper --> diff --git a/library/Class/Profil.php b/library/Class/Profil.php index 0c2b0991630d802914fb8243304393707ef54b75..52ca8a14b4a0459ddd4d4db1467e42faa350d31d 100644 --- a/library/Class/Profil.php +++ b/library/Class/Profil.php @@ -145,6 +145,7 @@ class Class_Profil extends Storm_Model_Abstract { 'largeur_division1', 'largeur_site', 'nb_divisions', + 'ordre_divisions', 'hauteur_banniere', 'couleur_lien_bandeau', 'couleur_texte_bandeau', @@ -193,6 +194,7 @@ class Class_Profil extends Storm_Model_Abstract { 'skin' => 'original', 'largeur_site' => 1000, 'nb_divisions' => 3, + 'ordre_divisions' => 0, 'largeur_division1' => 250, 'marge_division1' => 10, 'largeur_division2' => 550, @@ -1250,6 +1252,14 @@ class Class_Profil extends Storm_Model_Abstract { } + /** + * @return bool + */ + public function isDivisionsFromRightToLeft() { + return 1 == $this->getOrdreDivisions(); + } + + /** * Créé une copie profil (non récursif) * @return Class_Profil diff --git a/public/admin/css/global.css b/public/admin/css/global.css index e54af41bb3f7f938d66aef89fc9b69d48fefb6e6..e35f4739ed418c49dd9f2635f5c065d2b80e9a5f 100644 --- a/public/admin/css/global.css +++ b/public/admin/css/global.css @@ -1046,4 +1046,8 @@ img.article_edit { div.modules div.pager span { margin:0px 3px; +} + +#ZFDebug { + display:none; } \ No newline at end of file diff --git a/tests/application/modules/admin/controllers/ProfilControllerTest.php b/tests/application/modules/admin/controllers/ProfilControllerTest.php index 7a6b47e8f84f149bc6c4caebe65ddc61a5a597c6..d0ce6ae141e2b8ef4f6842d5966e19de3687ce5e 100644 --- a/tests/application/modules/admin/controllers/ProfilControllerTest.php +++ b/tests/application/modules/admin/controllers/ProfilControllerTest.php @@ -38,7 +38,8 @@ abstract class Admin_ProfilControllerProfilJeunesseTestCase extends Admin_Abstra 'logo_droite_link' => 'http://macommune.fr', 'header_social_network' => true, 'header_css' => '/userfiles/css/my.css', - 'header_js' => '/userfiles/js/my.js'); + 'header_js' => '/userfiles/js/my.js', + 'ordre_divisions' => 1); $cfg_notice = array('exemplaires' => array('grouper' => 1, 'section' => 1, @@ -85,6 +86,7 @@ class Admin_ProfilControllerEditProfilJeunesseTest extends Admin_ProfilControlle $this->dispatch('/admin/profil/edit/id_profil/5'); } + /** * @test */ @@ -180,6 +182,16 @@ class Admin_ProfilControllerEditProfilJeunesseTest extends Admin_ProfilControlle $this->assertXPath("//input[@type='checkbox'][@name='accessibilite_on'][not(@checked)]"); } + /** @test */ + public function radioButtonOrdreDivision123ShouldNotBeChecked() { + $this->assertXPath("//input[@type='radio'][@name='ordre_divisions'][@value='0'][not(@checked)]"); + } + + /** @test */ + public function radioButtonOrdreDivision321ShouldBeChecked() { + $this->assertXPath("//input[@type='radio'][@name='ordre_divisions'][@value='1'][@checked='checked']"); + } + /** @test */ public function checkBoxLiensSortantsOffShouldBeChecked() { $this->assertXPath("//input[@type='checkbox'][@name='liens_sortants_off'][@checked='checked']"); diff --git a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php index 26352bd064b4a57883d32946495338e10d62acff..bd207b7edc4f9e37ff6451b97fed1c10b3eb6e6b 100644 --- a/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php +++ b/tests/application/modules/opac/controllers/ProfilOptionsControllerTest.php @@ -543,7 +543,7 @@ abstract class ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase 'type_module' => 'PRETS', 'preferences' => ['titre' => 'Mes documents']], - '10' => ['division' => '2', + '10' => ['division' => '1', 'type_module' => 'NEWSLETTERS', 'preferences' => ['titre' => 'Lettres d\'informations']], @@ -603,6 +603,11 @@ abstract class ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase ->setLibelle('Musique'); $_SERVER["REQUEST_URI"] = '/'; + + + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter') + ->whenCalled('count')->answers(5) + ->whenCalled('findAll')->answers([Class_Newsletter::newInstanceWithId(23, ['titre' => 'Nouveautés'])]); } } @@ -717,10 +722,6 @@ class ProfilOptionsControllerViewProfilJeunesseAccueilTest extends ProfilOptions ->whenCalled('fileExists') ->answers(true)); - Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter') - ->whenCalled('count')->answers(5) - ->whenCalled('findAll')->answers([Class_Newsletter::newInstanceWithId(23, ['titre' => 'Nouveautés'])]); - $this->dispatch('/opac/', true); } @@ -823,8 +824,8 @@ class ProfilOptionsControllerViewProfilJeunesseAccueilTest extends ProfilOptions /** @test */ - public function boiteNewslettersShouldBeVisibleInProfilJeunesse() { - $this->assertXPath("//div[@class='boite_newsletters']",$this->_response->getBody()); + public function boiteNewslettersShouldBeVisibleInProfilJeunesseInColGauche() { + $this->assertXPath("//div[contains(@class, 'colGauche')]//div[@class='boite_newsletters']",$this->_response->getBody()); } @@ -891,6 +892,26 @@ class ProfilOptionsControllerViewProfilJeunesseAccueilTest extends ProfilOptions +class ProfilOptionsControllerProfilJeunesseWithOrdreDivisionsReversedTest extends ProfilOptionsControllerProfilJeunesseWithPagesJeuxMusiqueTestCase { + protected function _loginHook($account) {} + + public function setUp() { + parent::setUp(); + + $this->profil_jeunesse->setOrdreDivisions(1); + $this->dispatch('/opac/', true); + } + + + /** @test */ + public function boiteNewslettersShouldBeVisibleInProfilJeunesseInColDroite() { + $this->assertXPath("//div[contains(@class, 'colDroite')]//div[@class='boite_newsletters']",$this->_response->getBody()); + } +} + + + + class UserRoleLevelThreeViewPrivateProfilTest extends AbstractControllerTestCase { protected function _loginHook($account) { $account->ROLE = "";