diff --git a/media/js/admin/students/upload.js b/media/js/admin/students/upload.js deleted file mode 100644 index b7113be60783e26a0fba0355851ac1f194ab7251..0000000000000000000000000000000000000000 --- a/media/js/admin/students/upload.js +++ /dev/null @@ -1,9 +0,0 @@ -$(function() -{ - var jFaculty = $('#facultySelect'); - - jFaculty.change(function() { - var item = jFaculty.find('option:selected').val(); - $('#SecondStep').css('display', Number(item) ? 'block' : 'none'); - }); -}); \ No newline at end of file diff --git a/media/less/common.less b/media/less/common.less index c7d69bdc9fc70b1e712c354a36f91cdd8bb969b5..8c7592e2c514db2f817adbb830fd5b98979c0894 100644 --- a/media/less/common.less +++ b/media/less/common.less @@ -82,6 +82,18 @@ body { height: 100%; } +pre +{ + font-family: "Courier New", Courier, monospace; + font-size: 0.85em; + padding: 5px; + margin: 0; + word-wrap: normal; + white-space: normal; + background: @ColorBaseGrey; + border: 1px solid @ColorLightGrey; +} + .page { width: 100%; } @@ -89,6 +101,7 @@ body { p { text-align: justify; margin-bottom: 10px; + font-size: 0.9em; } b { diff --git a/media/less/common/forms.less b/media/less/common/forms.less index 5497ffc2876c31c7b9025de448c10e7e2b9b2602..1177a7cc4c3c61d5f489d145c34e3f97cba54c96 100644 --- a/media/less/common/forms.less +++ b/media/less/common/forms.less @@ -51,7 +51,7 @@ } } -input[type=button].defaultForm, button.defaultForm { +input[type=button].defaultForm, button.defaultForm, input[type=submit].defaultForm { display: inline-block; cursor: pointer; padding: 7px 0; diff --git a/media/less/common/tabs.less b/media/less/common/tabs.less index 5b6295a7a69be14e9113d6403280568c35222673..7fa045353c12b71a95c1148d0a5137f750559483 100644 --- a/media/less/common/tabs.less +++ b/media/less/common/tabs.less @@ -1,52 +1,54 @@ @import (reference) "../common.less"; .tabsWrapper { - margin: 5px auto; - width: 95%; - //margin: 5px 25px 10px 25px; - .tabs { - display: table; - width: 100%; - margin: 0; - padding: 0; - .tab { - display: table-cell; - width: 20%; - float: none; - text-align: center; - border-left: 3px solid #fff; - a { - display: block; - padding-top: 5px; - padding-bottom: 5px; - background: @ColorBaseGrey; - font-size: 13px; - color: @ColorLightBlue; - } - a:hover { - background-color: @ColorLightenBlue; - color: @ColorBaseGrey; - text-decoration: none; - } - a.inactive - { - background-color: @ColorBaseGrey; - color: @ColorDarkGrey; - } - a.inactive:hover - { - background-color: @ColorBaseGrey; - color: @ColorDarkGrey; - cursor: help; - } - a.active { - background-color: @ColorLightenBlue; - color: @ColorBaseGrey; - text-decoration: none; - } + margin: 5px auto; + width: 95%; + + .tabs { + display: table; + width: 100%; + margin: 0; + padding: 0; + .tab { + display: table-cell; + width: 20%; + float: none; + text-align: center; + border-left: 3px solid #fff; + a { + display: block; + padding-top: 7px; + padding-bottom: 7px; + background: @ColorBaseGrey; + font-size: 13px; + color: @ColorLightBlue; + } + a:hover { + background-color: @ColorLightenBlue; + color: @ColorBaseGrey; + text-decoration: none; + } + a.inactive { + background-color: @ColorBaseGrey; + color: @ColorDarkGrey; + } + a.inactive:hover { + background-color: @ColorBaseGrey; + color: @ColorDarkGrey; + cursor: help; + } + a.active { + background-color: @ColorLightenBlue; + color: @ColorBaseGrey; + text-decoration: none; + } + } + } + .tab:first-child { + margin-left: 0; + } + &.noTopMargin { + margin: 0 auto; + margin-bottom: 10px; } - } - .tab:first-child { - margin-left: 0px; - } } \ No newline at end of file diff --git a/~dev_rating/application/views/office/base.twig b/~dev_rating/application/views/office/base.twig index bd13a4de6419cfea4ba055ee9a9daa9725f0dfd5..b1bfefa7d296969387a591f4a0c94088d332276e 100644 --- a/~dev_rating/application/views/office/base.twig +++ b/~dev_rating/application/views/office/base.twig @@ -3,6 +3,7 @@ {% block media %} {# head -> css, js #} {{ HTML.style('static/css/sidepanel.css')|raw }} {{ HTML.style('static/css/dean_office/dean.css')|raw }} + {{ HTML.style('static/css/common/tabs.css')|raw }} <script> {# todo: remove, http://jsfiddle.net/uojpa23a/1/ #} $(function () { @@ -40,6 +41,7 @@ {% endfor %} </div> <div class="main_side_content"> + {% block office_tabs %}{% endblock %} {% block office_content %}{% endblock %} </div> </div> diff --git a/~dev_rating/application/views/office/students.twig b/~dev_rating/application/views/office/students.twig new file mode 100644 index 0000000000000000000000000000000000000000..7d5691a0680a2e69c92ac8422a3d1b64a42eab9d --- /dev/null +++ b/~dev_rating/application/views/office/students.twig @@ -0,0 +1,13 @@ +{% extends "office/base" %} + +{% block main_top_title %}Студенты{% endblock %} + +{% block office_tabs %} + <div class="tabsWrapper noTopMargin"> + <div class="tabs"> + <div class="tab">{{ HTML.anchor('office/students/search', 'РџРѕРёСЃРє')|raw }}</div> + <div class="tab">{{ HTML.anchor('office/students/upload', 'Добавление')|raw }}</div> + <div class="tab">{{ HTML.anchor('office/students/transfer', 'Перевод')|raw }}</div> + </div> + </div> +{% endblock %} \ No newline at end of file diff --git a/~dev_rating/application/views/office/students/add.twig b/~dev_rating/application/views/office/students/add.twig index d791f72e813cdda89e81580c21e1214753b4bf59..39be466cf150d501ac8e55f5134c9e1bcf3a41be 100644 --- a/~dev_rating/application/views/office/students/add.twig +++ b/~dev_rating/application/views/office/students/add.twig @@ -1,4 +1,4 @@ -{% extends "office/base" %} +{% extends "office/students" %} {% block title %}Студенты{% endblock %} @@ -7,7 +7,6 @@ {{ HTML.script('static/js/admin/students/add.js')|raw }} {% endblock %} - {% block main_top_title %}Добавление студента{% endblock %} {% block office_content %} @@ -22,8 +21,8 @@ <div class="error_text">Какая-то ошибка :(</div> </div> </div> - - + + <div class="inputGroup"> <div class="inputGroup_title"> Персональная информация @@ -34,21 +33,21 @@ <input type="text" id="secondName" placeholder="Отчество"> </div> </div> - - + + <div class="inputGroup"> <div class="inputGroup_title"> Выбор учебной РіСЂСѓРїРїС‹ </div> <div class="inputGroup_input"> - + <select id="facultySelect"> <option value="0">— Подразделение ЮФУ —</option> {% for row in Faculties %} <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> {% endfor %} </select> - + <select id="gradeSelect"> <option value="0">— РљСѓСЂСЃ —</option> {% for Title, Degree in Grades %} @@ -59,15 +58,15 @@ </optgroup> {% endfor %} </select> - + <select id="groupSelect"> <option value="0">— Учебная РіСЂСѓРїРїР° —</option> </select> - + </div> </div> - - + + <div class="inputGroup"> <div class="inputGroup_submit"> <button id="inputGroupSubmit">Добавить студента</button> diff --git a/~dev_rating/application/views/office/students/profile.twig b/~dev_rating/application/views/office/students/profile.twig index 16e2a85aa1702cce6589f42423ba2dd661ac9d05..de9ee852e742fb705a639d2c968ad4685dc4ce02 100644 --- a/~dev_rating/application/views/office/students/profile.twig +++ b/~dev_rating/application/views/office/students/profile.twig @@ -1,4 +1,4 @@ -{% extends "office/base" %} +{% extends "office/students" %} {% block title %}Профиль студента{% endblock %} @@ -10,7 +10,6 @@ </script> {% endblock %} - {% block main_top_title %}Профиль студента{% endblock %} {% block office_content %} @@ -19,22 +18,22 @@ <div class="profile_clearFix"> <h2>{{ Profile.FirstName }} {{ Profile.SecondName }} {{ Profile.LastName }}</h2> </div> - + <div class="profile_clearFix"> <div class="label">Подразделение:</div> <div class="labeled_info">{{ Profile.FacultyName }}</div> </div> - + <div class="profile_clearFix"> <div class="label">Направление:</div> <div class="labeled_info">{{ Profile.SpecName }}</div> </div> - + <div class="profile_clearFix"> <div class="label">Степень:</div> <div class="labeled_info">{{ Rus[Profile.Degree] }}</div> </div> - + <div class="profile_clearFix"> <div class="label">РљСѓСЂСЃ, РіСЂСѓРїРїР°:</div> <div class="itemBlock"> @@ -57,7 +56,7 @@ </div> </div> </div> - + {# TODO Statuses (see Controller/Office/Students) #} {#<div class="profile_clearFix">#} {#<div class="label">Статус:</div>#} @@ -74,7 +73,7 @@ {#</div>#} {#</div>#} - + {% if User.isAdmin %} <div id="For_Admin"> {% if Account.Code %} @@ -83,22 +82,22 @@ <div class="labeled_info">{{ Account.Code|default('Аккаунт активирован') }}</div> </div> {% endif %} - + <div class="profile_clearFix"> <div class="label">Логин пользователя:</div> <div class="labeled_info">{{ Account.Login|default('—') }}</div> </div> - + <div class="profile_clearFix"> <div class="label">E-Mail:</div> <div class="labeled_info">{{ Account.EMail|default('—') }}</div> </div> - + <div class="profile_clearFix"> <div class="label">ID:</div> <div class="labeled_info">{{ Account.ID|default('—') }}</div> </div> - + <div class="profile_clearFix"> <div class="label">Роль:</div> <div class="labeled_info">{{ Account.Role|default('—') }}</div> diff --git a/~dev_rating/application/views/office/students/search.twig b/~dev_rating/application/views/office/students/search.twig index 797e0bbf287ecc299b8427aa1538bae08eb9f8df..88070a7048883489979e701491f63ffcb1d4b23f 100644 --- a/~dev_rating/application/views/office/students/search.twig +++ b/~dev_rating/application/views/office/students/search.twig @@ -1,4 +1,4 @@ -{% extends "office/base" %} +{% extends "office/students" %} {% import 'controls/searchStudent' as search %} @@ -6,7 +6,6 @@ {% block office_media %} {{ search.head("URLdir + 'handler/search/GetStudentsByName'") }} {# todo: this is not a good sign #} - {{ HTML.style('static/css/common/tabs.css')|raw }} {% endblock %} {% block _ResultPrototype %} @@ -25,8 +24,6 @@ </div> {% endblock %} -{% block main_top_title %}Студенты{% endblock %} - {% block office_content %} {{ search.control(block('_ResultPrototype'), GradesList, User.isAdmin ? Faculties) }} {% endblock %} diff --git a/~dev_rating/application/views/office/students/upload.twig b/~dev_rating/application/views/office/students/upload.twig index d2a9919e5d67a8c19ae88bc5540d76ebadf8b890..cb7cf5ee34919b1da082d56a0436b62c22039f24 100644 --- a/~dev_rating/application/views/office/students/upload.twig +++ b/~dev_rating/application/views/office/students/upload.twig @@ -1,16 +1,12 @@ -{% extends "office/base" %} +{% extends "office/students" %} -{% block title %}Студенты{% endblock %} - -{% block office_media %} - {{ HTML.style('static/css/admin/stepByStep.css')|raw }} - {{ HTML.script('static/js/admin/students/upload.js')|raw }} -{% endblock %} +{% block title %}Добавление студентов{% endblock %} +{% block main_top_title %}Студенты{% endblock %} -{% block main_top_title %}Загрузка СЃРїРёСЃРєР° студентов{% endblock %} - {% block office_content %} + + <h2 class="defaultForm marginBetween">Пакетная загрузка студентов</h2> {% if Errors is not empty %} {% set res %} {% for item in Errors %} @@ -21,31 +17,21 @@ {{ admin.message(warning, 'Возникли проблемы!', '<ul>' ~ res ~ '</ul>') }} {% endif %} + <p>Рнструмент пакетной загрузки студентов предоставляет возможность регистрировать РІ системе множество студентов.</p> + <p>Файл СЃРѕ СЃРїРёСЃРєРѕРј студентов представляет СЃРѕР±РѕР№ .csv-файл, который должен иметь следующий формат:</p> + <p><pre>Р¤РРћ;РљСѓСЂСЃ;Группа;[Бакалавриат, Специалитет, Магистратура];Специальность</pre></p> <form enctype="multipart/form-data" action="" method="POST"> - <div class="stepBox" id="FirstStep"> - <div class="step_title"> - <span class='step_title_count'>Шаг 1:</span> - <span class='step_title_description'>Выберите подразделение университета</span> - </div> - <div class="step_body"> - <select id="facultySelect" name="facultyID"> - <option value="0" selected="selected">— Подразделение ЮФУ —</option> - {% for row in Faculties %} - <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> - {% endfor %} - </select> - </div> + <div class="goodClearFix defaultForm marginBetween"> + <select id="facultySelect" name="facultyID" class="defaultForm"> + <option value="0" selected="selected">— Выберите подразделение ЮФУ —</option> + {% for row in Faculties %} + <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> + {% endfor %} + </select> </div> - - <div class="stepBox" id="SecondStep"> - <div class="step_title"> - <span class='step_title_count'>Шаг 2:</span> - <span class='step_title_description'>Выберите файл для загрузки</span> - </div> - <div class="step_body"> - <input name="students" type="file"> - <input type="submit" value="Send"> - </div> + <div class="goodClearFix"> + <div class="defaultForm FLeft"><input name="students" class="defaultForm FullWidth" type="file"></div> + <div class="defaultForm FRight"><input type="submit" class="defaultForm GreenButton P2Width noMargin" value="Загрузить"></div> </div> </form> -{% endblock %} +{% endblock %} diff --git a/~dev_rating/application/views/office/subjects/upload.twig b/~dev_rating/application/views/office/subjects/upload.twig index e194497297de80f8a13ee3c7d5728a81bca8c459..6fadeba3548361bbd318f5fb662e5b8d932959ea 100644 --- a/~dev_rating/application/views/office/subjects/upload.twig +++ b/~dev_rating/application/views/office/subjects/upload.twig @@ -1,15 +1,13 @@ {% extends "office/base" %} -{% block title %}Предметы{% endblock %} +{% block title %}Загрузка предметов{% endblock %} -{% block main_top_title %}Загрузка СЃРїРёСЃРєР° предметов{% endblock %} +{% block main_top_title %}Предметы{% endblock %} -{% block office_media %} - {{ HTML.style('static/css/admin/stepByStep.css')|raw }} - {{ HTML.script('static/js/admin/students/upload.js')|raw }} -{% endblock %} - {% block office_content %} + + <h2 class="defaultForm marginBetween">Пакетная загрузка предметов</h2> + {% if UploadingResult is not empty %} <p>Обработано: {{ UploadingResult.RecordsCount }}, РІ том числе СЃ ошибками: {{ UploadingResult.ErrorsCount }}, найдены РІ базе: {{ UploadingResult.RecordsExistsCount }}.</p> @@ -25,31 +23,21 @@ {% endif %} {% endif %} + <p>Рнструмент пакетной загрузки предметов предоставляет возможность добавлять РІ систему множество наименований предметов.</p> + <p>Файл СЃРѕ СЃРїРёСЃРєРѕРј предметов представляет СЃРѕР±РѕР№ .csv-файл, который должен иметь следующий формат:</p> + <p><pre>Название;Аббревиатура</pre></p> <form enctype="multipart/form-data" action="" method="POST"> - <div class="stepBox" id="FirstStep"> - <div class="step_title"> - <span class='step_title_count'>Шаг 1:</span> - <span class='step_title_description'>Выберите подразделение университета</span> - </div> - <div class="step_body"> - <select id="facultySelect" name="facultyID"> - <option value="0" selected="selected">— Подразделение ЮФУ —</option> - {% for row in Faculties %} - <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> - {% endfor %} - </select> - </div> + <div class="goodClearFix defaultForm marginBetween"> + <select id="facultySelect" name="facultyID" class="defaultForm"> + <option value="0" selected="selected">— Выберите подразделение ЮФУ —</option> + {% for row in Faculties %} + <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> + {% endfor %} + </select> </div> - - <div class="stepBox" id="SecondStep"> - <div class="step_title"> - <span class='step_title_count'>Шаг 2:</span> - <span class='step_title_description'>Выберите файл для загрузки</span> - </div> - <div class="step_body"> - <input name="subjects" type="file"> - <input type="submit" value="Send"> - </div> + <div class="goodClearFix"> + <div class="defaultForm FLeft"><input name="students" class="defaultForm FullWidth" type="file"></div> + <div class="defaultForm FRight"><input type="submit" class="defaultForm GreenButton P2Width noMargin" value="Загрузить"></div> </div> </form> -{% endblock %} +{% endblock %} diff --git a/~dev_rating/application/views/office/teachers.twig b/~dev_rating/application/views/office/teachers.twig new file mode 100644 index 0000000000000000000000000000000000000000..ff96b0833250d52cd1930bec32b862a80f66862c --- /dev/null +++ b/~dev_rating/application/views/office/teachers.twig @@ -0,0 +1,12 @@ +{% extends "office/base" %} + +{% block main_top_title %}Студенты{% endblock %} + +{% block office_tabs %} + <div class="tabsWrapper noTopMargin"> + <div class="tabs"> + <div class="tab">{{ HTML.anchor('office/teachers/search', 'РџРѕРёСЃРє')|raw }}</div> + <div class="tab">{{ HTML.anchor('office/teachers/upload', 'Добавление')|raw }}</div> + </div> + </div> +{% endblock %} \ No newline at end of file diff --git a/~dev_rating/application/views/office/teachers/add.twig b/~dev_rating/application/views/office/teachers/add.twig index d8de6966149a0ab9e05b586dad172763d20f2476..6a331df9b2963285c2646109c668c6f3a5a7f526 100644 --- a/~dev_rating/application/views/office/teachers/add.twig +++ b/~dev_rating/application/views/office/teachers/add.twig @@ -1,4 +1,4 @@ -{% extends "office/base" %} +{% extends "office/teachers" %} {% block office_media %} {{ HTML.style('static/css/admin/inputGroup.css')|raw }} @@ -21,8 +21,8 @@ <input type="text" id="secondName" placeholder="Отчество"> </div> </div> - - + + <div class="inputGroup"> <div class="inputGroup_title"> Выбор места работы @@ -45,8 +45,8 @@ </select> </div> </div> - - + + <div class="inputGroup"> <div class="inputGroup_submit"> <button id="inputGroupSubmit">Добавить преподавателя</button> diff --git a/~dev_rating/application/views/office/teachers/profile.twig b/~dev_rating/application/views/office/teachers/profile.twig index 73383362df4cc618fbd1b46ea66202bbbd85dc1f..173c0cd75f65196261b7ce945418635519ddfa57 100644 --- a/~dev_rating/application/views/office/teachers/profile.twig +++ b/~dev_rating/application/views/office/teachers/profile.twig @@ -1,4 +1,4 @@ -{% extends "office/base" %} +{% extends "office/teachers" %} {% block title %}Профиль преподавателя{% endblock %} diff --git a/~dev_rating/application/views/office/teachers/search.twig b/~dev_rating/application/views/office/teachers/search.twig index 01dad6f88c8f593b139a4ee2a96f881f8405b7db..915e074b197d56c98a056887a802a5a41ca24128 100644 --- a/~dev_rating/application/views/office/teachers/search.twig +++ b/~dev_rating/application/views/office/teachers/search.twig @@ -1,4 +1,4 @@ -{% extends "office/base" %} +{% extends "office/teachers" %} {% import 'controls/searchTeacher' as search %} diff --git a/~dev_rating/application/views/office/teachers/upload.twig b/~dev_rating/application/views/office/teachers/upload.twig index 6dd9a6a25f2365f561f7b5e5226d1b7c7515fce4..e013e4a1fdcb88347e509e1e1f004977a7d1537b 100644 --- a/~dev_rating/application/views/office/teachers/upload.twig +++ b/~dev_rating/application/views/office/teachers/upload.twig @@ -1,14 +1,10 @@ -{% extends "office/base" %} +{% extends "office/teachers" %} {% block title %}Преподаватели{% endblock %} -{% block main_top_title %}Загрузка СЃРїРёСЃРєР° преподавателей{% endblock %} +{% block main_top_title %}Преподаватели{% endblock %} -{% block office_media %} - {{ HTML.style('static/css/admin/stepByStep.css')|raw }} - {{ HTML.script('static/js/admin/students/upload.js')|raw }} -{% endblock %} - {% block office_content %} + <h2 class="defaultForm marginBetween">Пакетная загрузка преподавателей</h2> {% if Errors is not empty %} {% set res %} {% for item in Errors %} @@ -19,31 +15,25 @@ {{ admin.message(warning, 'Возникли проблемы!', '<ul>' ~ res ~ '</ul>') }} {% endif %} + <div class="dialogTopText"> + <p>Рнструмент пакетной загрузки преподавателей предоставляет возможность регистрировать РІ системе множество преподавателей.</p> + <p>Файл СЃРѕ СЃРїРёСЃРєРѕРј преподавателей представляет СЃРѕР±РѕР№ .csv-файл, который должен иметь следующий формат:</p> + <p> + <pre>Р¤РРћ;Кафедра</pre> + </p> + </div> <form enctype="multipart/form-data" action="" method="POST"> - <div class="stepBox" id="FirstStep"> - <div class="step_title"> - <span class='step_title_count'>Шаг 1:</span> - <span class='step_title_description'>Выберите подразделение университета</span> - </div> - <div class="step_body"> - <select id="facultySelect" name="facultyID"> - <option value="0" selected="selected">— Подразделение ЮФУ —</option> - {% for row in Faculties %} - <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> - {% endfor %} - </select> - </div> + <div class="goodClearFix defaultForm marginBetween"> + <select id="facultySelect" name="facultyID" class="defaultForm"> + <option value="0" selected="selected">— Выберите подразделение ЮФУ —</option> + {% for row in Faculties %} + <option value="{{ row.ID }}">{{ row.Name }} ({{ row.Abbr }})</option> + {% endfor %} + </select> </div> - - <div class="stepBox" id="SecondStep"> - <div class="step_title"> - <span class='step_title_count'>Шаг 2:</span> - <span class='step_title_description'>Выберите файл для загрузки</span> - </div> - <div class="step_body"> - <input name="teachers" type="file"> - <input type="submit" value="Send"> - </div> + <div class="goodClearFix"> + <div class="defaultForm FLeft"><input name="students" class="defaultForm FullWidth" type="file"></div> + <div class="defaultForm FRight"><input type="submit" class="defaultForm GreenButton P2Width noMargin" value="Загрузить"></div> </div> </form> -{% endblock %} +{% endblock %}