diff --git a/application/bootstrap.php b/application/bootstrap.php index e28950c5366681808e8611e14a468ef1f9db8ab2..bc29727290c72d5f9e439ac25a5738e1ff13975c 100644 --- a/application/bootstrap.php +++ b/application/bootstrap.php @@ -242,6 +242,13 @@ Route::set('stdnt:profile', 'student/profile') /* --------------- Преподаватели ---------------- */ +Route::set('map:create', 'map/create') + ->defaults(array( + 'directory' => 'teacher', + 'controller' => 'map', + 'action' => 'create' + )); + Route::set('map:edit', 'map/<id>', array('id' => '[0-9]+')) ->defaults(array( 'directory' => 'teacher', diff --git a/application/classes/Controller/Handler/Map.php b/application/classes/Controller/Handler/Map.php index 8b7af4c5ba41f6e0bd608afa7e16bc654854dff0..ac6fc62f6373e257f1de8147e08c8e29952dcec5 100644 --- a/application/classes/Controller/Handler/Map.php +++ b/application/classes/Controller/Handler/Map.php @@ -13,6 +13,37 @@ class Controller_Handler_Map extends Controller_Handler { return $result[0]['Num']; } + // Добавление преподавателем дисциплины + public function action_AddDiscipline() { + $data['success'] = false; + $this->post -> rule('Grade', 'not_empty') + -> rule('Grade', 'digit') + -> rule('SubjectID', 'not_empty') + -> rule('SubjectID', 'digit') + -> rule('ExamType', 'not_empty') + -> rule('LectionCount', 'not_empty') + -> rule('LectionCount', 'digit') + -> rule('PracticeCount', 'not_empty') + -> rule('PracticeCount', 'digit') + -> rule('DepartmentID', 'not_empty') + -> rule('DepartmentID', 'digit'); + if($this->post->check()) { + $result = $this->model->AddDiscipline( + $this->user['TeacherID'], + $this->post->offsetGet('Grade'), + $this->post->offsetGet('SubjectID'), + $this->post->offsetGet('ExamType'), + $this->post->offsetGet('LectionCount'), + $this->post->offsetGet('PracticeCount'), + $this->post->offsetGet('DepartmentID') + ); + $data['DisciplineID'] = $result[0]['Num']; + if ($data['DisciplineID'] > 0) + $data['success'] = true; + } + $this->response->body(json_encode($data)); + } + // Рзменения базовых параметров дисциплины public function action_ChangeDiscipline() { $data['success'] = false; @@ -178,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); @@ -188,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)); } @@ -198,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/Controller/Admin/Index.php b/application/classes/Controller/Teacher/Admin/Index.php similarity index 100% rename from application/classes/Controller/Admin/Index.php rename to application/classes/Controller/Teacher/Admin/Index.php diff --git a/application/classes/Controller/Teacher/Map.php b/application/classes/Controller/Teacher/Map.php index 3fc87a5795191cdcebe7ef4d57fc352162943f13..89d4e06ac55510fbf6558a09f31f754e9c1cae9c 100644 --- a/application/classes/Controller/Teacher/Map.php +++ b/application/classes/Controller/Teacher/Map.php @@ -2,6 +2,37 @@ class Controller_Teacher_Map extends Controller_UserEnvi { + private $GradesList = array( + 1 => array( + 'ID' => '1', + 'Title' =>'РљСѓСЂСЃ 1' + ), + 2 => array( + 'ID' => '2', + 'Title' =>'РљСѓСЂСЃ 2' + ), + 3 => array( + 'ID' => '3', + 'Title' =>'РљСѓСЂСЃ 3' + ), + 4 => array( + 'ID' => '4', + 'Title' =>'РљСѓСЂСЃ 4' + ), + 5 => array( + 'ID' => '5', + 'Title' =>'РљСѓСЂСЃ 6' + ), + 6 => array( + 'ID' => '6', + 'Title' =>'Магистратура 1' + ), + 7=> array( + 'ID' => '7', + 'Title' =>'Магистратура 2' + ) + ); + public function action_show() { $twig = Twig::factory('teacher/map/show'); @@ -11,7 +42,7 @@ class Controller_Teacher_Map extends Controller_UserEnvi { if($map->count() == 0) throw HTTP_Exception::factory(404, "Учебная карта дисциплины СЃ ID $id РЅРµ найдена!"); - + $twig->User = $this->UserInfo; $twig->Map = $this->getMapInfo($map); $twig->Subject = $this->getSubjectInfo($db, $id); @@ -20,9 +51,14 @@ class Controller_Teacher_Map extends Controller_UserEnvi { public function action_create() { - $twig = Twig::factory('teacher/map/add'); + $twig = Twig::factory('teacher/map/create'); + $db = new Model_Teacher_Map; $twig->User = $this->UserInfo; - + $twig->SubjectsList = $this->GetSubjectsList($db); + $twig->GradesList = $this->GradesList; + + echo Debug::vars($this->UserInfo); + $this->response->body($twig); } @@ -36,54 +72,8 @@ class Controller_Teacher_Map extends Controller_UserEnvi { $twig->User = $this->UserInfo; $twig->Map = $this->getMapInfo($map); $twig->Discipline = $this->getSubjectInfo($db, $id); - $twig->SubjectsList = array( - 1 => array( - 'ID' => '1', - 'Title' =>'Математический анализ' - ), - 2 => array( - 'ID' => '2', - 'Title' =>'Дифференциальные уравнения' - ), - 3 => array( - 'ID' => '3', - 'Title' =>'Операционные системы' - ), - 4 => array( - 'ID' => '4', - 'Title' =>'Топология' - ) - ); - $twig->GradesList = array( - 1 => array( - 'ID' => '1', - 'Title' =>'РљСѓСЂСЃ 1' - ), - 2 => array( - 'ID' => '2', - 'Title' =>'РљСѓСЂСЃ 2' - ), - 3 => array( - 'ID' => '3', - 'Title' =>'РљСѓСЂСЃ 3' - ), - 4 => array( - 'ID' => '4', - 'Title' =>'РљСѓСЂСЃ 4' - ), - 5 => array( - 'ID' => '5', - 'Title' =>'РљСѓСЂСЃ 6' - ), - 6 => array( - 'ID' => '6', - 'Title' =>'Магистратура 1' - ), - 7=> array( - 'ID' => '7', - 'Title' =>'Магистратура 2' - ) - ); + $twig->SubjectsList = $this->GetSubjectsList($db); + $twig->GradesList = $this->GradesList; $this->response->body($twig); } @@ -168,5 +158,21 @@ class Controller_Teacher_Map extends Controller_UserEnvi { return $subject; } + + private function GetSubjectsList($db) + { + $list = $db->GetSubjectList(); + + $SubjectsList = array(); $i = 0; + + foreach ($list as $row) { + $i++; + $SubjectsList[$i]['ID'] = $row['ID']; + $SubjectsList[$i]['Title'] = $row['Name']; + $SubjectsList[$i]['Abbr'] = $row['Abbr']; + } + + return $SubjectsList; + } } \ No newline at end of file diff --git a/application/classes/Model/Teacher/Map.php b/application/classes/Model/Teacher/Map.php index fdcc2d6d0c4ab8330fe2325d118da42416b17a0e..ca0b6f89c0b72976cb7e6d8b0bbb3956dcd0b81f 100644 --- a/application/classes/Model/Teacher/Map.php +++ b/application/classes/Model/Teacher/Map.php @@ -92,9 +92,9 @@ class Model_Teacher_Map extends Model return DB::query(Database::SELECT, $sql)->execute(); } - public function AddDiscipline($teacherID, $Grade, $SubjectID, $ExamType, $LectionCount, $PracticeCount) + public function AddDiscipline($teacherID, $Grade, $SubjectID, $ExamType, $LectionCount, $PracticeCount, $DepartmentID) { - $sql = "SELECT `AddDiscipline`('$teacherID', '$Grade', '$SubjectID', '$ExamType', '$LectionCount', '$PracticeCount') AS `Num`;"; + $sql = "SELECT `AddDiscipline`('$teacherID', '$Grade', '$SubjectID', '$ExamType', '$LectionCount', '$PracticeCount', '$DepartmentID') AS `Num`;"; return DB::query(Database::SELECT, $sql)->execute(); } @@ -103,4 +103,22 @@ class Model_Teacher_Map extends Model $sql = "SELECT `ChangeDiscipline`('$teacherID', '$DisciplineID', '$ExamType', '$LectionCount', '$PracticeCount', '$Grade', '$SubjectID') AS `Num`;"; return DB::query(Database::SELECT, $sql)->execute(); } + + public function GetSubjectList() + { + $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/application/views/base.twig b/application/views/base.twig index 20c129b919fa24a3f7ea62fb4e086b929a4de92f..5991fbb6eee73dee7bbb1e699ebbd0986243476d 100644 --- a/application/views/base.twig +++ b/application/views/base.twig @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> @@ -7,7 +8,7 @@ {% block media %}{% endblock %} </head> <body> -<div id="wrap"> +<div id="wrap" class="page"> <div class="header_wrapper"> <div class="header"> diff --git a/application/views/settings.twig b/application/views/settings.twig index 4e338e5f6d08dc1acb542c4d16ff57be45e1c6d8..8a90fcf93bf162b1ec181a37209d78470f1fc285 100644 --- a/application/views/settings.twig +++ b/application/views/settings.twig @@ -10,7 +10,7 @@ {% block main_content %} <div class="pageProfileSettings"> <div class="settingsSection"> - <p>Логин может состоять РёР· латинских Р±СѓРєРІ, цифр Рё символа _</p> + <p class="help">Логин может состоять РёР· латинских Р±СѓРєРІ, цифр Рё символа _</p> <div class="itemBlock"> <div class="title">Логин:</div> <div class="field"><input type="text" class="inputLogin inputText" value="{{ User.Login }}"></div> @@ -35,7 +35,7 @@ <div class="title">Старый пароль:</div> <div class="field"><input type="text" class="inputCurrentPass inputText" value=""></div> </div> - <p>Пароль должен состоять РёР· 5 Рё более символов</p> + <p class="help">Пароль должен состоять РёР· 5 Рё более символов</p> <div class="itemBlock"> <div class="title">Новый пароль:</div> <div class="field"><input type="text" class="inputNewPass inputText" value=""></div> diff --git a/application/views/teacher/index.twig b/application/views/teacher/index.twig index ff434f32a3bd1491fcc99019184af8b523efb9c7..bdf702b7e0cc2df3b435ca5b98603475ef52b114 100644 --- a/application/views/teacher/index.twig +++ b/application/views/teacher/index.twig @@ -67,7 +67,8 @@ {% for subject in content.Subjects %} {{ idx.outputSubject(subject, HTML) }} {% else %} - Похоже, что Р’С‹ РЅРµ ведете РЅРё РѕРґРЅРѕРіРѕ предмета! + <p class="notification">Похоже, что Р’С‹ РЅРµ ведете РЅРё РѕРґРЅРѕРіРѕ предмета!</p> {% endfor %} + {{ HTML.anchor('map/create', 'Добавить РЈРљР”', {'title': 'Перейти Рє добавлению'})|raw }} </div> {% endblock %} \ No newline at end of file diff --git a/application/views/teacher/map/create.twig b/application/views/teacher/map/create.twig new file mode 100644 index 0000000000000000000000000000000000000000..d954d89f843c29fbe22f679985b99056162559c8 --- /dev/null +++ b/application/views/teacher/map/create.twig @@ -0,0 +1,55 @@ +{% extends 'base' %} + +{% block title %}Конструктор РЈРљР”{% endblock %} {# head -> title #} +{% block media %} {# head -> css, js #} + {{ HTML.script('media/js/functions.js')|raw }} + + {{ HTML.style('media/css/construct.css')|raw }} + {{ HTML.script('media/js/construct/create.js')|raw }} +{% endblock %} + +{% block main_top_title %}Добавление РЈРљР”{% endblock %} +{% block main_content %} + <div class="guide"> + <p>Обратите внимание, что добавление Учебной Карты Дисциплины (далее РЈРљР”) РїСЂРѕРёСЃС…РѕРґРёС‚ РІ 3 этапа:</p> + <ol> + <li>Добавление базовых параметров дисциплины: выбор предмета, формы контроля Рё РґСЂ.;</li> + <li>РџСЂРёРІСЏР·РєР° РіСЂСѓРїРї Рё студентов Рє данной РЈРљР”;</li> + <li>Создание структуры РЈРљР” (Модули Рё мероприятия).</li> + </ol> + </div> + + <div class="discipline"> + <div class="section"> + <select class="SelectSubject"> + <option value="0">Выберите предмет:</option> + {% for Subject in SubjectsList %} + <option value="{{ Subject.ID }}">{{ Subject.Title }}</option> + {% endfor %} + </select> + </div> + <div class="section"> + <select class="SelectDepartment"> + <option value="{{ User.DepartmentID }}">{{ User.DepartmentName }}</option> + </select> + <select class="SelectGrade"> + <option value="0">Выберите РєСѓСЂСЃ:</option> + {% for Grade in GradesList %} + <option value="{{ Grade.ID }}" >{{ Grade.Title }}</option> + {% endfor %} + </select> + </div> + <div class="section"> + Контроль: + <input name="ExamType" type="radio" value="exam"> Ркзамен + <input name="ExamType" type="radio" value="credit"> Зачет + </div> + <div class="section"> + <div class="item title">Лекционных часов:</div> + <div class="item"><input class="InputLectionCount" style="width: 50px;" value="0"></div> + <div class="item title">Практических часов:</div> + <div class="item"><input class="InputPracticeCount" style="width: 50px;" value="0"></div> + </div> + <button class="AddDiscipline">Добавить</button> + </div> +{% endblock %} diff --git a/application/views/teacher/map/edit.twig b/application/views/teacher/map/edit.twig index 289215a2e27bae0a063b859144f9676488067255..272537559e42742917df0bf9f141dd55136776ee 100644 --- a/application/views/teacher/map/edit.twig +++ b/application/views/teacher/map/edit.twig @@ -2,14 +2,22 @@ {% block title %}Конструктор РЈРљР”{% endblock %} {# head -> title #} {% block media %} {# head -> css, js #} + {{ HTML.script('media/js/functions.js')|raw }} + + {{ HTML.style('media/js/wnd/wnd.css')|raw }} + {{ HTML.script('media/js/wnd/wnd.js')|raw }} + {{ HTML.style('media/css/construct.css')|raw }} {{ HTML.script('media/js/construct/edit.js')|raw }} + {{ HTML.script('media/js/construct/attach.js')|raw }} {% endblock %} {% block main_top_title %}Редактирование РЈРљР”{% endblock %} {% block main_content %} <div class="discipline"> <p class="top_center_info">Учебная карта дисциплины РЅР° 1 семестр 2014 РіРѕРґР°</p> + <span class="AttachGroups">Прикрепить РіСЂСѓРїРїС‹</span> + <span class="AttachStudents">Прикрепить студентов</span> <div class="section"> <select class="SelectSubject"> <option value="0">Выберите предмет:</option> @@ -19,10 +27,10 @@ </select> </div> <div class="section"> - <select class="department"> - <option value="0">Выберите кафедру:</option> + <select class="SelectDepartment"> + <option value="{{ User.DepartmentID }}">{{ User.DepartmentName }}</option> </select> - <select class="Grade"> + <select class="SelectGrade"> <option value="0">Выберите РєСѓСЂСЃ:</option> {% for Grade in GradesList %} <option value="{{ Grade.ID }}" {% if Grade.ID == Discipline.GradeID %}selected{% endif %}>{{ Grade.Title }}</option> @@ -36,9 +44,9 @@ </div> <div class="section"> <div class="item title">Лекционных часов:</div> - <div class="item"><input class="inputLectionCount" style="width: 50px;" value="{{ Discipline.LectureHours }}"></div> + <div class="item"><input class="InputLectionCount" style="width: 50px;" value="{{ Discipline.LectureHours }}"></div> <div class="item title">Практических часов:</div> - <div class="item"><input class="inputPracticeCount" style="width: 50px;" value="{{ Discipline.PracticeHours }}"></div> + <div class="item"><input class="InputPracticeCount" style="width: 50px;" value="{{ Discipline.PracticeHours }}"></div> </div> <button class="ChangeDiscipline">Сохранить</button> </div> @@ -59,10 +67,10 @@ <div class="currentControl">{{ Map[i].CurrentControl }}</div> <div class="landmarkControl">{{ Map[i].LandmarkControl }}</div> <div class="actions"> - <div class="deleteModule delete"></div> - <div class="downModule down"></div> - <div class="upModule up"></div> - <div class="addSubModule add"></div> + <div class="deleteModule icon delete"></div> + <div class="downModule icon down"></div> + <div class="upModule icon up"></div> + <div class="addSubModule icon add"></div> </div> </div> <div class="subModules"> @@ -74,9 +82,9 @@ <div class="currentControl"><input type="text" class="inputCredit inputCurrentControl" value="{% if Map[i][j].SubmoduleControl == 'CurrentControl' %}{{ Map[i][j].MaxRate }}{% else %}0{% endif %}"></div> <div class="landmarkControl"><input type="text" class="inputCredit inputLandmarkControl" value="{% if Map[i][j].SubmoduleControl == 'LandmarkControl' %}{{ Map[i][j].MaxRate }}{% else %}0{% endif %}"></div> <div class="actions"> - <div class="deleteSubModule delete"></div> - <div class="downSubModule down"></div> - <div class="upSubModule up"></div> + <div class="deleteSubModule icon delete"></div> + <div class="downSubModule icon down"></div> + <div class="upSubModule icon up"></div> </div> </div> {% endfor %} diff --git a/application/views/teacher/setRate.twig b/application/views/teacher/setRate.twig index ffa83ca23ec3a17befd7bb3d2d30cab4f3a2ffe8..59663696e7de5f2942a213802ff08356ad04d651 100644 --- a/application/views/teacher/setRate.twig +++ b/application/views/teacher/setRate.twig @@ -2,6 +2,8 @@ {% block title %}Выставление баллов{% endblock %} {# head -> title #} {% block media %} {# head -> css, js #} + {{ HTML.script('media/js/functions.js')|raw }} + {{ HTML.style('media/css/setRate.css')|raw }} {{ HTML.script('media/js/setRate.js')|raw }} {% endblock %} diff --git a/db/DatabaseSample.sql b/db/DatabaseSample.sql index ca94934dedcac883c7827256e194c5a6aa508c0e..b140de937b225eac028138571961ddb2a822c023 100644 --- a/db/DatabaseSample.sql +++ b/db/DatabaseSample.sql @@ -54,8 +54,8 @@ INSERT INTO `accounts` (`ID`, `Login`, `Password`, `E-Mail`, `Type`, `Activation (7, NULL, NULL, NULL, 'teacher', 'code7', 1, NULL), (8, NULL, NULL, NULL, 'teacher', 'code8', 1, NULL), (9, NULL, NULL, NULL, 'student', 'code9', 1, NULL), -(10, NULL, NULL, NULL, 'student', 'code10', 1, NULL), -(11, NULL, NULL, NULL, 'student', 'code11', 1, NULL); +(10, NULL, NULL, NULL, 'student', 'code10', 1, NULL); + -- -------------------------------------------------------- @@ -368,8 +368,8 @@ CREATE TABLE IF NOT EXISTS `modules` ( -- INSERT INTO `modules` (`ID`, `Name`, `OrderNum`, `DisciplineID`) VALUES -(3, 'Модуль11', 2, 1), -(4, 'Модуль2', 1, 1), +(3, 'Теория пределов', 2, 1), +(4, 'Дифференцирование', 1, 1), (5, 'Модуль1', 1, 2), (6, 'Модуль1', 1, 3), (7, 'Модуль1', 1, 4), @@ -507,12 +507,12 @@ CREATE TABLE IF NOT EXISTS `students` ( -- INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstName`, `SecondName`) VALUES -(3, 1, 1, 'Student1', 'StudentFirst1', 'StudentLast1'), -(4, 1, 2, 'Student2', 'StudentFirst3', NULL), -(5, 2, 3, 'Student3', 'StudentFirst3', 'StudentLast3'), -(6, 2, 4, 'Student4', 'StudentFirst4', NULL), -(7, 1, 9, 'seg', 'aeg', 'seg'), -(9, 3, 11, 'af', 'dt', 'fnd'); +(3, 1, 1, 'Сыроежкин', 'Сергей', 'Александрович'), +(4, 1, 2, 'Селезнева', 'Алиса', 'Сергеевна'), +(5, 2, 3, 'Камеррер', 'Максим', 'Владимирович'), +(6, 2, 4, 'Пен', 'Питер', NULL), +(7, 1, 9, 'Наина', 'Киевна', 'Горыныч'), +(9, 3, 10, 'Бэггинс', 'Бильбо', NULL); -- -------------------------------------------------------- @@ -560,9 +560,9 @@ CREATE TABLE IF NOT EXISTS `subjects` ( INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES (1, 'Математический анализ', 'Матан'), -(2, 'Дифференциальные уравнения', 'Дифф. СѓСЂ-СЏ'), +(2, 'Конституционное право', 'РљРџ'), (3, 'Операционные системы', 'РћРЎ'), -(4, 'Топология', NULL); +(4, 'Рстория', 'Рстория'); -- -------------------------------------------------------- @@ -588,13 +588,13 @@ CREATE TABLE IF NOT EXISTS `submodules` ( -- INSERT INTO `submodules` (`ID`, `ModuleID`, `MaxRate`, `OrderNum`, `Name`, `Description`, `Type`) VALUES -(5, 3, 12, 2, 'РєСЂ1', NULL, 'LandmarkControl'), -(6, 3, 20, 1, 'РљРѕР».', '', 'CurrentControl'), +(5, 3, 12, 2, 'Контрольная работа', NULL, 'LandmarkControl'), +(6, 3, 20, 1, 'Коллоквиум', '', 'CurrentControl'), (7, 4, 20, 1, 'РґР·', '', 'CurrentControl'), (9, 6, 20, 1, 'РґР·', '', 'CurrentControl'), -(10, 6, 10, 2, 'РєРѕ', '', 'CurrentControl'), -(11, 7, 20, 1, 'РљРѕР»', '', 'CurrentControl'), -(12, 7, 15, 2, 'РРєР·', '', 'CurrentControl'); +(10, 6, 10, 2, 'Тест', '', 'CurrentControl'), +(11, 7, 20, 1, 'Коллоквиум', '', 'CurrentControl'), +(12, 7, 15, 2, 'Активность РЅР° занятиях', '', 'CurrentControl'); -- -------------------------------------------------------- @@ -620,10 +620,10 @@ CREATE TABLE IF NOT EXISTS `teachers` ( -- INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `Degree`, `FacultyID`, `AccountID`) VALUES -(3, 'Teacher1', 'TeacherFirst1', NULL, NULL, 1, 5), -(4, 'Teacher2', 'TeacherFirst2', 'TeacherSecond2', NULL, 1, 6), -(5, ' Teacher3', 'TeacherFirst3', 'TeacherSecond3', NULL, 2, 7), -(6, 'Teacher4', 'TeacherFirst4', NULL, NULL, 1, 8); +(3, 'Менделеев', 'Дмитрий', 'Рванович', NULL, 1, 5), +(4, 'Лермонтов', 'Михаил', 'Юрьевич', NULL, 1, 6), +(5, 'Крузенштерн', 'Рван', 'Федорович', NULL, 2, 7), +(6, 'Лобачевский', 'Николай', 'Рванович', NULL, 1, 8); -- -- Ограничения внешнего ключа сохраненных таблиц diff --git a/db/NewEmpty.sql b/db/NewEmpty.sql new file mode 100644 index 0000000000000000000000000000000000000000..068aa054dddd2fd7e6db98e55099e05c413559f8 --- /dev/null +++ b/db/NewEmpty.sql @@ -0,0 +1,669 @@ +-- phpMyAdmin SQL Dump +-- version 4.0.10 +-- http://www.phpmyadmin.net +-- +-- РҐРѕСЃС‚: 127.0.0.1:3306 +-- Время создания: РђРІРі 20 2014 Рі., 23:32 +-- Версия сервера: 5.5.37-log +-- Версия PHP: 5.3.28 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- База данных: `Sample3` +-- + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `accounts` +-- + +CREATE TABLE IF NOT EXISTS `accounts` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Login` varchar(50) DEFAULT NULL, + `Password` varchar(64) DEFAULT NULL, + `E-Mail` varchar(255) DEFAULT NULL, + `Type` enum('student','teacher') NOT NULL, + `ActivationCode` varchar(40) DEFAULT NULL, + `isEnabled` tinyint(1) NOT NULL DEFAULT '1', + `UserAgent` text, + PRIMARY KEY (`ID`), + UNIQUE KEY `E-Mail` (`E-Mail`), + UNIQUE KEY `Login` (`Login`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; + +-- +-- Дамп данных таблицы `accounts` +-- + +INSERT INTO `accounts` (`ID`, `Login`, `Password`, `E-Mail`, `Type`, `ActivationCode`, `isEnabled`, `UserAgent`) VALUES +(6, 'Abbadon', 'ff6cfea689c242780b084583790e39f5eb03bb91', 'solidovic@gmail.com', 'teacher', NULL, 1, NULL), +(7, NULL, NULL, NULL, 'student', 'code2', 1, NULL); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `attending_groups` +-- + +CREATE TABLE IF NOT EXISTS `attending_groups` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(50) DEFAULT NULL, + `SemesterID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `SemesterID` (`SemesterID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `attending_groups_bases` +-- + +CREATE TABLE IF NOT EXISTS `attending_groups_bases` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `AttendingGroupID` int(11) NOT NULL, + `StudyGroupID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `StudyGroupID` (`StudyGroupID`), + KEY `AttendingGroupID` (`AttendingGroupID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `attending_groups_pool` +-- + +CREATE TABLE IF NOT EXISTS `attending_groups_pool` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `AttendingGroupID` int(11) NOT NULL, + `StudentID` int(11) NOT NULL, + `Type` enum('attach','detach') NOT NULL, + PRIMARY KEY (`ID`), + KEY `AttendingGroupID` (`AttendingGroupID`), + KEY `StudentID` (`StudentID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `classrooms` +-- + +CREATE TABLE IF NOT EXISTS `classrooms` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(50) NOT NULL, + `Capacity` int(11) DEFAULT NULL, + `FacultyID` int(11) NOT NULL, + `Export` enum('true','false') NOT NULL DEFAULT 'false', + PRIMARY KEY (`ID`), + KEY `FacultyID` (`FacultyID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `classroom_sets` +-- + +CREATE TABLE IF NOT EXISTS `classroom_sets` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(50) DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `classroom_sets_pool` +-- + +CREATE TABLE IF NOT EXISTS `classroom_sets_pool` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `ClassroomSetID` int(11) NOT NULL, + `ClassroomID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `ClassroomID` (`ClassroomID`), + KEY `ClassroomSetID` (`ClassroomSetID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `degrees` +-- + +CREATE TABLE IF NOT EXISTS `degrees` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(200) NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ; + +-- +-- Дамп данных таблицы `degrees` +-- + +INSERT INTO `degrees` (`ID`, `Name`) VALUES +(1, 'Аспирант'), +(2, 'Ассистент'), +(3, 'Ведущий научный сотрудник'), +(4, 'Главный научный сотрудник'), +(5, 'Докторант'), +(6, 'Доцент'), +(7, 'Младший научный сотрудник'), +(8, 'Научный сотрудник'), +(9, 'Преподаватель'), +(10, 'Профессор'), +(11, 'Старший преподаватель'), +(12, 'Стажер'), +(13, 'Старший научный сотрудник'), +(14, 'Доцент'); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `departments` +-- + +CREATE TABLE IF NOT EXISTS `departments` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(200) NOT NULL, + `FacultyID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `FacultyID` (`FacultyID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; + +-- +-- Дамп данных таблицы `departments` +-- + +INSERT INTO `departments` (`ID`, `Name`, `FacultyID`) VALUES +(1, 'Кафедра математического анализа', 1), +(2, 'Кафедра магического анализа', 1); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `disciplines` +-- + +CREATE TABLE IF NOT EXISTS `disciplines` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Grade` int(11) NOT NULL, + `SubjectID` int(11) NOT NULL, + `AuthorID` int(11) NOT NULL, + `ExamType` enum('exam','credit') NOT NULL, + `SemesterID` int(11) NOT NULL, + `PracticeCount` int(11) NOT NULL DEFAULT '0', + `LectionCount` int(11) NOT NULL DEFAULT '0', + `DepartmentID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `SubjectID` (`SubjectID`), + KEY `TeacherID` (`AuthorID`), + KEY `SemesterID` (`SemesterID`), + KEY `DepartmentID` (`DepartmentID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `disciplines_teachers` +-- + +CREATE TABLE IF NOT EXISTS `disciplines_teachers` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `DisciplineID` int(11) NOT NULL, + `TeacherID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `DisciplineID` (`DisciplineID`), + KEY `AccountID` (`TeacherID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `faculties` +-- + +CREATE TABLE IF NOT EXISTS `faculties` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(100) NOT NULL, + `Abbr` varchar(20) NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; + +-- +-- Дамп данных таблицы `faculties` +-- + +INSERT INTO `faculties` (`ID`, `Name`, `Abbr`) VALUES +(1, 'Математика Механика Рё РљРќ', 'МехМат'), +(2, 'Юридический факультет', 'ЮрФак'); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `general_settings` +-- + +CREATE TABLE IF NOT EXISTS `general_settings` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Val` int(11) DEFAULT NULL, + `ValS` varchar(300) DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; + +-- +-- Дамп данных таблицы `general_settings` +-- + +INSERT INTO `general_settings` (`ID`, `Val`, `ValS`) VALUES +(1, 1, NULL), +(2, NULL, 'hfkshfkjdshkjfsdj'); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `lessons` +-- + +CREATE TABLE IF NOT EXISTS `lessons` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `AttendingGroupID` int(11) NOT NULL, + `DisciplineTeacherID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `DisciplineID` (`DisciplineTeacherID`), + KEY `AttendingGroupID` (`AttendingGroupID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `logs` +-- + +CREATE TABLE IF NOT EXISTS `logs` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `RatingTableID` int(11) NOT NULL, + `AccountID` int(11) NOT NULL, + `OldValue` int(11) NOT NULL, + `NewValue` int(11) NOT NULL, + `Date` datetime NOT NULL, + PRIMARY KEY (`ID`), + KEY `RatingTableID` (`RatingTableID`), + KEY `AccountID` (`AccountID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `modules` +-- + +CREATE TABLE IF NOT EXISTS `modules` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(50) NOT NULL, + `OrderNum` int(11) NOT NULL, + `DisciplineID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `OrderNum` (`OrderNum`,`DisciplineID`), + KEY `DisciplineID` (`DisciplineID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `rating_table` +-- + +CREATE TABLE IF NOT EXISTS `rating_table` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `StudentID` int(11) NOT NULL, + `TeacherID` int(11) NOT NULL, + `SubmoduleID` int(11) NOT NULL, + `Rate` int(11) NOT NULL, + `Date` date NOT NULL, + PRIMARY KEY (`ID`), + KEY `StudentID` (`StudentID`), + KEY `SubmoduleID` (`SubmoduleID`), + KEY `TeacherID` (`TeacherID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `requests` +-- + +CREATE TABLE IF NOT EXISTS `requests` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `AccountID` int(11) DEFAULT NULL, + `Information` text NOT NULL, + `Date` date NOT NULL, + `Status` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `AccountID` (`AccountID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `schedule` +-- + +CREATE TABLE IF NOT EXISTS `schedule` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `LessonID` int(11) NOT NULL, + `Day` int(11) NOT NULL, + `LessonTimeID` int(11) NOT NULL, + `ClassroomSetID` int(11) NOT NULL, + `SubgroupCount` int(11) NOT NULL, + `SubgroupNum` int(11) NOT NULL, + `WeekSplit` enum('full','up','down') NOT NULL DEFAULT 'full', + `LesType` int(11) NOT NULL, + `Notice` varchar(30) NOT NULL, + PRIMARY KEY (`ID`), + KEY `LessonID` (`LessonID`), + KEY `ClassroomSetID` (`ClassroomSetID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `semesters` +-- + +CREATE TABLE IF NOT EXISTS `semesters` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Year` int(11) NOT NULL, + `Num` int(11) NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Дамп данных таблицы `semesters` +-- + +INSERT INTO `semesters` (`ID`, `Year`, `Num`) VALUES +(1, 2014, 1); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `specializations` +-- + +CREATE TABLE IF NOT EXISTS `specializations` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(50) NOT NULL, + `Abbr` varchar(20) NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; + +-- +-- Дамп данных таблицы `specializations` +-- + +INSERT INTO `specializations` (`ID`, `Name`, `Abbr`) VALUES +(1, 'Прикладная математика Рё информатика', 'РџРњРёР'), +(2, 'Рнформационные технологии', 'РРў'), +(3, 'Математика', 'Матем'), +(4, 'Механика', 'Механика'); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `students` +-- + +CREATE TABLE IF NOT EXISTS `students` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `StudyGroupID` int(11) NOT NULL, + `AccountID` int(11) NOT NULL, + `LastName` varchar(30) NOT NULL, + `FirstName` varchar(30) NOT NULL, + `SecondName` varchar(30) DEFAULT NULL, + PRIMARY KEY (`ID`), + KEY `StudyGroupID` (`StudyGroupID`), + KEY `AccountID` (`AccountID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Дамп данных таблицы `students` +-- + +INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstName`, `SecondName`) VALUES +(1, 1, 7, 'Рванов', 'Рван', 'Рванович'); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `study_groups` +-- + +CREATE TABLE IF NOT EXISTS `study_groups` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Grade` int(11) NOT NULL, + `GroupNum` int(11) NOT NULL, + `SpecializationID` int(11) NOT NULL, + `FacultyID` int(11) NOT NULL, + `Name` varchar(50) DEFAULT NULL, + PRIMARY KEY (`ID`), + KEY `SpecializtionID` (`SpecializationID`), + KEY `FacultyID` (`FacultyID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Дамп данных таблицы `study_groups` +-- + +INSERT INTO `study_groups` (`ID`, `Grade`, `GroupNum`, `SpecializationID`, `FacultyID`, `Name`) VALUES +(1, 1, 1, 1, 1, NULL); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `subjects` +-- + +CREATE TABLE IF NOT EXISTS `subjects` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Name` varchar(50) NOT NULL, + `Abbr` varchar(20) DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; + +-- +-- Дамп данных таблицы `subjects` +-- + +INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES +(1, 'Математический анализ', 'Матан'), +(2, 'Конституционное право', 'РљРџ'), +(3, 'Операционные системы', 'РћРЎ'), +(4, 'Рстория', 'Рстория'); + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `submodules` +-- + +CREATE TABLE IF NOT EXISTS `submodules` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `ModuleID` int(11) NOT NULL, + `MaxRate` int(11) NOT NULL, + `OrderNum` int(11) NOT NULL, + `Name` varchar(50) NOT NULL, + `Description` varchar(200) DEFAULT NULL, + `Type` enum('CurrentControl','LandmarkControl') NOT NULL DEFAULT 'CurrentControl', + PRIMARY KEY (`ID`), + UNIQUE KEY `ModuleID_2` (`ModuleID`,`OrderNum`), + KEY `ModuleID` (`ModuleID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `teachers` +-- + +CREATE TABLE IF NOT EXISTS `teachers` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `LastName` varchar(30) NOT NULL, + `FirstName` varchar(30) NOT NULL, + `SecondName` varchar(30) DEFAULT NULL, + `DegreeID` int(11) NOT NULL, + `DepartmentID` int(11) NOT NULL, + `AccountID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `FacultyID` (`DepartmentID`), + KEY `AccountID` (`AccountID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Дамп данных таблицы `teachers` +-- + +INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `DegreeID`, `DepartmentID`, `AccountID`) VALUES +(1, 'Колобок', 'Фазиль', 'Евреивич', 9, 1, 6); + +-- +-- Ограничения внешнего ключа сохраненных таблиц +-- + +-- +-- Ограничения внешнего ключа таблицы `attending_groups` +-- +ALTER TABLE `attending_groups` + ADD CONSTRAINT `attending_groups_ibfk_1` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `attending_groups_bases` +-- +ALTER TABLE `attending_groups_bases` + ADD CONSTRAINT `attending_groups_bases_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), + ADD CONSTRAINT `attending_groups_bases_ibfk_2` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `attending_groups_pool` +-- +ALTER TABLE `attending_groups_pool` + ADD CONSTRAINT `attending_groups_pool_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), + ADD CONSTRAINT `attending_groups_pool_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `classrooms` +-- +ALTER TABLE `classrooms` + ADD CONSTRAINT `classrooms_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `classroom_sets_pool` +-- +ALTER TABLE `classroom_sets_pool` + ADD CONSTRAINT `classroom_sets_pool_ibfk_1` FOREIGN KEY (`ClassroomID`) REFERENCES `classrooms` (`ID`), + ADD CONSTRAINT `classroom_sets_pool_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `departments` +-- +ALTER TABLE `departments` + ADD CONSTRAINT `departments_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `disciplines` +-- +ALTER TABLE `disciplines` + ADD CONSTRAINT `disciplines_ibfk_2` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`), + ADD CONSTRAINT `disciplines_ibfk_4` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`), + ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`), + ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`DepartmentID`) REFERENCES `departments` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `disciplines_teachers` +-- +ALTER TABLE `disciplines_teachers` + ADD CONSTRAINT `disciplines_teachers_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`), + ADD CONSTRAINT `disciplines_teachers_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `lessons` +-- +ALTER TABLE `lessons` + ADD CONSTRAINT `lessons_ibfk_6` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), + ADD CONSTRAINT `lessons_ibfk_7` FOREIGN KEY (`DisciplineTeacherID`) REFERENCES `disciplines_teachers` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `logs` +-- +ALTER TABLE `logs` + ADD CONSTRAINT `logs_ibfk_1` FOREIGN KEY (`RatingTableID`) REFERENCES `rating_table` (`ID`), + ADD CONSTRAINT `logs_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `modules` +-- +ALTER TABLE `modules` + ADD CONSTRAINT `modules_ibfk_2` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `rating_table` +-- +ALTER TABLE `rating_table` + ADD CONSTRAINT `rating_table_ibfk_1` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`), + ADD CONSTRAINT `rating_table_ibfk_3` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`), + ADD CONSTRAINT `rating_table_ibfk_4` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `requests` +-- +ALTER TABLE `requests` + ADD CONSTRAINT `requests_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL; + +-- +-- Ограничения внешнего ключа таблицы `schedule` +-- +ALTER TABLE `schedule` + ADD CONSTRAINT `schedule_ibfk_1` FOREIGN KEY (`LessonID`) REFERENCES `lessons` (`ID`), + ADD CONSTRAINT `schedule_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `students` +-- +ALTER TABLE `students` + ADD CONSTRAINT `students_ibfk_1` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`), + ADD CONSTRAINT `students_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `study_groups` +-- +ALTER TABLE `study_groups` + ADD CONSTRAINT `study_groups_ibfk_2` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`), + ADD CONSTRAINT `study_groups_ibfk_4` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `submodules` +-- +ALTER TABLE `submodules` + ADD CONSTRAINT `submodules_ibfk_1` FOREIGN KEY (`ModuleID`) REFERENCES `modules` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `teachers` +-- +ALTER TABLE `teachers` + ADD CONSTRAINT `teachers_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`), + ADD CONSTRAINT `teachers_ibfk_3` FOREIGN KEY (`DepartmentID`) REFERENCES `departments` (`ID`); + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 5a414435b21a6500dec806e24dc3df6e39f6b563..7007e716d48dbccadc6f9c9b04b5877226692d76 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -55,6 +55,52 @@ BEGIN END // +DROP PROCEDURE IF EXISTS GetSubjectList;// +CREATE PROCEDURE `GetSubjectList`( ) + NO SQL +BEGIN + SELECT subjects.ID, + subjects.Name, + subjects.Abbr + FROM `subjects` + ORDER BY subjects.Name ASC; +END // + + + +DROP PROCEDURE IF EXISTS GetStudyGroups;// +CREATE PROCEDURE `GetStudyGroups`( IN `Grade` INT, + IN `FacultyID` INT ) + NO SQL +BEGIN + SELECT study_groups.ID, + study_groups.GroupNum, + specializations.ID AS 'SpecID', + specializations.Name AS 'SpecName', + specializations.Abbr AS 'SpecAbbr' + FROM `study_groups` + INNER JOIN `specializations` ON specializations.ID = study_groups.SpecializationID + WHERE study_groups.Grade = Grade AND study_groups.FacultyID = FacultyID; + +END // + + +DROP PROCEDURE IF EXISTS GetStudentsByStudyGroups;// +CREATE PROCEDURE `GetStudentsByStudyGroups`( IN `StudyGroupID` INT ) + NO SQL +BEGIN + SELECT students.ID AS 'StudentID', + students.LastName, + students.FirstName, + students.SecondName + FROM `students` + WHERE students.StudyGroupID = StudyGroupID; + +END // + + + + -- ====== Работа СЃ аккаунтами ====== @@ -143,12 +189,16 @@ BEGIN teachers.LastName, teachers.FirstName, teachers.SecondName, - teachers.Degree, + degrees.Name AS 'Degree', + departments.ID AS 'DepartmentID', + departments.Name AS 'DepartmentName', faculties.ID AS 'FacultyID', faculties.Name AS 'FacultyName', faculties.Abbr AS 'FacultyAbbreviation' FROM `teachers` - INNER JOIN `faculties` ON teachers.FacultyID = faculties.ID + INNER JOIN `departments` ON departments.ID = teachers.DepartmentID + INNER JOIN `faculties` ON departments.FacultyID = faculties.ID + INNER JOIN `degrees` ON degrees.ID = teachers.DegreeID WHERE teachers.AccountID = UserID; END IF; @@ -306,7 +356,7 @@ BEGIN SELECT accounts.ID INTO curID FROM `accounts` - WHERE accounts.Code = Code; + WHERE accounts.ActivationCode = Code; INSERT INTO `students` (students.StudyGroupID, students.AccountID, students.LastName, students.FirstName, students.SecondName) VALUES (StudyGroupID, curID, Last, First, Second); @@ -325,13 +375,32 @@ DROP FUNCTION IF EXISTS CreateTeacher; // CREATE FUNCTION `CreateTeacher`( `Last` VARCHAR(30) CHARSET utf8, `First` VARCHAR(30) CHARSET utf8, `Second` VARCHAR(30) CHARSET utf8, - `Degree` VARCHAR(50) CHARSET utf8, - `FacultyID` INT, + `DegreeID` INT, + `DepartmentID` INT, `Code` VARCHAR(40) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN - DECLARE curID, StudyGroupID INT; + DECLARE curID, StudyGroupID, checker INT; + + SELECT departments.ID + INTO checker + FROM `departments` + WHERE departments.ID = DepartmentID + LIMIT 1; + IF checker IS NULL OR checker <= 0 THEN + RETURN -1; + END IF; + + SELECT degrees.ID + INTO checker + FROM `degrees` + WHERE degrees.ID = DegreeID + LIMIT 1; + IF checker IS NULL OR checker <= 0 THEN + RETURN -1; + END IF; + IF Code IS NOT NULL THEN @@ -340,15 +409,15 @@ BEGIN SELECT accounts.ID INTO curID FROM `accounts` - WHERE accounts.Code = Code; + WHERE accounts.ActivationCode = Code; INSERT INTO `teachers` ( teachers.AccountID, teachers.LastName, teachers.FirstName, teachers.SecondName, - teachers.Degree, - teachers.FacultyID) - VALUES (curID, Last, First, Second, Degree, FacultyID); + teachers.DegreeID, + teachers.DepartmentID) + VALUES (curID, Last, First, Second, DegreeID, DepartmentID); RETURN 0; END IF; @@ -429,15 +498,10 @@ BEGIN subjects.ID AS 'SubjectID', subjects.Name AS 'SubjectName', disciplines.ExamType, - teachers.LastName AS 'TeacherLast', - teachers.FirstName AS 'TeacherFirst', - teachers.SecondName AS 'TeacherSecond', - teachers.Degree AS 'TeacherDegree', GetRateForDisc(StudentID, `disciplines`.`ID` ) AS 'Rate', GetMaxRateForDisc(StudentID, `disciplines`.`ID` ) AS 'MaxCurrentRate' FROM `disciplines` INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID - INNER JOIN `teachers` ON disciplines.AuthorID = teachers.ID CROSS JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID AND @@ -516,7 +580,6 @@ BEGIN SELECT disciplines.AuthorID, disciplines.Grade AS 'DisciplineGrade', disciplines.ExamType, - disciplines.Type AS 'LessonType', disciplines.LectionCount, disciplines.PracticeCount, disciplines.SemesterID, @@ -540,13 +603,18 @@ BEGIN teachers.LastName, teachers.FirstName, teachers.SecondName, - teachers.Degree, + degrees.ID AS 'DegreeID', + degrees.Name AS 'Degree', + departments.ID AS 'DepartmentID', + departments.Name AS 'DepartmentName', faculties.ID AS 'FacultyID', faculties.Name AS 'FacultyName', faculties.Abbr AS 'FacultyAbbreviation' FROM `disciplines_teachers` INNER JOIN `teachers` ON teachers.ID = disciplines_teachers.TeacherID - INNER JOIN `faculties` ON teachers.FacultyID = faculties.ID + INNER JOIN `departments` ON departments.ID = teachers.DepartmentID + INNER JOIN `faculties` ON departments.FacultyID = faculties.ID + INNER JOIN `degrees` ON degrees.ID = teachers.DegreeID WHERE disciplines_teachers.DisciplineID = DiscID; END // @@ -961,23 +1029,44 @@ CREATE FUNCTION `AddDiscipline`( `TeacherID` INT, `SubjectID` INT, `ExamType` VARCHAR(30), `LectionCount` INT, - `PracticeCount` INT + `PracticeCount` INT, + `DepartmentID` INT ) RETURNS int(11) NO SQL BEGIN DECLARE semID, checker INT; SET semID = GetCurSemesterID(); + + SELECT departments.ID + INTO checker + FROM `departments` + WHERE departments.ID = DepartmentID + LIMIT 1; + IF checker IS NULL OR checker <= 0 THEN + RETURN -1; + END IF; + SELECT subjects.ID + INTO checker + FROM `subjects` + WHERE subjects.ID = SubjectID + LIMIT 1; + IF checker IS NULL OR checker <= 0 THEN + RETURN -1; + END IF; + + INSERT INTO `disciplines` ( disciplines.AuthorID, disciplines.Grade, disciplines.SubjectID, disciplines.ExamType, disciplines.LectionCount, disciplines.PracticeCount, - disciplines.SemesterID ) - VALUES ( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID ); + disciplines.SemesterID, + disciplines.DepartmentID ) + VALUES ( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID, DepartmentID ); -- RETURN ( SELECT disciplines.ID -- FROM `disciplines` diff --git a/media/css/base.css b/media/css/base.css index f0b3653ccb39a38e8bf2fff28958d88729a1536a..011faa2d81e865e6b530c41f6b5558113074bb92 100644 --- a/media/css/base.css +++ b/media/css/base.css @@ -1,9 +1,15 @@ *{ - font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans;; + font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans; + margin: 0; + padding: 0; + border: 0; +} +/* Для корректного отображения РѕРєРѕРЅ */ +html, +body { + height: 100%; } body { - padding: 0; - margin: 0; background-color: #f1f1f1; } div { @@ -90,8 +96,7 @@ a:hover { .main_content { width: 100%; position: relative; - padding-top: 25px; - padding-bottom: 20px; + padding: 25px 0; } @@ -128,12 +133,6 @@ html>body #wrap height: auto; min-height: 100%; } -html,body -{ - height: 100%; - padding:0; - margin:0; -} #footer_fixBug { height: 30px; } @@ -156,8 +155,12 @@ html,body width: 100%; } -/*------------------------------------------------------------------------------------*/ - +/*----------------------Обшие--------------------------*/ +/* Оповещение */ +p.notification{ + margin: 10px 0; + text-align: center; font-size: 16px; +} diff --git a/media/css/construct.css b/media/css/construct.css index dca75a90403f30d9735b925a675131973c11f1f0..36cbf15b070b6293f9147339700de1b3482a7a42 100644 --- a/media/css/construct.css +++ b/media/css/construct.css @@ -1,14 +1,21 @@ -.TopRightMessage { - display: none; - position: absolute; - top: 0; - right: 0; - max-width: 500px; - padding: 7px 18px; - font-size: 15px; - color: #ffffff; - border-radius: 0 0 0 5px; +/* -- Руководство -------------------- */ +.guide { + background: #f3ece3; + padding: 10px 15px; + color: #363636; } + .guide p { + margin-top: 7px; + font-size: 17px; + } + .guide ol { + list-style-type: decimal; + padding: 5px 25px; + } + .guide ol li { + margin: 15px 0px 15px 20px; + font-size: 15px; + } .discipline { margin: 0px 25px; @@ -80,42 +87,33 @@ float: right; display: inline; } - .actions .up { - background: url(icons/up.png) no-repeat center center; + .actions .icon { float: right; display: inline; width: 20px; height: 20px; - margin-left: 10px; + margin-left: 15px; cursor: pointer; } + .actions .up { + background: url(icons/up.png) no-repeat center center; + } .actions .down { background: url(icons/down.png) no-repeat center center; - float: right; - display: inline; - width: 20px; - height: 20px; - margin-left: 10px; - cursor: pointer; } .actions .add { /* РљРЅРѕРїРєР° добавления мероприятия */ background: url(icons/add.png) no-repeat center center; - float: right; - display: inline; - width: 20px; - height: 20px; - margin-left: 10px; - cursor: pointer; } .actions .delete { background: url(icons/delete.png) no-repeat center center; - float: right; - display: inline; - width: 20px; - height: 20px; - margin-left: 25px; - cursor: pointer; } + .confirmDeleteDiv { + width: 160px; + float: right; + display: inline; + text-align: right; + } + .inputName { border: 0; width: 240px; diff --git a/media/css/settings.css b/media/css/settings.css index 8e453053cf6e6d2644cf8f8d1a746e6208fbd85b..476868726d1f52af9bdb38638c11a9d38a0aa920 100644 --- a/media/css/settings.css +++ b/media/css/settings.css @@ -9,7 +9,8 @@ width: 500px; } /* Подсказка */ - .settingsSection p{ + .settingsSection .help{ + margin: 10px 0; text-align: center; font-size: 15px; } .settingsSection .itemBlock { diff --git a/media/js/construct/attach.js b/media/js/construct/attach.js new file mode 100644 index 0000000000000000000000000000000000000000..d43933f423e5874566560515f3ffdd55d1bf1c86 --- /dev/null +++ b/media/js/construct/attach.js @@ -0,0 +1,16 @@ +var $ = jQuery; +$(function() { + var URL = (window.location.href).split('/'); + var DisciplineID = URL[URL.length - 1] + + // Открыть РѕРєРЅРѕ 'Прикрепить РіСЂСѓРїРїС‹' + $('.AttachGroups').click(function(){ + wnd.open({title: 'Тестовое eeeeeРѕРєРЅРѕ', content: '<p>Theew text</p>', width: 700}); + }); + + // Открыть РѕРєРЅРѕ 'Прикрепить студентов' + $('.AttachStudents').click(function(){ + wnd.open({title: 'Тестовое eeeeeРѕРєРЅРѕ', content: '<p>Theew text</p>', width: 700}); + }); + +}) \ No newline at end of file diff --git a/media/js/construct/create.js b/media/js/construct/create.js new file mode 100644 index 0000000000000000000000000000000000000000..e7e7f882be3dc2069d141be7f38312eaff6cb8f7 --- /dev/null +++ b/media/js/construct/create.js @@ -0,0 +1,26 @@ +var $ = jQuery; +$(function() { + + // Рзменения базовых параметров дисциплины + $(".AddDiscipline").click(function(){ + $.post( + '/~dev_rating/handler/map/AddDiscipline', + { + 'Grade': $('.SelectGrade').val(), + 'SubjectID': $('.SelectSubject').val(), + 'ExamType': $('input:radio[name=ExamType]:checked').val(), + 'LectionCount': $('.InputLectionCount').val(), + 'PracticeCount': $('.InputPracticeCount').val(), + 'DepartmentID': $('.SelectDepartment').val() + }, + function(data){ + data = $.parseJSON(data); + if(data.success === true) { + alert('РћРє, AddDiscipline'); + setTimeout('location.replace("/~dev_rating/map/'+data.DisciplineID+'")',5000); + } else alert('Error, AddDiscipline'); + } + ); + }); + +}); \ No newline at end of file diff --git a/media/js/construct/edit.js b/media/js/construct/edit.js index 4a4386447a1c15dae52935b4bc9769beb47b2027..3ab1ad1d9d7b53fa256b72b9576256ef98392e6c 100644 --- a/media/js/construct/edit.js +++ b/media/js/construct/edit.js @@ -3,11 +3,6 @@ $(function() { var URL = (window.location.href).split('/'); var DisciplineID = URL[URL.length - 1] - // Проверка РЅР° число, причем NaN РЅРµ помеха - function isNum(v) { - return typeof v === 'number' && isFinite(v); - } - // Шаблон мероприятия function GetSubModuleTmp(){ return '\ @@ -18,9 +13,9 @@ $(function() { <div class="currentControl"><input type="text" class="inputCredit inputCurrentControl" value="0"></div>\ <div class="landmarkControl"><input type="text" class="inputCredit inputLandmarkControl" value="0"></div>\ <div class="actions">\ - <div class="deleteSubModule delete"></div>\ - <div class="downSubModule down"></div>\ - <div class="upSubModule up"></div>\ + <div class="deleteSubModule icon delete"></div>\ + <div class="downSubModule icon down"></div>\ + <div class="upSubModule icon up"></div>\ </div>\ </div>\ '; @@ -37,10 +32,10 @@ $(function() { <div class="currentControl">0</div>\ <div class="landmarkControl">0</div>\ <div class="actions">\ - <div class="deleteModule delete"></div>\ - <div class="downModule down"></div>\ - <div class="upModule up"></div>\ - <div class="addSubModule add"></div>\ + <div class="deleteModule icon delete"></div>\ + <div class="downModule icon down"></div>\ + <div class="upModule icon up"></div>\ + <div class="addSubModule icon add"></div>\ </div>\ </div>\ <div class="subModules">\ @@ -172,20 +167,16 @@ $(function() { // Рзменения базовых параметров дисциплины $(".ChangeDiscipline").click(function(){ - //alert(DisciplineID); - //alert($('.Grade').val()); - //alert($('input:radio[name=ExamType]:checked').val()); - //alert($('.inputLectionCount').val()); - //alert($('.inputPracticeCount').val()); $.post( '/~dev_rating/handler/map/ChangeDiscipline', { 'DisciplineID': DisciplineID, - 'Grade': $('.Grade').val(), + 'Grade': $('.SelectGrade').val(), 'SubjectID': $('.SelectSubject').val(), 'ExamType': $('input:radio[name=ExamType]:checked').val(), - 'LectionCount': $('.inputLectionCount').val(), - 'PracticeCount': $('.inputPracticeCount').val() + 'LectionCount': $('.InputLectionCount').val(), + 'PracticeCount': $('.InputPracticeCount').val(), + 'DepartmentID': $('.SelectDepartment').val() }, function(data){ data = $.parseJSON(data); @@ -300,8 +291,14 @@ $(function() { // Удалить модуль $('.moduleList').on('click', '.deleteModule', function(){ - $(this).parent('div').parent('div').parent('div').remove(); + $(this).parent().css('display', 'none'); + $(this).parent().parent().append('<div class="confirmDeleteDiv">Уверены? <span class="confirmDeleteModule">Да</span> <span class="cancel">Нет</span></div>'); + }); + + // Подтверждение РїСЂРё удаление модуля + $('.moduleList').on('click', '.confirmDeleteModule', function(){ 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(){ @@ -309,11 +306,20 @@ $(function() { }); JSONSubmodules = JSONSubmodules.substr(0, JSONSubmodules.length - 1); JSONSubmodules += ']'; + // + // Собираем ID модулей, которые ниже для того, чтоб сменить РёС… порадок РЅР° +1 + var AttrID = $(this).parent().parent().parent().nextAll().map(function(indx, element){ + return $(element).attr("id"); + }); + 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); @@ -322,18 +328,33 @@ $(function() { else alert('Error, DeleteModule'); } ); + $(this).parent('div').parent('div').parent('div').remove(); }); // Удалить мероприятие $('.moduleList').on('click', '.deleteSubModule ', function(){ + $(this).parent().css('display', 'none'); + $(this).parent().parent().append('<div class="confirmDeleteDiv">Уверены? <span class="confirmDeleteSubModule">Да</span> <span class="cancel">Нет</span></div>'); + }); + + // Подтверждение РїСЂРё удаление мероприятия + $('.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); @@ -342,6 +363,13 @@ $(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(); }); // Поменять название модуля @@ -412,21 +440,7 @@ $(function() { // Р’ inputCredit (РіРґРµ баллы вводить) разрешаем вводить только цифры $(".moduleList").on('keydown', '.inputCredit', function(event) { - // Разрешаем: backspace, delete, tab Рё escape - if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || - // Разрешаем: Ctrl+A - (event.keyCode == 65 && event.ctrlKey === true) || - // Разрешаем: home, end, влево, вправо - (event.keyCode >= 35 && event.keyCode <= 39)) { - // Ничего РЅРµ делаем - return; - } - else { - // Убеждаемся, что это цифра, Рё останавливаем событие keypress - if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { - event.preventDefault(); - } - } + KeyDownOnlyNumber(event); }); }); diff --git a/media/js/functions.js b/media/js/functions.js new file mode 100644 index 0000000000000000000000000000000000000000..45680cc3071cd801edcadabca370f15c6a3622aa --- /dev/null +++ b/media/js/functions.js @@ -0,0 +1,23 @@ +// Проверка РЅР° число, причем NaN РЅРµ помеха +function isNum(v) { + return typeof v === 'number' && isFinite(v); +} + +// Разрешаем вводить только цифры +function KeyDownOnlyNumber(event) { + // Разрешаем: backspace, delete, tab Рё escape + if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || + // Разрешаем: Ctrl+A + (event.keyCode == 65 && event.ctrlKey === true) || + // Разрешаем: home, end, влево, вправо + (event.keyCode >= 35 && event.keyCode <= 39)) { + // Ничего РЅРµ делаем + return; + } + else { + // Убеждаемся, что это цифра, Рё останавливаем событие keypress + if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { + event.preventDefault(); + } + } +} \ No newline at end of file diff --git a/media/js/setRate.js b/media/js/setRate.js index 20bb2de12a8afe80712abd14d179890207f133f0..49e37497f125a4b00bbfb9fc51e1765a956b12f2 100644 --- a/media/js/setRate.js +++ b/media/js/setRate.js @@ -97,25 +97,6 @@ $(function() { tdUnFocus($(this)); }); - // Разрешаем вводить только цифры - function KeyDownOnlyNumber(event) { - // Разрешаем: backspace, delete, tab Рё escape - if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || - // Разрешаем: Ctrl+A - (event.keyCode == 65 && event.ctrlKey === true) || - // Разрешаем: home, end, влево, вправо - (event.keyCode >= 35 && event.keyCode <= 39)) { - // Ничего РЅРµ делаем - return; - } - else { - // Убеждаемся, что это цифра, Рё останавливаем событие keypress - if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { - event.preventDefault(); - } - } - } - // Р’ inputCredit (РіРґРµ баллы вводить) разрешаем вводить только цифры $('.rateCell').children('input').keydown(function(event) { KeyDownOnlyNumber(event); diff --git a/media/js/sign.js b/media/js/sign.js index f8da7055ef227a312afbe394b9d679334289428b..ab0e57c9ef69d366e931844c3db460c1fb8b979a 100644 --- a/media/js/sign.js +++ b/media/js/sign.js @@ -53,8 +53,13 @@ $(function() } }); }); - - - + + $(document).keypress(function(){ + if(event.keyCode==13) + { + $('#signin_b').trigger('click'); + $('#signup_b').trigger('click'); + } + }); }); diff --git a/media/js/wnd/close.png b/media/js/wnd/close.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d7885a6396c0f18338739e0665073e16fa8629 Binary files /dev/null and b/media/js/wnd/close.png differ diff --git a/media/js/wnd/wnd.css b/media/js/wnd/wnd.css new file mode 100644 index 0000000000000000000000000000000000000000..7563d252a53a03e3356d98422d64b31d6abdcbeb --- /dev/null +++ b/media/js/wnd/wnd.css @@ -0,0 +1,43 @@ +.window { + display: none; + position: absolute; + top: 0; + left: 0; + z-index: 1000; + width: 100%; + height: 100%; + background-color: rgba(0,0,0,.5); + font-family: sans-serif; +} + .window-shadow { + position: absolute; + width: 100%; + height: 100%; + } + .window-block { + position: relative; + z-index: 1; + margin: 20px auto; + background-color: #fff; + } + .window-title { + line-height: 20px; + font-size: 13px; + text-align: center; + } + .window-close { + position: absolute; + top: 0; + right: 0; + display: block; + width: 20px; + height: 20px; + background: url("close.png") center; + } + .window-content { + padding: 5px 10px; + } + .window-content p { + line-height: 16px; + font-size: 14px; + } \ No newline at end of file diff --git a/media/js/wnd/wnd.js b/media/js/wnd/wnd.js new file mode 100644 index 0000000000000000000000000000000000000000..302449b2cebed1fa85cdf54a5acfeabb529ec043 --- /dev/null +++ b/media/js/wnd/wnd.js @@ -0,0 +1,40 @@ +wnd = {} +wnd.$ = {} + +wnd.isShow = false; +wnd.show = function () { + wnd.isShow = true; + wnd.scroll = $(window).scrollTop(); + wnd.$.page.css("position", "fixed"); + wnd.$.page.css("margin-top", -wnd.scroll); + wnd.$.window.css("display", "block"); +} +wnd.hide = function () { + wnd.isShow = false; + wnd.$.page.css("position", "static"); + wnd.$.page.css("margin-top", 0); + $(window).scrollTop(wnd.scroll); + wnd.$.window.css("display", "none"); +} + +wnd.open = function(data) { + wnd.$.title.html(data.title || ''); + wnd.$.content.html(data.content || ''); + wnd.$.block.width(data.width || 600) + + wnd.show(); + + wnd.$.window.css("min-width", wnd.$.block.width() + 40); + wnd.$.window.css("min-height", wnd.$.block.height() + 40); +} +wnd.close = wnd.hide; + +$(function() { + // Блок РѕРєРЅР° + $("body").append("<div class=\"window\"><div class=\"window-shadow\" onclick=\"wnd.close()\"></div><div class=\"window-block\"><div class=\"window-title\"></div><a href=\"javascript:wnd.close()\" class=\"window-close\"></a><div class=\"window-content\"></div></div></div>"); + wnd.$.page = $(".page"); + wnd.$.window = $(".window"); + wnd.$.block = $(".window-block"); + wnd.$.title = $(".window-title"); + wnd.$.content = $(".window-content"); +}); \ No newline at end of file