Skip to content
Snippets Groups Projects
Commit 0a89a58c authored by Andrew Rudenets's avatar Andrew Rudenets
Browse files

1. Новая страница дисциплины для студента

2. Всплывающее окно с информацией
parent 7bf532d5
Branches
Tags
No related merge requests found
Showing
with 328 additions and 294 deletions
......@@ -21,10 +21,14 @@ class Controller_Student_Subject extends Controller_UserEnvi {
{
$subject['Control'] = 'Зачет';
}
$subject['LectureHours'] = $info['LectionCount'];
$subject['SeminarHours'] = $info['PracticeCount'];
$subject['LectionCount'] = $info['LectionCount'];
$subject['PracticeCount'] = $info['PracticeCount'];
$subject['DepName'] = $info['DepName'];
$subject['Teachers'] = $this->getTeachersForDiscipline($id);
$semester = $db->getSemesterInfo($info['SemesterID']);
$semester['SemesterNum'] = $semester['SemesterNum'] == 1 ? 'Осенний' : 'Весенний';
$subject['SemesterNum'] = $semester['SemesterNum'];
$subject['SemesterYear'] = $semester['SemesterYear'];
// Учебная карта дисциплины
$disciplineHandled = array();
$rate = 0; $maxRate = 0; $i = 0; $id = 0;
......@@ -35,21 +39,21 @@ class Controller_Student_Subject extends Controller_UserEnvi {
$i++;
$id = $row['ModuleID'];
}
if(!isset($disciplineHandled[$i]['SubmodulesCount']))
if(!isset($disciplineHandled['Modules'][$i]['SubmodulesCount']))
{
$disciplineHandled[$i]['SubmodulesCount'] = 0;
$disciplineHandled[$i]['Rate'] = 0;
$disciplineHandled[$i]['MaxRate'] = 0;
$disciplineHandled['Modules'][$i]['SubmodulesCount'] = 0;
$disciplineHandled['Modules'][$i]['Rate'] = 0;
$disciplineHandled['Modules'][$i]['MaxRate'] = 0;
}
$j = $disciplineHandled[$i]['SubmodulesCount'] += 1;
$disciplineHandled[$i]['Rate'] += (int) $row['Rate'];
$disciplineHandled[$i]['MaxRate'] += (int) $row['MaxRate'];
$disciplineHandled[$i]['ModuleTitle'] = $row['ModuleName'];
$disciplineHandled[$i][$j]['Title'] = $row['SubModuleName'];
$disciplineHandled[$i][$j]['Description'] = $row['SubmoduleDescription'];
$disciplineHandled[$i][$j]['Rate'] = (int) $row['Rate'];
$disciplineHandled[$i][$j]['Date'] = $row['Date'];
$disciplineHandled[$i][$j]['MaxRate'] = (int) $row['MaxRate'];
$j = $disciplineHandled['Modules'][$i]['SubmodulesCount'] += 1;
$disciplineHandled['Modules'][$i]['Rate'] += (int) $row['Rate'];
$disciplineHandled['Modules'][$i]['MaxRate'] += (int) $row['MaxRate'];
$disciplineHandled['Modules'][$i]['Title'] = $row['ModuleName'];
$disciplineHandled['Modules'][$i]['Submodules'][$j]['Title'] = $row['SubModuleName'];
$disciplineHandled['Modules'][$i]['Submodules'][$j]['Description'] = $row['SubmoduleDescription'];
$disciplineHandled['Modules'][$i]['Submodules'][$j]['Rate'] = (int) $row['Rate'];
$disciplineHandled['Modules'][$i]['Submodules'][$j]['Date'] = $row['Date'];
$disciplineHandled['Modules'][$i]['Submodules'][$j]['MaxRate'] = (int) $row['MaxRate'];
$rate += $row['Rate'];
$maxRate += $row['MaxRate'];
}
......@@ -60,8 +64,8 @@ class Controller_Student_Subject extends Controller_UserEnvi {
// ПРЕДСТАВЛЕНИЕ
$twig = Twig::factory('student/subject');
$twig->User = $this->UserInfo;
$twig->Subject = $subject;
$twig->discipline = $disciplineHandled;
$twig->Discipline = $subject;
$twig->DisciplineMap = $disciplineHandled;
$this->response->body($twig);
}
......
......@@ -24,5 +24,11 @@ class Model_Student extends Model
{
$sql = "CALL `GetTeachersForDiscipline`('$discipline_id'); ";
return DB::query(Database::SELECT, $sql)->execute();
}
}
public function getSemesterInfo($id)
{
$sql = "CALL `GetSemesterInfo`('$id'); ";
return DB::query(Database::SELECT, $sql)->execute()->offsetGet(0);
}
}
......@@ -25,6 +25,7 @@
<title>{% block title %}{% endblock %} | {{ System.Title }}</title>
{{ HTML.style('media/css/base.css')|raw }}
{{ HTML.script('media/js/jquery-1.11.1.min.js')|raw }}
{{ HTML.script('media/js/base.js')|raw }}
{% block media %}{% endblock %}
</head>
<body>
......@@ -39,12 +40,17 @@
{{ User.FacultyName }}
</div>
<div class="top_user">
{{ User.First }} {{ User.Last }} |
<div id="top_username">{{ User.First }} {{ User.Last }}</div> |
{{ HTML.anchor('settings', 'Настройки', {'title': 'Настройки аккаунта'})|raw }}
{{ HTML.anchor('sign/out', 'Выход', {'title': 'Выход из системы'})|raw }}
</div>
</div>
</div>
{% if User.AccType == 'student' %}
{% include 'profile/student' %}
{% elseif User.AccType == 'teacher' %}
{% include 'profile/teacher' %}
{% endif %}
<div class="main">
<div class="main_top">
<div class="main_top_tittle">{% block main_top_title %}Привет!{% endblock %}</div>
......
<div class="profile_wrapper" id="profileInfo" style="display: none;">
<div class="profile_clearFix">
<div class="username">{{ User.First }} {{ User.Second }} {{ User.Last }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Подразделение:</div>
<div class="labeled_info">{{ User.FacultyName }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Направление:</div>
<div class="labeled_info">{{ User.SpecName }}</div>
</div>
<div class="profile_clearFix profile_delimeter">
<div class="label">Курс, группа:</div>
<div class="labeled_info">{{ User.StudentGrade }}.{{ User.GroupNum }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Тип аккаунта:</div>
<div class="labeled_info">{{ User.AccRole }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Имя пользователя:</div>
<div class="labeled_info">{{ User.AccLogin }}</div>
</div>
<div class="profile_clearFix">
<div class="label">E-Mail:</div>
<div class="labeled_info">{{ User.AccEMail }}</div>
</div>
</div>
\ No newline at end of file
<div class="profile_wrapper" id="profileInfo" style="display: none;">
<div class="profile_clearFix">
<div class="username">{{ User.First }} {{ User.Second }} {{ User.Last }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Подразделение:</div>
<div class="labeled_info">{{ User.FacultyName }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Должность:</div>
<div class="labeled_info">{{ User.JobPositionName }}</div>
</div>
<div class="profile_clearFix profile_delimeter">
<div class="label">Кафедра:</div>
<div class="labeled_info">{{ User.DepName }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Тип аккаунта:</div>
<div class="labeled_info">{{ User.AccRole }}</div>
</div>
<div class="profile_clearFix">
<div class="label">Имя пользователя:</div>
<div class="labeled_info">{{ User.AccLogin }}</div>
</div>
<div class="profile_clearFix">
<div class="label">E-Mail:</div>
<div class="labeled_info">{{ User.AccEMail }}</div>
</div>
</div>
\ No newline at end of file
......@@ -38,7 +38,7 @@
{% block media %} {# head -> css, js #}
{{ HTML.script('media/js/wnd/wnd.js')|raw }}
{{ HTML.style('media/js/wnd/wnd.css')|raw }}
{{ HTML.style('media/css/results.css')|raw }}
{{ HTML.style('media/css/student/index.css')|raw }}
{% endblock %}
{% block main_top_title %}Мои баллы{% endblock %}
......@@ -50,7 +50,7 @@
<td>&nbsp;</td>
<td>Предмет</td>
<td>Преподаватель</td>
<td>Форма контроля</td>
<td>Форма аттестации</td>
<td>Текущий балл</td>
<td>Успеваемость</td>
</tr>
......
{% extends 'base' %}
{% block title %}Профиль студента{% endblock %} {# head -> title #}
{% block media %} {# head -> css, js #}
{{ HTML.style('media/css/profile.css')|raw }}
{{ HTML.script('media/js/profile.js')|raw }}
{% endblock %}
{% block main_top_title %}Профиль студента{% endblock %}
{% block main_content %}
<div class="profile_settings_wrapper">
<div class="profileName">
{{User.LastName}}
{{User.FirstName}}
{{User.SecondName}}
</div>
<div class="information_wrapper">
<div class="base_information">
<form>
<fieldset class="form_border">
<legend class="base_form_title" align="center">Общая информация</legend>
<table border="0" cellspacing="0" class="module_table">
<tr class="table_content">
<td class="td_border top_border data_tittle">Факультет:</td>
<td class="top_border data_info">{{User.FacultyName}}</td>
</tr>
<tr class="table_content">
<td class="td_border data_tittle">Направление: </td>
<td class="data_info">{{User.SpecName}} ({{User.SpecAbbr}})</td>
</tr>
<tr class="table_content">
<td class="td_border data_tittle">Курс: </td>
<td class="data_info">{{User.Grade}}</td>
</tr>
<tr class="table_content">
<td class="td_border data_tittle">Группа: </td>
<td class="data_info">{{User.Group}}</td>
</tr>
</table>
</fieldset>
</form>
</div>
<div class="personal_information">
<form>
<fieldset class="form_border">
<legend class="personal_form_title" align="center">Персональная информация</legend>
<table border="0" cellspacing="0" class="module_table">
<tr class="table_content">
<td class="td_border top_border data_tittle">Логин:</td>
<td class="top_border data_info">login</td>
</tr>
<tr class="table_content">
<td class="td_border data_tittle">E-mail: </td>
<td class="data_info">example_mail@mail.ru</td>
</tr>
<tr class="table_content">
<td class="td_border data_tittle">Пароль: </td>
<td class="data_info"> <button>Сменить</button></td>
</tr>
</table>
</fieldset>
</form>
</div>
</div>
</div>
<div id="slideout">
<img src="media/css/icons/feedback.png" alt="Отправить отзыв" />
<div id="slideout_inner">
<form>
<div class="err_alt">Если вы нашли ошибку в своих личных данных, сообщите об этом.</div>
<textarea></textarea>
<input type="submit" value="Сообщить"></input>
</form>
</div>
</div>
{% endblock %}
\ No newline at end of file
{% extends 'base' %}
{% block media %} {# head -> css, js #}
{{ HTML.style('media/css/modules.css')|raw }}
{{ HTML.style('media/css/student/subject.css')|raw }}
{% endblock %}
{% macro event(event_name, event_date, event_ball, event_max_ball) %}
......@@ -12,50 +12,73 @@
</tr>
{% endmacro %}
{% macro module_result(sum_ball, max_ball) %}
<div class="module_result">
<div class="module_result_text">Итог модуля:</div>
<div class="module_result_value">{{ sum_ball }}/</div>
<div class="module_result_max_value">{{ max_ball }}</div>
</div>
{% endmacro %}
{% import 'student/subject' as mod %}
{% block title %}{{ Subject.Title|default('Предмет') }}{% endblock %}
{% block main_top_title %} {{ Subject.Title|default('Предмет') }} {% endblock %}
{% import _self as map %}
{% block title %}{{ Discipline.Title|default('УКД') }}{% endblock %}
{% block main_top_title %}Учебная карта дисциплины{% endblock %}
{% block main_content %}
<div class='main_teachers'>
<div class="main_teachers_content">
<div class="teachers_part_color"><div class="teachers_tittle">Преподаватели:</div> <div class="teachers_info">{{ Subject.Teachers }}</div> </div>
<div class="teachers_part_color"><div class="teachers_tittle">Форма промежуточной аттестации:</div> <div class="teachers_info">{{ Subject.Control }} </div></div>
<div class="teachers_part_color"><div class="teachers_tittle">Часов: </div> <div class="teachers_info"> {{ Subject.LectureHours + Subject.SeminarHours }} (</div><div class="teachers_tittle"> Лекций:</div> <div class="teachers_info">{{ Subject.LectureHours }}</div> <div class="teachers_tittle"> Практики:</div> <div class="teachers_info">{{ Subject.SeminarHours }})</div> </div>
<div class="mapHeader">
<div class="clearFix">
<div class="label">Название дисциплины:</div>
<div class="labeled_info discTitle">{{ Discipline.Title|default('---') }}</div>
</div>
<div class="clearFix">
<div class="label">Преподаватели:</div>
<div class="labeled_info">
{% for teacher in Discipline.Teachers %}
<div>{{ teacher }}</div>
{% endfor %}
</div>
</div>
<div class="clearFix">
<div class="label">Кафедра:</div>
<div class="labeled_info">{{ Discipline.DepName }}</div>
</div>
<div class="clearFix">
<div class="label">Форма аттестации:</div>
<div class="labeled_info">{{ Discipline.Control|default('---') }}</div>
</div>
<div class="clearFix">
<div class="label">Семестр:</div>
<div class="labeled_info">{{ Discipline.SemesterNum }} семестр {{ Discipline.SemesterYear }}/{{ Discipline.SemesterYear + 1 }} учебного года</div>
</div>
<div class="clearFix">
<div class="label">Учебных часов:</div>
<div class="labeled_info">{{ Discipline.LectionCount }} ч. теории и {{ Discipline.PracticeCount }} ч. практики</div>
</div>
</div>
<div class="mapContent">
{% for Module in DisciplineMap.Modules %}
<div class="moduleBlock">
{{ Module.Title }}
</div>
{% for Submodule in Module.Submodules %}
<div class="submoduleBlock">
<div class="submoduleTitle">{{ Submodule.Title }}</div>
<div class="submoduleRate">{{ Submodule.Rate }} / {{ Submodule.MaxRate }}</div>
<div class="submodulePercent">
{{ (Submodule.Rate * 100) // Submodule.MaxRate }} %
</div>
<div class="submoduleDate">
{% if Submodule.Date != 0 %}
{{ Submodule.Date|date('d.m.Y') }}
{% else %}
---
{% endif %}
</div>
</div>
{% if loop.last %}
<div class="moduleResult">
Итого за модуль: {{ Module.Rate }} / {{ Module.MaxRate }}
</div>
{% endif %}
{% endfor %}
{% if loop.last %}
<div class="disciplineResult">
Итого: {{ DisciplineMap.Rate }} / {{ DisciplineMap.MaxRate }}
</div>
{% endif %}
{% endfor %}
</div>
</div>
<div class="main_modules">
{% for i in range(1, discipline.ModulesCount) %}
<table border="0" cellspacing="0" class="module_table">
<tr class="table_module">
<td colspan="3">{{ discipline[i].ModuleTitle }}</td>
</tr>
<tr class="table_top">
<td width="500px">Мероприятие</td>
<td>Дата</td>
<td>Балл</td>
</tr>
{% for j in range(1, discipline[i].SubmodulesCount) %}
{{ mod.event(discipline[i][j].Title, discipline[i][j].Date, discipline[i][j].Rate, discipline[i][j].MaxRate) }}
{% endfor %}
</table>
{{ mod.module_result(discipline[i].Rate, discipline[i].MaxRate) }}
{% endfor %}
<div class="result_division"></div>
<div class="main_result">
<div class="main_result_text">Суммарный балл:</div>
<div class="main_result_value">{{ discipline.Rate }}/</div>
<div class="main_result_max_value">{{ discipline.MaxRate }}</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
......@@ -11,6 +11,7 @@ body { /* Для корректного отображения окон */
body {
background-color: #f1f1f1;
overflow-y: scroll;
min-width: 1025px;
}
div {
height: auto;
......@@ -108,9 +109,57 @@ a:hover {
color: #0183ce;
}
.top_user > div {
display: inline;
}
/*------------------------------------------------------------------------------------*/
/*-----------------------------------HEAD-------------------------------------------------*/
.profile_wrapper {
background-color: #ffffff;
width: 400px;
padding: 5px;
font-size: 11pt;
position: absolute;
z-index: 9999;
right: 15px;
top: 45px;
border-radius: 5px;
box-shadow: 0 0 0 1px #ddd,0 3px 4px -3px #ddd;
}
.profile_clearFix
{
padding: 5px;
margin: 0 auto;
}
.profile_clearFix .label
{
float: left;
font-size: 10pt;
width: 120px;
color: #757575;
}
.profile_clearFix .labeled_info
{
font-size: 10pt;
}
.profile_clearFix .username
{
font-weight: 600;
}
.profile_wrapper .profile_delimeter
{
padding-bottom: 10px;
border-bottom: 1px solid #ccc;
}
/*------------------------------------------------------------------------------------*/
/*------------------------------------MAIN--------------------------------------------*/
.main {
......
.main_teachers_content {
margin-top: 20px;
text-align: center;
/*background-color: #f1f1f1; */
}
.teachers_part_color {
padding-left: 5px;
padding-right: 5px;
background-color: #f1f1f1;
display: inline-block;
}
.teachers_tittle {
display: inline-block;
font: 10pt sans-serif;
color: #2bbd1a;
}
.teachers_info {
display: inline-block;
font: 9pt sans-serif;
color: #757575;
}
.main_modules {
padding-left: 20px;
padding-right: 20px;
}
.module_table {
margin-top: 20px;
margin-left:auto;
margin-right:auto;
width: 800px;
text-align: center;
border-radius: 5px;
}
.table_module {
background-color: #3399cc;
font: 11pt sans-serif;
color: #ffffff;
}
.table_top {
background-color: #f1f1f1;
font: 10pt sans-serif;
color: #0183ce;
}
.module_table td {
/*border: 1px solid #ccc; */
}
.table_content {
font: 10pt sans-serif;
color: #757575;
height: 25px;
}
.table_content:hover {
background-color: #f1f1f1;
}
.module_result {
text-align: right;
margin-top: 10px;
margin-left:auto;
margin-right:auto;
width: 800px;
}
.module_result_text {
display: inline-block;
font: 11pt sans-serif;
color: #0183ce;
}
.module_result_value {
display: inline-block;
font: 11pt sans-serif;
color: #867575;
}
.module_result_max_value {
display: inline-block;
font: 11pt sans-serif;
color: #02a40c;
}
.result_division {
margin-top: 10px;
width: 100%;
border-bottom:1pt solid;
border-color: #ccc;
}
.main_result {
text-align: center;
margin-top: 10px;
margin-left:auto;
margin-right:auto;
width: 800px;
}
.main_result_text {
display: inline-block;
font: 11pt sans-serif;
color: #0183ce;
}
.main_result_value {
display: inline-block;
font: 11pt sans-serif;
color: #867575;
}
.main_result_max_value {
display: inline-block;
font: 11pt sans-serif;
color: #02a40c;
}
tr.table_content td {
border-bottom:1pt solid;
border-color: #ccc;
}
tr.table_top td {
border-bottom:1pt solid;
border-color: #ccc;
}
.mapHeader
{
font-size: 11pt;
width: 70%;
margin: 0 auto;
margin-top: 10px;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}
.clearFix
{
padding: 10px;
margin: 0 auto;
}
.clearFix .label
{
float: left;
width: 250px;
color: #757575;
}
.clearFix .discTitle
{
font-weight: 600;
}
.mapContent
{
font-size: 11pt;
width: 70%;
margin: 0 auto;
color: #333;
}
.moduleBlock
{
background-color: #3399cc;
padding: 5px;
text-align: center;
color: #FFF;
margin-top: 10px;
}
.submoduleBlock
{
padding: 5px;
border-bottom: 1px solid #ccc;
}
.disciplineResult
{
padding: 5px;
margin-top: 10px;
text-align: center;
color: #fff;
background: forestgreen;
font-weight: 600;
}
.moduleResult
{
padding: 5px;
border-bottom: 1px solid #ccc;
text-align: center;
background: #f1f1f1;
font-weight: 600;
}
.submoduleBlock:hover
{
background: #f1f1f1;
}
.submoduleBlock > div
{
display: inline-block;
vertical-align: middle;
}
.submoduleBlock .submoduleTitle
{
width: 65%;
color: #000;
}
.submoduleBlock .submoduleRate
{
width: 10%;
text-align: center;
}
.submoduleBlock .submodulePercent
{
width: 5%;
text-align: center;
}
.submoduleBlock .submoduleDate
{
width: 18%;
text-align: center;
color: #757575;
}
\ No newline at end of file
$(function()
{
// Показ профиля при наведении
$('#top_username').hover(
function callback(eventObject) {
$('#profileInfo').css('display', 'block');
},
function callback(eventObject) {
$('#profileInfo').css('display', 'none');
});
});
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment