From 2013db71f7aabf9b101ce649b434c9fc5fb9aefe Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@git-test.afi-sa.fr>
Date: Mon, 11 Jun 2012 08:25:58 +0000
Subject: [PATCH] =?UTF-8?q?Correction=20de=CC=81placement=20boi=CC=82tes?=
 =?UTF-8?q?=20page=20accueil=20co=CC=82te=CC=81=20serveur?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/controllers/ProfilController.php    |  1 +
 library/Class/Profil.php                      | 13 ++-
 public/opac/css/global.css                    |  2 +-
 tests/library/Class/ProfilTest.php            | 93 +++++++++++++++++++
 4 files changed, 105 insertions(+), 4 deletions(-)

diff --git a/application/modules/admin/controllers/ProfilController.php b/application/modules/admin/controllers/ProfilController.php
index f2180abaabe..a3bde3c6739 100644
--- a/application/modules/admin/controllers/ProfilController.php
+++ b/application/modules/admin/controllers/ProfilController.php
@@ -470,6 +470,7 @@ class Admin_ProfilController extends Zend_Controller_Action {
 
 	public function moduleSortAction() {
 		$this->getHelper('ViewRenderer')->setNoRender();
+
 		if (!$profil = Class_Profil::getLoader()->find($this->_getParam('profil')))
 			return;
 
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index abbb36c2027..d1af081271c 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -1204,7 +1204,6 @@ class Class_Profil extends Storm_Model_Abstract {
 
 	public function moveModuleOldDivPosNewDivPos($old_div, $old_pos, $new_div, $new_pos) {
 		$cfg_accueil = $this->getCfgAccueilAsArray();
-
 		$id = $this->_getIdModuleAtDivPosInCfg($old_div, $old_pos, $cfg_accueil);
 		$moved_module = $cfg_accueil['modules'][$id];
 		$moved_module['division'] = $new_div;
@@ -1213,11 +1212,19 @@ class Class_Profil extends Storm_Model_Abstract {
 		$new_modules = array();
 		$i = 0;
 		foreach($cfg_accueil['modules'] as $module_id => $module) {
-			if ($i == $new_pos)
+			$in_new_div = $module['division'] == $new_div;
+
+			if (($i == $new_pos) && $in_new_div) 
 				$new_modules[$id] = $moved_module;
+
+			if ($in_new_div)
+				$i++;
+
 			$new_modules[$module_id] = $module;
-			$i++;
 		}
+
+		if (!isset($new_modules[$id]))
+			$new_modules[$id] = $moved_module;
 			
 		$cfg_accueil['modules'] = $new_modules;
 
diff --git a/public/opac/css/global.css b/public/opac/css/global.css
index c5b8d401674..9e812a2fad7 100644
--- a/public/opac/css/global.css
+++ b/public/opac/css/global.css
@@ -865,7 +865,7 @@ div.ui-sortable-placeholder {
 }
 
 .ui-sortable-helper {
-		box-shadow: 0px 0px 15px rgba(0,0,0,0.8);
+		box-shadow: 0px 0px 25px rgba(0,0,0,0.8);
 		max-height: 200px;
 		cursor: move;
 		overflow: hidden;
diff --git a/tests/library/Class/ProfilTest.php b/tests/library/Class/ProfilTest.php
index f75a639576e..18cd3f32cae 100644
--- a/tests/library/Class/ProfilTest.php
+++ b/tests/library/Class/ProfilTest.php
@@ -561,6 +561,99 @@ class ProfilAdulteChatenayMoveModuleMoveNEWSFromDiv1PosZeroToDivFourPositionOneT
 	public function moduleIdFourShouldBeBetweenOneAndTwo() {
 		$this->assertEquals(array(1, 4, 2), array_keys($this->modules));
 	}
+
+
+	/** @test */
+	public function modulesCountShouldBeThree() {
+		$this->assertEquals(3, count($this->modules));
+	}
+}
+
+
+
+
+class ProfilAdulteChatenayMoveModuleLOGINToFirstPosInDivFourTest extends ProfilAdulteChatenayTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->profil->moveModuleOldDivPosNewDivPos(4, 1, 4, 0);
+		$this->modules = array_at('modules', $this->profil->getCfgAccueilAsArray());
+	}
+
+
+	/** @test */
+	public function moduleIdTwoShouldBeInDivFour() {
+		$this->assertEquals(4, $this->modules['2']['division']);
+	}
+
+
+	/** @test */
+	public function moduleIdTwoShouldBeOnTop() {
+		$this->assertEquals(array(2, 1, 4), array_keys($this->modules));
+	}
+
+
+	/** @test */
+	public function modulesCountShouldBeThree() {
+		$this->assertEquals(3, count($this->modules));
+	}
+}
+
+
+
+
+class ProfilAdulteChatenayMoveModuleRECH_SIMPLEToSecondPosInDivFourTest extends ProfilAdulteChatenayTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->profil->moveModuleOldDivPosNewDivPos(4, 0, 4, 1);
+		$this->modules = array_at('modules', $this->profil->getCfgAccueilAsArray());
+	}
+
+
+	/** @test */
+	public function moduleIdOneShouldBeInDivFour() {
+		$this->assertEquals(4, $this->modules['1']['division']);
+	}
+
+
+	/** @test */
+	public function moduleIdTwoShouldBeOnTop() {
+		$this->assertEquals(array(2, 4, 1), array_keys($this->modules));
+	}
+
+
+	/** @test */
+	public function modulesCountShouldBeThree() {
+		$this->assertEquals(3, count($this->modules));
+	}
+}
+
+
+
+
+class ProfilAdulteChatenayMoveModuleLOGINToLastPosInDivOneTest extends ProfilAdulteChatenayTestCase {
+	public function setUp() {
+		parent::setUp();
+		$this->profil->moveModuleOldDivPosNewDivPos(4, 1, 1, 1);
+		$this->modules = array_at('modules', $this->profil->getCfgAccueilAsArray());
+	}
+
+
+	/** @test */
+	public function moduleIdTwoShouldBeInDivOne() {
+		$this->assertEquals(1, $this->modules['2']['division']);
+	}
+
+
+	/** @test */
+	public function moduleIdTwoShouldBeLast() {
+		$this->assertEquals(array(1, 4, 2), array_keys($this->modules));
+	}
+
+
+	/** @test */
+	public function modulesCountShouldBeThree() {
+		$this->assertEquals(3, count($this->modules));
+	}
 }
 
 
-- 
GitLab