diff --git a/~dev_rating/application/classes/Controller/Admin/Teachers.php b/~dev_rating/application/classes/Controller/Admin/Teachers.php
index 6433a9fe67d1c69ec68545d917a9838a3574d44b..22fb88cec36962b15f770c3bc02eced718d50505 100644
--- a/~dev_rating/application/classes/Controller/Admin/Teachers.php
+++ b/~dev_rating/application/classes/Controller/Admin/Teachers.php
@@ -25,9 +25,30 @@ class Controller_Admin_Teachers extends Controller_UserEnvi {
     public function action_add()
     {
         // LOGIC
+        $model = new Model_Admin_Teachers;
+        $faculties = $model->getFaculties();
+        $facultiesHandled = array(); $i = 0;
+        foreach($faculties as $row)
+        {
+            $i++;
+            $facultiesHandled[$i]['ID'] = $row['FacultyID'];
+            $facultiesHandled[$i]['Name'] = $row['FacultyName'];
+            $facultiesHandled[$i]['Abbr'] = $row['FacultyAbbr'];
+        }
         
+        $jobPositions = $model->getJobPositions();
+        $jobPositionsHandled = array(); $i = 0;
+        foreach($jobPositions as $row)
+        {
+            $i++;
+            $jobPositionsHandled[$i]['ID'] = $row['ID'];
+            $jobPositionsHandled[$i]['Name'] = $row['Name'];
+            // $jobPositionsHandled[$i]['Abbr'] = $row['Abbr'];
+        }        
         // VIEW
         $twig = Twig::factory('admin/teachers/add');
+        $twig->JobPositions = $jobPositionsHandled;
+        $twig->Faculties = $facultiesHandled;
         $twig->User = $this->UserInfo;
         $this->response->body($twig);
     }
diff --git a/~dev_rating/application/classes/Controller/Handler/AdmTeachers.php b/~dev_rating/application/classes/Controller/Handler/AdmTeachers.php
index 8f6d03576b3783c16d61481d3650ebd0f227f7b7..f72decff178fb6386aa96a2e08265372ae774de3 100644
--- a/~dev_rating/application/classes/Controller/Handler/AdmTeachers.php
+++ b/~dev_rating/application/classes/Controller/Handler/AdmTeachers.php
@@ -8,6 +8,56 @@ class Controller_Handler_AdmTeachers extends Controller_Handler {
             parent::before();
         }
         
+        protected function action_createTeacher()
+        {
+            $response['success'] = false;
+            $this->post
+                    ->rule('firstName', 'not_empty')
+                    ->rule('firstName', 'alpha_dash', array(':value', TRUE))
+                    ->rule('secondName', 'not_empty')
+                    ->rule('secondName', 'alpha_dash', array(':value', TRUE))
+                    ->rule('lastName', 'not_empty')
+                    ->rule('lastName', 'alpha_dash', array(':value', TRUE))
+                    ->rule('jobPositionID', 'not_empty')
+                    ->rule('jobPositionID', 'digit')
+                    ->rule('departmentID', 'not_empty')
+                    ->rule('departmentID', 'digit');
+            if($this->post->offsetGet('jobPositionID') == 0)
+            {
+                $this->post->error('jobPositionID', 'not_empty');
+                $response['success'] = false;
+            }
+            if($this->post->offsetGet('departmentID') == 0)
+            {
+                $this->post->error('departmentID', 'not_empty');
+                $response['success'] = false;
+            }
+            if($this->post->check())
+            {
+                $code = $this->createTeacher(
+                        $this->post->offsetGet('lastName'),
+                        $this->post->offsetGet('firstName'),
+                        $this->post->offsetGet('secondName'),
+                        $this->post->offsetGet('jobPositionID'),
+                        $this->post->offsetGet('departmentID'));
+                if($code != -1)
+                {
+                    $response['success'] = true;
+                    $response['messages'][1] = 'Всё ОК! Вот код активации: '.$code;
+                }
+                else {
+                    $response['success'] = false;
+                    $response['messages'][1] = 'Неверные входные данные.';
+                }
+            }
+            else
+            {
+                $response['success'] = false;
+                $response['messages'] = $this->post->errors();
+            }
+            $this->response->body(json_encode($response));
+        }
+        
         protected function createTeacher($firstName, $secondName, $lastName, $degreeID, $departamentID)
         {
             $activationCode = Account::instance()->createTeacher($firstName, $secondName, $lastName, $degreeID, $departamentID);
diff --git a/~dev_rating/application/classes/Model/Admin/Teachers.php b/~dev_rating/application/classes/Model/Admin/Teachers.php
index d3e1c809f3605accb4543947e99289d8777af9e8..db5ccb52833f4000cc6b269e59cb77a4200bbcef 100644
--- a/~dev_rating/application/classes/Model/Admin/Teachers.php
+++ b/~dev_rating/application/classes/Model/Admin/Teachers.php
@@ -8,6 +8,12 @@ class Model_Admin_Teachers extends Model
         return DB::query(Database::SELECT, $sql)->execute();
     }
     
+    public function getJobPositions()
+    {
+        $sql = "CALL `GetJobPositions`(); ";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }
+    
     public function getTeachersByFaculty($facultyID)
     {
         $sql = "CALL `GetTeachersByFaculty`('$facultyID'); ";
diff --git a/~dev_rating/application/views/admin/base.twig b/~dev_rating/application/views/admin/base.twig
index cb1a6ca2fa6b9a796d51e487dd50eb6da958533e..05d330112394982e7fa253cc2ad7851ed64e3314 100644
--- a/~dev_rating/application/views/admin/base.twig
+++ b/~dev_rating/application/views/admin/base.twig
@@ -42,7 +42,7 @@
                             {{ HTML.anchor('/', System.Title, {'title': 'Перейти на главную'})|raw }}
                     </div>
                     <div class="top_name_faculty">
-                            Панель администратора
+                            {{ HTML.anchor('/admin', System.Title, {'title': 'Перейти на главную'})|raw }}
                     </div>
                     <div class="top_user">
                             {{ User.First }} {{ User.Last }} | 
diff --git a/~dev_rating/application/views/admin/teachers/add.twig b/~dev_rating/application/views/admin/teachers/add.twig
index aa3d5f102316dc80c9fc5250352cdbeb5ba95b51..b4173e3930f2fe6727aab950f974f4573cd4d4a6 100644
--- a/~dev_rating/application/views/admin/teachers/add.twig
+++ b/~dev_rating/application/views/admin/teachers/add.twig
@@ -1 +1,51 @@
-{# empty Twig template #}
+{% extends "admin/base" %}
+
+
+{% block media %}
+{{ HTML.style('media/css/admin/inputGroup.css')|raw }}
+{{ HTML.script('media/js/admin/teachers/add.js')|raw }}
+{% endblock %}
+
+{% block title %}Преподаватели{% endblock %}
+{% block main_top_title %}Создание преподавателя{% endblock %}
+
+{% block main_content %}
+    <div class="inputGroupMessages"></div>
+    <div class="inputGroup">
+        <div class="inputGroup_title">
+            Персональная информация
+        </div>
+        <div class="inputGroup_input">
+            <input type="text" id="lastName" placeholder="Фамилия">
+            <input type="text" id="firstName" placeholder="Имя">
+            <input type="text" id="secondName" placeholder="Отчество">
+        </div>
+    </div>
+    <div class="inputGroup">
+        <div class="inputGroup_title">
+            Какая-то информация. Как её назвать?
+        </div>
+        <div class="inputGroup_input">
+            <select id="jobPositionSelect">
+                <option value="0">--- Академическая должность ---</option>
+                {% for row in JobPositions %}
+                <option value="{{ row.ID }}">{{ row.Name }}</option>
+                {% endfor %}     
+            </select>
+            <select id="facultySelect">
+                <option value="0">--- Подразделение ЮФУ ---</option>
+                {% for row in Faculties %}
+                <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option>
+                {% endfor %}
+            </select>
+            <select id="departmentSelect">
+                <option value="0">--- Кафедра ---</option>
+            </select>
+        </div>
+    </div>
+    <div class="inputGroup">
+        <div class="inputGroup_submit">
+            <button id="inputGroupSubmit">Создать преподавателя</button>
+        </div>
+    </div>
+{% endblock %}
\ No newline at end of file
diff --git a/~dev_rating/application/views/admin/teachers/index.twig b/~dev_rating/application/views/admin/teachers/index.twig
index 5fef921bfe4d58d8d495f2b6ebef2f8cc2b722ff..1ac60818acbab832b605aad03eb528ebcaa0f572 100644
--- a/~dev_rating/application/views/admin/teachers/index.twig
+++ b/~dev_rating/application/views/admin/teachers/index.twig
@@ -1,6 +1,7 @@
 {% extends "admin/base" %}
 
 {% block media %}
+{{ HTML.style('media/css/admin/searchBox.css')|raw }}
 {{ HTML.script('media/js/admin/teachers/index.js')|raw }}
 {% endblock %}
 
@@ -42,9 +43,9 @@
         </div>
     </div>
 
-    {{ admin.action('#', 'Загрузить список преподавателей', 
+    {{ admin.action(URL.site('admin/teachers/upload'), 'Загрузить список преподавателей', 
                                     'Загрузить в систему '~System.Title~' список преподавателей из заранее подготовленных csv-файлов. '~
                                     'Для каждого преподавателя, загруженного данной утилитой, будет создан аккаунт и сгенерирован код активации.') }}
-    {{ admin.action('#', 'Добавить нового преподавателя', 'Добавить в систему '~System.Title~' нового преподавателя. '~
+    {{ admin.action(URL.site('admin/teachers/add'), 'Добавить нового преподавателя', 'Добавить в систему '~System.Title~' нового преподавателя. '~
                 'Для него будет создан аккаунт и сгенерирован код активации.') }}
 {% endblock %}
\ No newline at end of file
diff --git a/~dev_rating/media/css/admin/base.css b/~dev_rating/media/css/admin/base.css
index d4a02616916875d4a7d80b49758a2bfb669a9574..b5d56364d612994485fb8f74b3ca1bced47c4e2d 100644
--- a/~dev_rating/media/css/admin/base.css
+++ b/~dev_rating/media/css/admin/base.css
@@ -185,77 +185,6 @@ a:hover {
         font-size: 10pt;
 }
 
-/* ------------------------------------SEARCH----------------------------------------*/
-
-.search .search_box
-{
-    background-color: #eee;
-    margin: 10px auto;
-    padding: 5px;
-}
-.search .search_box .search_mainInput input
-{
-    width: 100%;
-    padding: 4px;
-}
-
-.search .search_box .search_mainInput
-{
-    margin-bottom: 5px;
-}
-
-.search .search_box .search_inputFilters .filter,
-.search .search_box .search_inputFilters .filterLarge 
-{
-    display: inline-block;
-}
-
-.search .search_box .search_inputFilters .filter select
-{
-    padding: 5px;
-    width: 200px;
-}
-
-.search .search_box .search_inputFilters .filterLarge select
-{
-    padding: 5px;
-    width: 400px;
-}
-
-.search_item
-{
-    padding: 10px;
-    margin: 1px 0;
-}
-
-.search_item > div
-{
-    display: inline-block;
-    vertical-align: middle;
-    height: auto;
-    width: 49%;
-}
-
-.search_item_actions
-{
-    text-align: right;
-}
-
-.search_item:nth-child(odd)
-{
-    background: #eee;
-}
-
-.search_item:nth-child(even)
-{
-    background: #fff;
-}
-
-.search_item .search_item_firstLine a
-{
-    font-size: 18px;
-}
-
 /*-------------------------------------ACTION-----------------------------------------*/
 
 .action
diff --git a/~dev_rating/media/css/admin/inputGroup.css b/~dev_rating/media/css/admin/inputGroup.css
new file mode 100644
index 0000000000000000000000000000000000000000..6ad970c26f71d698ea647e0b5168c4168aedbc27
--- /dev/null
+++ b/~dev_rating/media/css/admin/inputGroup.css
@@ -0,0 +1,39 @@
+/* ------------------------------------SEARCH----------------------------------------*/
+
+.inputGroup
+{
+    /*border: 1px solid #ddd;
+    border-radius: 3px;*/
+    padding: 10px;
+}
+
+.inputGroup_title
+{
+    font-size: 18px;
+    padding: 5px 0px;
+    border-bottom: 1px solid #ddd;
+}
+
+.inputGroup_input
+{
+    margin: 10px 0;
+}
+
+.inputGroup_input input[type='text']
+{
+    padding: 4px;
+    width: 265px;
+}
+
+.inputGroup_input select
+{
+    padding: 4px;
+    width: 265px;
+}
+
+.inputGroup_submit button
+{
+    padding: 4px;
+    width: 100%;
+}
+
diff --git a/~dev_rating/media/css/admin/searchBox.css b/~dev_rating/media/css/admin/searchBox.css
new file mode 100644
index 0000000000000000000000000000000000000000..ad95e4aaedd00c819c503bfa8246c50610970812
--- /dev/null
+++ b/~dev_rating/media/css/admin/searchBox.css
@@ -0,0 +1,70 @@
+/* ------------------------------------SEARCH----------------------------------------*/
+
+.search .search_box
+{
+    background-color: #eee;
+    margin: 10px auto;
+    padding: 5px;
+}
+.search .search_box .search_mainInput input
+{
+    width: 100%;
+    padding: 4px;
+}
+
+.search .search_box .search_mainInput
+{
+    margin-bottom: 5px;
+}
+
+.search .search_box .search_inputFilters .filter,
+.search .search_box .search_inputFilters .filterLarge 
+{
+    display: inline-block;
+}
+
+.search .search_box .search_inputFilters .filter select
+{
+    padding: 5px;
+    width: 200px;
+}
+
+.search .search_box .search_inputFilters .filterLarge select
+{
+    padding: 5px;
+    width: 400px;
+}
+
+.search_item
+{
+    padding: 10px;
+    margin: 1px 0;
+}
+
+.search_item > div
+{
+    display: inline-block;
+    vertical-align: middle;
+    height: auto;
+    width: 49%;
+}
+
+.search_item_actions
+{
+    text-align: right;
+}
+
+.search_item:nth-child(odd)
+{
+    background: #eee;
+}
+
+.search_item:nth-child(even)
+{
+    background: #fff;
+}
+
+.search_item .search_item_firstLine a
+{
+    font-size: 18px;
+}
\ No newline at end of file
diff --git a/~dev_rating/media/js/admin/teachers/add.js b/~dev_rating/media/js/admin/teachers/add.js
new file mode 100644
index 0000000000000000000000000000000000000000..565de1b7875ce2e5b1a05a0e33e7821e4f9527c8
--- /dev/null
+++ b/~dev_rating/media/js/admin/teachers/add.js
@@ -0,0 +1,44 @@
+$(function()
+{
+    $("#facultySelect [value='0']").attr('selected', 'selected');
+    $('#departmentSelect').attr('disabled', 'disabled');
+    $("#departmentSelect [value='0']").attr('selected', 'selected');
+    $("#jobPositionSelect [value='0']").attr('selected', 'selected');
+    // Выбор факультета
+    $('#facultySelect').change(function(){
+        if (($('#facultySelect option:selected').val()!= '0')) {
+                $("#departmentSelect").html('<option value="0">--- Кафедра ---</option>');
+                $('#departmentSelect').attr('disabled', 'disabled');
+                $.post('/~dev_rating/handler/admTeachers/getDepartmentsList', {'facultyID': $('#facultySelect option:selected').val()}, function(data){
+                    $.each(data, function(i){
+                        $("#departmentSelect").append('<option value="'+data[i].ID+'">'+data[i].Name+'</option>');
+                    });
+                    $("#departmentSelect").removeAttr("disabled");
+                }, "json");
+        }
+        else
+        {
+                $('#departmentSelect').attr('disabled', 'disabled');
+        }
+    });
+    
+    $('#inputGroupSubmit').click(function(){
+        $('#inputGroupSubmit').attr('disabled', 'disabled');
+        $.post('/~dev_rating/handler/admTeachers/createTeacher', 
+        {
+            'firstName': $('#firstName').val(),
+            'secondName': $('#secondName').val(),
+            'lastName': $('#lastName').val(),
+            'jobPositionID': $('#jobPositionSelect option:selected').val(),
+            'departmentID': $('#departmentSelect option:selected').val(),
+        }, 
+        function(data){
+            $('.inputGroupMessages').html('<ul>');
+            $.each(data.messages, function(i){
+                $('.inputGroupMessages').append('<li>' + data.messages[i]);
+            });
+            $('.inputGroupMessages').append('</ul>');
+            $('#inputGroupSubmit').removeAttr('disabled');
+        }, "json");
+    });
+});
\ No newline at end of file
diff --git a/~dev_rating/modules/account/classes/Kohana/Account.php b/~dev_rating/modules/account/classes/Kohana/Account.php
index 60509e18bc7a9b93387dde4b39762648295bef88..a0cd0c4aab4be807baae12e65b1641be9b9c2571 100644
--- a/~dev_rating/modules/account/classes/Kohana/Account.php
+++ b/~dev_rating/modules/account/classes/Kohana/Account.php
@@ -46,15 +46,21 @@ class Kohana_Account {
     public function createTeacher($lastName, $firstName, $secondName, $degreeID, $departamentID)
     {
         $activationCode = $this->generateActivationCode($firstName, $secondName, $lastName);
-        $this->_model->createTeacher($lastName, $firstName, $secondName, $degreeID, $departamentID, $activationCode);
-        return $activationCode;
+        $response = $this->_model->createTeacher($lastName, $firstName, $secondName, $degreeID, $departamentID, $activationCode);
+        if($response == -1)
+            return -1;
+        else
+            return $activationCode;
     }
     
     public function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID)
     {
         $activationCode = $this->generateActivationCode($firstName, $secondName, $lastName);
-        $this->_model->createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode);
-        return $activationCode;
+        $response = $this->_model->createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode);
+        if($response == -1)
+            return -1;
+        else
+            return $activationCode;
     }
     
     public function isLoginExists($login)