From f3c27c0a43a3981831e8563d997a276dc5302164 Mon Sep 17 00:00:00 2001
From: Shalimov Anton <solidovic@yandex.ru>
Date: Thu, 21 Aug 2014 01:57:17 +0400
Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB?=
 =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5=D1=82?=
 =?UTF-8?q?=D1=81=D1=8F=20OrderNum=20=D1=83=20=D0=BC=D0=BE=D0=B4=D1=83?=
 =?UTF-8?q?=D0=BB=D0=B5=D0=B9/=D0=BC=D0=B5=D1=80=D0=BE=D0=BF=D1=80=D0=B8?=
 =?UTF-8?q?=D1=8F=D1=82=D0=B8=D0=B9,=20=D0=BD=D0=B0=D1=85=D0=BE=D0=B4?=
 =?UTF-8?q?=D1=8F=D1=89=D0=B8=D1=85=D1=81=D1=8F=20=D0=BD=D0=B8=D0=B6=D0=B5?=
 =?UTF-8?q?=20=D1=83=D0=B4=D0=B0=D0=BB=D1=8F=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../classes/Controller/Handler/Map.php        | 40 ++++++++++++++++---
 application/classes/Model/Teacher/Map.php     | 12 ++++++
 media/js/construct/edit.js                    | 29 +++++++++-----
 3 files changed, 66 insertions(+), 15 deletions(-)

diff --git a/application/classes/Controller/Handler/Map.php b/application/classes/Controller/Handler/Map.php
index e0880342f..ac6fc62f6 100644
--- a/application/classes/Controller/Handler/Map.php
+++ b/application/classes/Controller/Handler/Map.php
@@ -209,8 +209,11 @@ class Controller_Handler_Map extends Controller_Handler {
 			$data['success'] = false;
             $this->post -> rule('ModuleID', 'not_empty')
                         -> rule('ModuleID', 'digit')
-						-> rule('SubmodulesID', 'not_empty');
+						-> rule('SubmodulesID', 'not_empty')
+						-> rule('CurrentModuleOrder', 'not_empty')
+                        -> rule('CurrentModuleOrder', 'digit');
             if($this->post->check()) {
+				$ChangeOrderModulesID = json_decode($this->post->offsetGet('ChangeOrderModulesID'));
 				$Submodules = json_decode($this->post->offsetGet('SubmodulesID'));
 				foreach ($Submodules as &$SubmoduleID) {
 					$this->privateDeleteSubmodule($SubmoduleID);
@@ -219,8 +222,20 @@ class Controller_Handler_Map extends Controller_Handler {
 					$this->user['TeacherID'],
 					$this->post->offsetGet('ModuleID')
 				);
-				if ($result[0]['Num'] == 0)
+				if ($result[0]['Num'] == 0) {
+					if (count($ChangeOrderModulesID) > 0) {
+						$NewOrder = $this->post->offsetGet('CurrentModuleOrder');
+						foreach($ChangeOrderModulesID as $ModuleID) {
+							$this->model->ChangeModuleOrder(
+								$this->user['TeacherID'],
+								$ModuleID,
+								$NewOrder
+							);
+							$NewOrder++;
+						}
+					}
 					$data['success'] = true;
+				}
             }
             $this->response->body(json_encode($data));
         }
@@ -229,12 +244,27 @@ class Controller_Handler_Map extends Controller_Handler {
 		public function action_DeleteSubmodule() {
 			$data['success'] = false;
             $this->post -> rule('SubmoduleID', 'not_empty')
-                        -> rule('SubmoduleID', 'digit');
+                        -> rule('SubmoduleID', 'digit')
+						-> rule('CurrentSubmoduleOrder', 'not_empty')
+                        -> rule('CurrentSubmoduleOrder', 'digit');
             if($this->post->check()) {
+				$ChangeOrderSubmodulesID = json_decode($this->post->offsetGet('ChangeOrderSubmodulesID'));
                 $result = $this->privateDeleteSubmodule($this->post->offsetGet('SubmoduleID'));
-				if ($result == 0)
+				if ($result == 0) {
+					if (count($ChangeOrderSubmodulesID) > 0) {
+						$NewOrder = $this->post->offsetGet('CurrentSubmoduleOrder');
+						foreach($ChangeOrderSubmodulesID as $SubmoduleID) {
+							$this->model->ChangeSubmoduleOrder(
+								$this->user['TeacherID'],
+								$SubmoduleID,
+								$NewOrder
+							);
+							$NewOrder++;
+						}
+					}
 					$data['success'] = true;
-            }
+				}
+			}
 			$this->response->body(json_encode($data));
         }
 		
diff --git a/application/classes/Model/Teacher/Map.php b/application/classes/Model/Teacher/Map.php
index 76b707594..ca0b6f89c 100644
--- a/application/classes/Model/Teacher/Map.php
+++ b/application/classes/Model/Teacher/Map.php
@@ -109,4 +109,16 @@ class Model_Teacher_Map extends Model
         $sql = "CALL `GetSubjectList`(); ";
         return DB::query(Database::SELECT, $sql)->execute();
     }
+	
+    public function ChangeModuleOrder($teacherID, $moduleID, $OrderNum)
+    {
+		$sql = "SELECT `ChangeModuleOrder`('$teacherID', '$moduleID', '$OrderNum') AS `Num`;";
+		return DB::query(Database::SELECT, $sql)->execute();
+    }
+	
+    public function ChangeSubmoduleOrder($teacherID, $SubmoduleID, $OrderNum)
+    {
+		$sql = "SELECT `ChangeSubmoduleOrder`('$teacherID', '$SubmoduleID', '$OrderNum') AS `Num`;";
+		return DB::query(Database::SELECT, $sql)->execute();
+    }
 }
diff --git a/media/js/construct/edit.js b/media/js/construct/edit.js
index 751245931..3ab1ad1d9 100644
--- a/media/js/construct/edit.js
+++ b/media/js/construct/edit.js
@@ -297,8 +297,8 @@ $(function() {
 	
 	// Подтверждение при удаление модуля
 	$('.moduleList').on('click', '.confirmDeleteModule', function(){
-		$(this).parent('div').parent('div').parent('div').remove();
 		var subModulesDIV = $(this).parent('div').parent('div').next('.subModules');
+		var CurrentModuleOrder = $(this).parent().parent().parent().index() + 1;
 		// Собираем в JSON строку ID мероприятий
 		var JSONSubmodules = '[';
 		$('.subModule', subModulesDIV).each(function(){
@@ -308,18 +308,18 @@ $(function() {
 		JSONSubmodules += ']';
 		//
 		// Собираем ID модулей, которые ниже для того, чтоб сменить их порадок на +1
-		var AttrID = $(this).parent().parent().nextAll().map(function(indx, element){
+		var AttrID = $(this).parent().parent().parent().nextAll().map(function(indx, element){
 			return $(element).attr("id");
 		});
-		var ModulesID = AttrID.get();
-		alert(ModulesID);
+		var ChangeOrderModulesID = '[' + AttrID.get() + ']';
 		//
-		/*
 		$.post(
 			'/~dev_rating/handler/map/DeleteModule',
 			{
 				'ModuleID': $(this).parent('div').parent('div').parent('div').attr('id'),
-				'SubmodulesID': JSONSubmodules
+				'SubmodulesID': JSONSubmodules,
+				'CurrentModuleOrder': CurrentModuleOrder,
+				'ChangeOrderModulesID': ChangeOrderModulesID
 			},
 			function(data){
 				data = $.parseJSON(data);
@@ -328,7 +328,7 @@ $(function() {
 				else alert('Error, DeleteModule');
 			}
 		);
-		*/
+		$(this).parent('div').parent('div').parent('div').remove();
 	});
 	
 	// Удалить мероприятие
@@ -340,13 +340,21 @@ $(function() {
 	// Подтверждение при удаление мероприятия
 	$('.moduleList').on('click', '.confirmDeleteSubModule ', function(){
 		var subModulesDiv = $(this).parent().parent().parent();
-		$(this).parent('div').parent('div').remove();
+		var CurrentSubmoduleOrder = $(this).parent().parent().index() + 1;
 		CountCurrentControl(subModulesDiv);
 		CountLandmarkControl(subModulesDiv);
+		// Собираем ID мероприятий, которые ниже для того, чтоб сменить их порадок на +1
+		var AttrID = $(this).parent().parent().nextAll().map(function(indx, element){
+			return $(element).attr("id");
+		});
+		var ChangeOrderSubmodulesID = '[' + AttrID.get() + ']';
+		//
 		$.post(
 			'/~dev_rating/handler/map/DeleteSubmodule',
 			{
-				'SubmoduleID': $(this).parent('div').parent('div').attr('id')
+				'SubmoduleID': $(this).parent('div').parent('div').attr('id'),
+				'CurrentSubmoduleOrder': CurrentSubmoduleOrder,
+				'ChangeOrderSubmodulesID': ChangeOrderSubmodulesID
 			},
 			function(data){
 				data = $.parseJSON(data);
@@ -355,9 +363,10 @@ $(function() {
 				else alert('Error, DeleteSubmodule');
 			}
 		);
+		$(this).parent('div').parent('div').remove();
 	});
 	
-	// Отмена удаления
+	// Отмена удаления модулей/мероприятий
 	$('.moduleList').on('click', '.cancel ', function(){
 		$(this).parent().parent().children('.actions').css('display', 'block');
 		$(this).parent().remove();
-- 
GitLab