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