Коммит 6299528a создал по автору AdLeGeR's avatar AdLeGeR
Просмотр файлов

Merge branch '160-баг-фикс-в-разделе-проектов' of...

Merge branch '160-баг-фикс-в-разделе-проектов' of https://github.com/RushanCources/Project-38 into 160-баг-фикс-в-разделе-проектов
владельцы bb2565d6 05825b44
......@@ -28,6 +28,8 @@ def index(request: HttpRequest):
projects = Project.objects.filter(student=request.user)
elif request.user.role == 'Учитель':
projects = Project.objects.filter(teacher=request.user)
elif request.user.role == 'Администратор':
projects = Project.objects.all()
else:
projects = []
......@@ -40,12 +42,24 @@ def index(request: HttpRequest):
context_projects = []
for project in projects:
files = list(File.objects.filter(project=project, version=1))
variables = vars(project)
values = {key : val for key, val in zip(variables.keys(), variables.values()) if key != '_state'}
pp = ProjectPack(**values)
pp.files = files
context_projects.append(pp)
# files = list(File.objects.filter(project=project, version=1))
# variables = vars(project)
# values = {key : val for key, val in zip(variables.keys(), variables.values()) if key != '_state'}
# pp = ProjectPack(**values)
# pp.files = files
full_teacher_name = project.teacher.last_name + ' ' + project.teacher.first_name[0] + '. ' + project.teacher.middle_name[0] + '.'
full_student_name = project.student.last_name + ' ' + project.student.first_name[0] + '. ' + project.student.middle_name[0] + '.'
some_project = {
"name" : project.name,
"descr": project.description,
"status": project.get_status(),
"type": project.get_type(),
"subjects" : project.get_subjects(),
"teacher" : full_teacher_name,
"student": full_student_name,
"id" : project.id,
}
context_projects.append(some_project)
return render(request, "projects/index.html", context={'projects': context_projects,
'has_projects': len(context_projects) > 0})
......@@ -58,9 +72,11 @@ def index(request: HttpRequest):
presentation_file = File.objects.filter(project=project, version=1, _tag='Презентация').first()
annotation_file = File.objects.filter(project=project, version=1, _tag='Аннотация').first()
other_files = File.objects.filter(project=project, version=1, _tag='Другое')
full_teacher_name = project.teacher.last_name + ' ' + project.teacher.first_name + ' ' + project.teacher.middle_name
full_student_name = project.student.last_name + ' ' + project.student.first_name + ' ' + project.student.middle_name
context = {"name": project.name,
"teacher": project.teacher.full_Name,
"student": project.student.full_Name,
"teacher": full_teacher_name,
"student": full_student_name,
"avaurl_of_teacher": project.teacher.avatar.url,
"avaurl_of_student": project.student.avatar.url,
"status": project.get_status(),
......@@ -148,8 +164,8 @@ def create(request: HttpRequest):
new_id = 1
else:
new_id = last_user.pk + 1
teacher: User = User.objects.create_user(username=new_id, first_name=another_teacher.split()[0],
last_name=another_teacher.split()[1], middle_name=another_teacher.split()[2],
teacher: User = User.objects.create_user(username=new_id, first_name=another_teacher.split()[1],
last_name=another_teacher.split()[0], middle_name=another_teacher.split()[2],
role='Учитель', id=new_id)
teacher.set_password(User.objects.make_random_password(30))
teacher.is_other_teacher = True
......
......@@ -541,4 +541,5 @@
background: rgba(131, 131, 131, 0.3);
color: #fff;
border-radius: 3px;
padding: 3px;
}
\ Нет новой строки в конце файла
......@@ -95,6 +95,7 @@
.subj {
width: 40%;
position: relative;
}
.file-input {
......@@ -175,4 +176,81 @@
border: 1px solid #ff1c25;
background: #ff828230;
color: #000000;
}
.form-input {
width: 100%;
border-radius: 5px;
padding: 10px 5px;
border: 1px solid #00000030;
color: #000;
font-size: 16px;
font-weight: 400;
margin-bottom: 15px;
}
.new-theme-btns {
width: 100%;
display: flex;
justify-content: space-between;
}
.new-theme-textarea {
min-height: 180px;
resize: none;
color: #000;
font-size: 16px;
line-height: 18px;
font-weight: 400;
font-family: inherit;
}
.search-result-list {
margin-top: -15px;
position: absolute;
z-index: 4;
width: 100%;
background: #fff;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
max-height: 160px;
overflow-y: auto;
}
.search-result-item {
padding: 10px;
font-size: 16px;
font-weight: 300;
cursor: pointer;
}
.search-result-item:hover {
background: #ccc;
}
.new-theme-subjects-list {
flex-wrap: wrap;
display: flex;
justify-content: flex-start;
margin-bottom: 15px;
gap: 10px;
}
.new-theme-subjects-div {
position: absolute;
top: -7.5px;
right: -7.5px;
width: 15px;
height: 15px;
background-size: auto;
background: url('../../img/global/del.svg') no-repeat center center;
cursor: pointer;
}
.new-theme-subjects-item {
position: relative;
padding: 5px 15px;
border: 1px solid #1f3f76;
border-radius: 5px;
font-size: 16px;
font-weight: 400;
}
\ Нет новой строки в конце файла
.main {
width: 80%;
max-width: 1202px;
}
.no-projects {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: 20px;
fill: #103A84;
color : #103A84;
font-weight: 700;
font-size: 18px;
}
.no-projects-svg {
width: 300px;
}
.btn {
padding: 10px 25px;
box-sizing: border-box;
border: 2px solid #103A84;
outline: none;
cursor: pointer;
font-size: 14px;
font-weight: 700;
border-radius: 5px;
background: #fff;
transition: 0.3s background;
}
.main-nav {
position: relative;
min-width: 50%;
margin: 20px auto;
margin-bottom: 50px;
}
.search{
margin-bottom: 20px;
width: calc(100% - 200px);
max-width: 80%;
display: flex;
justify-content: center;
align-items: center;
}
.search-input {
width: 100%;
border: 1px solid #103A84;
border-radius: 30px;
background: #fff;
outline: none;
padding: 12px 20px;
font-weight: 400;
font-size: 14px;
line-height: 16px;
}
.search-button {
width: 40px;
height: 40px;
margin-left: -40px;
padding: 19px;
border-top-right-radius: 30px;
border-bottom-right-radius: 30px;
border: none;
color: transparent;
background: #103A84 url('../../img/admin_menu/search.svg') no-repeat 40% center;
cursor: pointer;
}
.top-nav {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.btn-filter {
background: #103A84;
color: #fff;
}
.btn-filter:hover {
background-color: #224581;
}
.btn-filter:active {
background-color: #142b53;
}
.filter {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.div-list {
width: 30%;
display: flex;
justify-content: space-between;
align-items: center;
}
.list-name{
margin: 0;
width: 50%;
background: #103A84;
padding: 10px 8px;
color: #fff;
font-weight: 700;
font-size: 14px;
line-height: 16px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.list-names {
position: relative;
margin: 0;
padding: 0;
width: 50%;
list-style: none;
}
.list{
position: absolute;
z-index: 2;
width: 100%;
max-height: 200px;
overflow-y: auto;
display: none;
padding: 0;
margin: 0;
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.5);
background: #fff;
}
.list-p {
margin: 0;
padding: 9px 8px;
border: 1px solid #103A84;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
width: 100%;
min-height: 36px;
font-size: 14px;
line-height: 16px;
font-weight: 400;
color: #121212;
background: #fff url('../../img/global/arrow-down.svg') no-repeat 95% center;
cursor: pointer;
}
.block {
display: none;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: #F5F5F5;
pointer-events: none;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
border: 1px solid #103A84;
}
.list-li {
padding: 9px 8px;
font-size: 14px;
line-height: 16px;
font-weight: 400;
color: #121212;
cursor: pointer;
}
.list-li:hover {
background: #ccc;
}
.input-filter {
height: 0px;
position: absolute;
opacity: 0;
}
.filter-checkbox {
margin-left: 5px;
}
.label-checkbox {
cursor: pointer;
}
.new-project-link {
margin: 10px auto;
padding: 20px;
......@@ -25,92 +229,218 @@
margin-left: 5px;
}
.content {
width: 100%;
display: flex;
flex-wrap: wrap;
gap: 50px;
}
.project {
position: relative;
padding: 20px;
display: flex;
align-items: flex-end;
justify-content: flex-start;
width: calc((100% - 100px) / 3);
min-width: 300px;
height: 300px;
border-radius: 10px;
background: #fff;
overflow: hidden;
}
.project-content {
display: flex;
flex-direction: column;
position: relative;
z-index: 2;
width: 100%;
height: 100%;
}
.title {
margin: 0;
font-weight: 300;
text-align: center;
font-size: 34px;
font-weight: 700;
height: 80%;
overflow: hidden;
text-align: left;
word-break: break-all;
}
.no-projects {
.subtitle {
margin-top: auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: 20px;
fill: #103A84;
color : #103A84;
font-weight: 700;
font-size: 18px;
font-weight: 400;
font-size: 16px;
}
.no-projects-svg {
width: 300px;
.sub-ball {
margin: 0 5px;
width: 3px;
height: 3px;
background: #ffffff;
border-radius: 50%;
}
.main {
width: 70%;
.send-request {
background: linear-gradient(270deg, rgba(207,27,42,1) 13%, rgba(255,27,46,1) 99%);
color: #fff;
}
.flex { /* Контейнер проекта */
width: 100%;
margin-top: 5%;
min-height: 300px;
background-color: #FFFFFF;
border-radius: 10px;
box-shadow: 0px 0px 4px 3px rgba(62.69, 62.69, 62.69, 0.27);
.on-work {
background: linear-gradient(270deg, #f7b11a 13%, #ffb51b 99%);
color: #fff;
}
.done {
background: linear-gradient(270deg, #16bb48 13%, #19ca4e 99%);
color: #fff;
}
.anim {
position: absolute;
top: 70px;
left: 55%;
}
.anim-send-request {
display: flex;
flex-direction: column;
justify-content: space-around;
gap: 10px;
}
.cap { /* Название*/
font-size: xx-large;
text-align: center;
padding: 2%;
.anim-done {
position: absolute;
top: 20px;
left: 55%;
}
.text { /* Описание*/
align-self: center;
width: 90%;
min-height: 40px;
.gear {
position: absolute;
transition: opacity 0.3s linear;
animation-duration: 5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
.files { /* main-div всех файлов*/
max-width: 90%;
margin-left: 5%;
.gear1 {
width: 60px;
height: 60px;
top: 19px;
left: 186px;
}
.file { /* div файла*/
.gear2 {
width: 72px;
height: 72px;
top: 51px;
left: 215px;
}
.gear3 {
width: 60px;
height: 60px;
top: 70px;
left: 170px;
}
.filename { /* Название файла*/
.dn {
position: absolute;
transition: opacity 0.3s linear;
animation-duration: 5s;
animation-timing-function: cubic-bezier(0, 0.27, 1, -0.35);
animation-iteration-count: infinite;
}
.dn1 {
animation-name: dn1;
}
a.btn-projects { /* Кнопка проекта*/
align-self: center;
display: flex;
margin-bottom: 2%;
height: 50px;
min-width: 30%;
border: 0;
border-radius: 10px;
background-color: #DBE1FF;
/* text-align: center; */
justify-content: center;
.dn2 {
animation-name: dn2;
}
.dn3 {
animation-name: dn3;
}
.dn-svg {
height: 70px;
}
.ball {
width: 25px;
height: 25px;
border-radius: 50%;
background: rgb(136, 28, 37);
transform: translateY(0px);
transition: opacity 0.3s linear;
animation-duration: 3s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
.ball-anim {
animation-name: ball;
}
.inbtn {
.small-gear-anim {
animation-name: small-gear;
}
.big-gear-anim {
animation-name: big-gear;
}
@keyframes ball {
0% {transform: translateY(0px);}
50% {transform: translateY(-40px);}
100% {transform: translateY(0px);}
}
@keyframes small-gear {
0% {transform: rotate(0deg)}
100% {transform: rotate(360deg)}
}
@keyframes big-gear {
0% {transform: rotate(0deg)}
100% {transform: rotate(-360deg)}
}
@keyframes dn1 {
0% {opacity: 1}
6% {opacity: 0}
12% {opacity: 1}
18% {opacity: 0}
24% {opacity: 1}
30% {opacity: 0}
50% {opacity: 1; transform: translate(-45px);}
100% {transform: translate(0px);}
}
a.btn-projects:hover, a.btn-projects.hover {
box-shadow: 0px 0px 4px 3px rgba(62.69, 62.69, 62.69, 0.55);
@keyframes dn2 {
0% {opacity: 1}
6% {opacity: 0}
12% {opacity: 1}
18% {opacity: 0}
24% {opacity: 1}
30% {opacity: 0}
50% {opacity: 1;}
100% {opacity: 1;}
}
a.btn-projects:active, a.btn-projects.active {
background-color: #798aec;
box-shadow: 0px 0px 4px 3px rgba(62.69, 62.69, 62.69, 0.55);
@keyframes dn3 {
0% {opacity: 1}
6% {opacity: 0}
12% {opacity: 1}
18% {opacity: 0}
24% {opacity: 1}
30% {opacity: 0}
50% {opacity: 1; transform: translate(45px);}
100% {transform: translate(0px);}
}
@media (max-width: 1000px) {
......
......@@ -53,6 +53,10 @@
color: #ffb51b;
}
.done {
color: #19ca4e;
}
.people-fio {
margin: 0;
font-size: 16px;
......
.title {
margin: 0;
margin-bottom: 5px;
font-size: 44px;
}
.subtitle {
display: flex;
align-items: center;
font-weight: 300;
font-size: 16px;
opacity: 0.8;
margin-bottom: 20px;
}
.ball {
margin: 0 5px;
width: 3px;
height: 3px;
background: #000;
border-radius: 50%;
}
.content-list {
width: 100%;
}
.content-item {
margin-bottom: 30px;
}
.span {
display: block;
margin-left: 10px;
margin-bottom: 5px;
font-size: 16px;
font-weight: 300;
color: #000;
}
.content-item > p {
margin: 0;
font-size: 22px;
text-align: justify;
}
.file-list {
margin-bottom: 20px;
}
.file-item {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
}
.file-item:not(:last-child) {
margin-bottom: 15px;
}
.file-label {
position: relative;
padding: 5px 20px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
width: 100%;
font-size: 18px;
border: 2px solid;
border-radius: 10px;
cursor: pointer;
}
.docx {
background: rgba(16, 58, 132, 0.12);
color: #1f68e9ba;
border-color: #1f68e9ba;
}
.ppt {
background-color: rgba(132, 86, 16, .12);
color: #d5731ee3;
border-color: #d5731ee3;
}
.txt {
background-color: rgba(213, 213, 213, 0.12);
color: #929292;
border-color: #929292;
}
.download-link {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
}
.download-link::after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.other-files-title {
margin-bottom: 20px;
padding-left: 13px;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
font-size: 15px;
font-weight: 300;
color: #8b8b8b;
}
.line {
position: relative;
display: block;
width: calc(100% - 60px);
height: 1px;
background: #8b8b8b;
border-radius: 10px;
}
.other-file-list {
display: flex;
flex-wrap: wrap;
}
.other-file-item {
position: relative;
margin-top: 10px;
padding: 5px 10px;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
border: 1px solid #00000030;
border-radius: 5px;
font-size: 16px;
font-weight: 400;
}
\ Нет новой строки в конце файла
......@@ -96,10 +96,31 @@
fill: #fff;
}
.next-btn {
.bottom-div-right {
display: flex;
column-gap: 10px;
margin-left: auto;
}
.finish-btn {
background: #7a7a7a;
pointer-events: none;
}
.finish-active {
pointer-events: auto;
background: #39a43d;
font-weight: 700;
}
.finish-active:hover {
background: #4ab94e;
}
.finish-active:active {
background: #308b33;
}
.skip-btn {
display: none;
}
......
......@@ -61,4 +61,109 @@ function checkbox() {
$('.new-teacher').removeClass('teacher-open');
$('.teacher').addClass('teacher-open');
}
}
\ Нет новой строки в конце файла
}
let subjets = ["Математика", "Алгебра", "Геометрия", "Теория вероятностей и статистика", "Информатика",
"География", "Биология", "Физика", "Химия", "Основы безопасности жизнедеятельности", "Естествознание",
"Экология", "Астрономия", "История", "Обществознание", "Экономика", "Право", "Разговоры о важном", "Краеведение",
"Основы религиозных культур и светской этики", "Родная литература",
"Русский язык", "Литература", "Иностранный язык(Английский)", "Иностранный язык(Французский)",
"Иностранный язык(Немецкий)",
"Труд", "Технология", "Черчение", "Индивидуальный проект", "Физическая культура", "Музыка",
"Изобразительное искусств"]
let input = document.getElementById('theme_subject');
input.oninput = event => {
let len = $('.new-theme-subjects-list')[0].childNodes.length;
if (len < 3) {
const { value } = input;
let ul = $('.search-result-list');
ul.html('');
for (let i = 0; i < subjets.length; i++) {
if (subjets[i].toLowerCase().match(value.toLowerCase()) && value != '') {
let li = document.createElement('li');
li.className = 'search-result-item';
li.innerHTML = subjets[i];
ul.prepend(li);
}
}
result_item();
}
}
function create(text) {
let i = subjets.indexOf(text);
if (i >= 0) {
subjets.splice(i, 1);
}
let li = document.createElement('li');
let ul = $('.new-theme-subjects-list');
let div = document.createElement('div');
li.innerHTML = text;
li.className = 'new-theme-subjects-item';
div.className = 'new-theme-subjects-div';
ul.prepend(li);
li.append(div);
$('.new-theme-subjects-input').val('');
$('.search-result-list').html('');
$('.new-theme-subjects-div').off();
subject_remove();
}
function result_item() {
$('.search-result-item').on('click', function () {
let sub = $(this).html();
create(sub);
let input = $('.subject-input').val();
if (input == '') {
$(".subject-input").val(input + sub);
} else {
$(".subject-input").val(input + ',' + sub);
}
});
}
function subject_remove() {
$('.new-theme-subjects-div').on('click', function () {
let li = this.parentNode;
subjets.push(li.innerText);
li.remove();
let input = $('.subject-input').val();
if (li.innerText.indexOf(',') > -1) {
input = input.replace(',' + li.innerText, '');
} else {
input = input.replace(li.innerText, '');
}
$('.subject-input').val(input);
});
}
$('.new-theme-subjects-input').on('blur', function () {
let results = $('.search-result-item').length;
if (results < 1) {
let len = $('.new-theme-subjects-list')[0].childNodes.length;
if (len < 3) {
let text = $('.new-theme-subjects-input').val().trim();
if (text != '' && text.length > 3) {
create(text);
let input = $('.subject-input').val();
if (input == '') {
$(".subject-input").val(input + text);
} else {
$(".subject-input").val(input + ',' + text);
}
}
}
}
});
\ Нет новой строки в конце файла
let names = $('.title');
for (let i = 0; i < names.length; i++) {
let name = names[i].innerText;
if (name.length > 100) {
name = name.slice(0, 100) + '..';
name = names[i].innerText = name;
}
}
let anim;
$('.send-request').hover(function () {
let bl = 1;
let ball = this.childNodes[1].childNodes;
anim = setInterval(function () {
if (bl == 5) {
clearInterval(anim);
}
$(ball[bl]).addClass('ball-anim');
bl += 2;
}, 300);
}, function () {
let block = this;
$(block.childNodes[1].childNodes).css({ 'opacity': '0' });
clearInterval(anim);
setTimeout(function () {
$(block.childNodes[1].childNodes).css({ 'opacity': '1' });
$(block.childNodes[1].childNodes).removeClass('ball-anim');
}, 400);
});
$('.on-work').hover(function () {
let bl = 1;
let gear = this.childNodes[1].childNodes;
while (bl < 6) {
if (bl == 1 || bl == 5) {
$(gear[bl]).addClass('small-gear-anim');
} else if (bl == 3) {
$(gear[bl]).addClass('big-gear-anim');
}
bl += 2;
}
}, function () {
let block = this;
$(block.childNodes[1].childNodes).css({ 'opacity': '0' });
clearInterval(anim);
setTimeout(function () {
$(block.childNodes[1].childNodes).css({ 'opacity': '1' });
$(block.childNodes[1].childNodes).removeClass('small-gear-anim');
$(block.childNodes[1].childNodes).removeClass('big-gear-anim');
}, 400);
});
$('.done').hover(function () {
let bl = 1;
let done = this.childNodes[1].childNodes;
while (bl < 6) {
if (bl == 1) {
$(done[bl]).addClass('dn1');
} else if (bl == 3) {
$(done[bl]).addClass('dn2');
} else if (bl == 5) {
$(done[bl]).addClass('dn3');
}
bl += 2;
}
}, function () {
let block = this;
$(block.childNodes[1].childNodes).css({ 'opacity': '0' });
clearInterval(anim);
setTimeout(function () {
$(block.childNodes[1].childNodes).css({ 'opacity': '1' });
$(block.childNodes[1].childNodes).removeClass('dn1');
$(block.childNodes[1].childNodes).removeClass('dn2');
$(block.childNodes[1].childNodes).removeClass('dn3');
}, 400);
});
\ Нет новой строки в конце файла
$(document).ready(function() {
let svgs = $('.ok');
if (svgs.length == 6) {
$('.finish-btn').addClass('finish-active');
} else {
$('#finish-form').attr('action', '#');
}
});
\ Нет новой строки в конце файла
......@@ -130,17 +130,21 @@ function subject_remove() {
}
$('.new-theme-subjects-input').on('blur', function () {
let len = $('.new-theme-subjects-list')[0].childNodes.length;
if (len < 3) {
let text = $('.new-theme-subjects-input').val().trim();
if (text != '' && text.length > 3) {
create(text);
let input = $('.subject-input').val();
if (input == '') {
$(".subject-input").val(input + text);
} else {
$(".subject-input").val(input + ',' + text);
let results = $('.search-result-item').length;
if (results < 1) {
let len = $('.new-theme-subjects-list')[0].childNodes.length;
if (len < 3) {
let text = $('.new-theme-subjects-input').val().trim();
if (text != '' && text.length > 3) {
create(text);
let input = $('.subject-input').val();
if (input == '') {
$(".subject-input").val(input + text);
} else {
$(".subject-input").val(input + ',' + text);
}
}
}
}
......@@ -178,8 +182,8 @@ $('.edit').on('click', function () {
li.append(div);
subject_remove();
}
let title = block.childNodes[3].childNodes[1].innerHTML;
let descr = block.childNodes[3].childNodes[3].innerHTML;
let title = block.childNodes[3].childNodes[1].innerText;
let descr = block.childNodes[3].childNodes[3].innerText;
let theme_id = $(block).attr('id');
let subject_input = block.childNodes[1].innerText;
console.log(subject_input);
......@@ -194,9 +198,3 @@ $('.edit').on('click', function () {
$('.theme-id').val(theme_id);
$('.subject-input').val(subject_input);
});
// цвета
function set_color(color) {
console.log(color)
}
\ Нет новой строки в конце файла
......@@ -97,7 +97,7 @@
<button class="btn btn-projects">Завершенные проекты</button>
<div class="btn-projects-icon"></div>
<ul class="projects-list">
{% if close_projects_packs.length == null %}
{% if close_projects_packs|length == null %}
<li class="project-item project-item-none">У вас ещё нет ни одного завершенного проекта🙁</li>
{% else %}
{% for project_pack in close_projects_packs %}
......
......@@ -13,19 +13,20 @@
<div class="formPZ">
<h1 class="form h1">Подача заявки</h1>
<div class="errors">
{% if messages %}
{% for message in messages %}
{% if message.level == DEFAULT_MESSAGE_LEVELS.ERROR %}
<p class="error">{{ message }}</p>
{% endfor %}
{% endif %}
{% endfor %}
</div>
<div class="form">
<h3 class="h3">Название*</h3>
<input name="name" class="wf" required value='{%if name is not None%}{{name}}{%endif%}'/>
<input name="name" class="wf" required value='{%if name is not None%}{{name}}{%endif%}' />
</div>
<div class="form">
<h3 class="h3">Описание*</h3>
<textarea name="description" class="wf ta" required>{%if description is not None%}{{description}}{%endif%}</textarea>
<textarea name="description" class="wf ta"
required>{%if description is not None%}{{description}}{%endif%}</textarea>
</div>
<div class="form selects">
<div class="tea">
......@@ -47,11 +48,13 @@
</div>
<div class="subj">
<h3 class="h3 subj">Предмет*</h3>
<select name="subject" id="selSubj" class="wf" required>
{% for subject_name in subjects_names %}
<option class="opG opt">{{subject_name}}</option>
{% endfor %}
</select>
<div class="new-theme-subjects">
<input type="text" class="new-theme-subjects-input form-input"
placeholder="Введите названние предметной области" id="theme_subject">
<ul class="search-result-list"></ul>
<ul class="new-theme-subjects-list"></ul>
</div>
<input type="hidden" class="subject-input" name="subject" required>
</div>
</div>
<div class="form files">
......@@ -63,6 +66,10 @@
</div>
</form>
<script>
subjects = {{ subjects_names }}
</script>
<script src="{% static 'js/projects/create_page.js' %}"></script>
{% endblock content %}
\ Нет новой строки в конце файла
......@@ -19,7 +19,6 @@
</svg></a>
{% endif %}
{% if not has_projects %}
<h1 class="title">Общий список</h1>
<div class="no-projects">
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" class="no-projects-svg">
<g data-name="01" id="_01">
......@@ -30,24 +29,153 @@
<span class="no-projects-span">У вас ещё ни одного проекта...</span>
</div>
{% else %}
{% load run %}
{% for project in projects %}
<div class="flex" id="flex{{ project.id }}"> <!-- id проекта -->
<p class="cap">{{ project.name }}</p> <!-- Название проекта -->
<p class="text">{{ project.description }}</p> <!-- Описание проекта -->
<p class="text" > {{project.get_status | run}}</p> <!-- Статус проекта -->
<div class="files">
{% for file in project.files %} <!-- цикл для отрисовки файлов -->
<div class="file">
<a href="{% url 'download_file' %}?file_id={{file.id}}"
title="Загрузить файл">{{file.name}}</a>
</div>
{% endfor %}
{% if user.role == "Учитель" or user.role == 'Администратор' %}
<div class="main-nav">
<div class="top-nav">
<form class="search" method="POST">
{% csrf_token %}
{% if name_filter_have %}
<input class="search-input" type="text" placeholder="Поиск..." name="search_names"
value="{{ name_filter }}">
{% else %}
<input class="search-input" type="text" placeholder="Поиск..." name="search_names">
{% endif %}
<input class="search-button" type="submit" name="search_butt">
</form>
</div>
<form class="filter" method="POST">
{% csrf_token %}
<div class="div-list">
<p class="list-name">Группа:</p>
<div class="list-names">
{% if group_filter_have %}
<p class="list-p" id="filter-group">{{ group_filter }}</p>
{% else %}
<p class="list-p" id="filter-group">Не указано</p>
{% endif %}
<ul class="list">
<li class="list-li">Не указано</li>
<li class="list-li">1</li>
<li class="list-li">2</li>
<li class="list-li">3</li>
<li class="list-li">4</li>
<li class="list-li">5</li>
<li class="list-li">6</li>
<li class="list-li">7</li>
<li class="list-li">10</li>
<li class="list-li">11</li>
<li class="list-li">12</li>
<li class="list-li">13</li>
<li class="list-li">14</li>
<li class="list-li">15</li>
<li class="list-li">16</li>
<li class="list-li">17</li>
<li class="list-li">20</li>
<li class="list-li">21</li>
<li class="list-li">22</li>
<li class="list-li">23</li>
<li class="list-li">24</li>
<li class="list-li">25</li>
<li class="list-li">26</li>
<li class="list-li">27</li>
</ul>
</div>
</div>
<div class="div-list">
<p class="list-name">Тип проекта:</p>
<div class="list-names">
{% if role_filter_have %}
<p class="list-p" id="filter-role">{{ role_filter }}</p>
{% else %}
<p class="list-p" id="filter-role">Не указано</p>
{% endif %}
<ul class="list sub-list">
<li class="list-li">Не указано</li>
<li class="list-li">НОУ</li>
<li class="list-li">Проект</li>
</ul>
</div>
<a href="./?id={{ project.id }}" class="a btn-projects"> <!-- кнопка -->
<p class="p inbtn">Редактирование проекта</p>
</a>
</div>
{% endfor %}
<input type="number" class="input-filter input-filter-group" name="group_filter">
<input type="text" class="input-filter input-filter-type" name="type_filter">
<input class="btn btn-filter" type="submit" value="Применить" name="filter_submit" />
</form>
</div>
{% endif %}
<div class="content">
{% load run %}
{% for project in projects %}
{% if project.status == 'send request' %}
<a class="project project{{project.id}} send-request" href="./?id={{ project.id }}">
<div class="anim anim-send-request">
<div class="ball"></div>
<div class="ball"></div>
<div class="ball"></div>
</div>
<div class="project-content">
<h2 class="title">{{ project.name }}</h2>
<span class="subtitle">{{ project.subjects }}</span>
{% if user.role == 'Ученик' %}
<span>{{ project.teacher }}</span>
{% else %}
<span>{{ project.student }}</span>
{% endif %}
</div>
</a>
<!-- для проектов на этапе разработки -->
{% elif project.status == 'on work' %}
<a class="project project{{project.id}} on-work" href="./?id={{ project.id }}">
<div class="anim-on-work">
<div class="gear gear1">
<svg enable-background="new 0 0 32 32" version="1.1" viewBox="0 0 32 32" xml:space="preserve" fill="#cf9518" width="60px"><path d="M27.526,18.036L27,17.732c-0.626-0.361-1-1.009-1-1.732s0.374-1.371,1-1.732l0.526-0.304 c1.436-0.83,1.927-2.662,1.098-4.098l-1-1.732c-0.827-1.433-2.666-1.925-4.098-1.098L23,7.339c-0.626,0.362-1.375,0.362-2,0 c-0.626-0.362-1-1.009-1-1.732V5c0-1.654-1.346-3-3-3h-2c-1.654,0-3,1.346-3,3v0.608c0,0.723-0.374,1.37-1,1.732 c-0.626,0.361-1.374,0.362-2,0L8.474,7.036C7.042,6.209,5.203,6.701,4.375,8.134l-1,1.732c-0.829,1.436-0.338,3.269,1.098,4.098 L5,14.268C5.626,14.629,6,15.277,6,16s-0.374,1.371-1,1.732l-0.526,0.304c-1.436,0.829-1.927,2.662-1.098,4.098l1,1.732 c0.828,1.433,2.667,1.925,4.098,1.098L9,24.661c0.626-0.363,1.374-0.361,2,0c0.626,0.362,1,1.009,1,1.732V27c0,1.654,1.346,3,3,3h2 c1.654,0,3-1.346,3-3v-0.608c0-0.723,0.374-1.37,1-1.732c0.625-0.361,1.374-0.362,2,0l0.526,0.304 c1.432,0.826,3.271,0.334,4.098-1.098l1-1.732C29.453,20.698,28.962,18.865,27.526,18.036z M16,21c-2.757,0-5-2.243-5-5s2.243-5,5-5 s5,2.243,5,5S18.757,21,16,21z"/></svg>
</div>
<div class="gear gear2">
<svg enable-background="new 0 0 32 32" version="1.1" viewBox="0 0 32 32" xml:space="preserve" fill="#cf9518" width="72px"><path d="M27.526,18.036L27,17.732c-0.626-0.361-1-1.009-1-1.732s0.374-1.371,1-1.732l0.526-0.304 c1.436-0.83,1.927-2.662,1.098-4.098l-1-1.732c-0.827-1.433-2.666-1.925-4.098-1.098L23,7.339c-0.626,0.362-1.375,0.362-2,0 c-0.626-0.362-1-1.009-1-1.732V5c0-1.654-1.346-3-3-3h-2c-1.654,0-3,1.346-3,3v0.608c0,0.723-0.374,1.37-1,1.732 c-0.626,0.361-1.374,0.362-2,0L8.474,7.036C7.042,6.209,5.203,6.701,4.375,8.134l-1,1.732c-0.829,1.436-0.338,3.269,1.098,4.098 L5,14.268C5.626,14.629,6,15.277,6,16s-0.374,1.371-1,1.732l-0.526,0.304c-1.436,0.829-1.927,2.662-1.098,4.098l1,1.732 c0.828,1.433,2.667,1.925,4.098,1.098L9,24.661c0.626-0.363,1.374-0.361,2,0c0.626,0.362,1,1.009,1,1.732V27c0,1.654,1.346,3,3,3h2 c1.654,0,3-1.346,3-3v-0.608c0-0.723,0.374-1.37,1-1.732c0.625-0.361,1.374-0.362,2,0l0.526,0.304 c1.432,0.826,3.271,0.334,4.098-1.098l1-1.732C29.453,20.698,28.962,18.865,27.526,18.036z M16,21c-2.757,0-5-2.243-5-5s2.243-5,5-5 s5,2.243,5,5S18.757,21,16,21z"/></svg>
</div>
<div class="gear gear3">
<svg enable-background="new 0 0 32 32" version="1.1" viewBox="0 0 32 32" xml:space="preserve" fill="#cf9518" width="60px"><path d="M27.526,18.036L27,17.732c-0.626-0.361-1-1.009-1-1.732s0.374-1.371,1-1.732l0.526-0.304 c1.436-0.83,1.927-2.662,1.098-4.098l-1-1.732c-0.827-1.433-2.666-1.925-4.098-1.098L23,7.339c-0.626,0.362-1.375,0.362-2,0 c-0.626-0.362-1-1.009-1-1.732V5c0-1.654-1.346-3-3-3h-2c-1.654,0-3,1.346-3,3v0.608c0,0.723-0.374,1.37-1,1.732 c-0.626,0.361-1.374,0.362-2,0L8.474,7.036C7.042,6.209,5.203,6.701,4.375,8.134l-1,1.732c-0.829,1.436-0.338,3.269,1.098,4.098 L5,14.268C5.626,14.629,6,15.277,6,16s-0.374,1.371-1,1.732l-0.526,0.304c-1.436,0.829-1.927,2.662-1.098,4.098l1,1.732 c0.828,1.433,2.667,1.925,4.098,1.098L9,24.661c0.626-0.363,1.374-0.361,2,0c0.626,0.362,1,1.009,1,1.732V27c0,1.654,1.346,3,3,3h2 c1.654,0,3-1.346,3-3v-0.608c0-0.723,0.374-1.37,1-1.732c0.625-0.361,1.374-0.362,2,0l0.526,0.304 c1.432,0.826,3.271,0.334,4.098-1.098l1-1.732C29.453,20.698,28.962,18.865,27.526,18.036z M16,21c-2.757,0-5-2.243-5-5s2.243-5,5-5 s5,2.243,5,5S18.757,21,16,21z"/></svg>
</div>
</div>
<div class="project-content">
<h2 class="title">{{ project.name }}</h2>
<span class="subtitle">{{ project.type }} <div class="sub-ball"></div> {{ project.subjects }}</span>
{% if user.role == 'Ученик' %}
<span>{{ project.teacher }}</span>
{% else %}
<span>{{ project.student }}</span>
{% endif %}
</div>
</a>
{% elif project.status == 'done' %}
<!-- для выполненных проектов -->
<a class="project project{{project.id}} done" href="./?id={{ project.id }}">
<div class="anim-done">
<div class="dn">
<svg class="dn-svg" style="enable-background:new 0 0 24 24;" version="1.1" viewBox="5 4 15 15" xml:space="preserve" fill="#129c3c"> <g/><g><path d="M18.3,6.3L9.1,16.4l-2.3-3c-0.3-0.4-1-0.5-1.4-0.2c-0.4,0.3-0.5,1-0.2,1.4l3,4C8.4,18.8,8.7,19,9,19c0,0,0,0,0,0 c0.3,0,0.5-0.1,0.7-0.3l10-11c0.4-0.4,0.3-1-0.1-1.4C19.3,5.9,18.6,5.9,18.3,6.3z"/></g> </svg>
</div>
<div class="dn">
<svg class="dn-svg" style="enable-background:new 5 4 15 15;" version="1.1" viewBox="5 4 15 15" xml:space="preserve" fill="#129c3c"> <g/><g><path d="M18.3,6.3L9.1,16.4l-2.3-3c-0.3-0.4-1-0.5-1.4-0.2c-0.4,0.3-0.5,1-0.2,1.4l3,4C8.4,18.8,8.7,19,9,19c0,0,0,0,0,0 c0.3,0,0.5-0.1,0.7-0.3l10-11c0.4-0.4,0.3-1-0.1-1.4C19.3,5.9,18.6,5.9,18.3,6.3z"/></g> </svg>
</div>
<div class="dn">
<svg class="dn-svg" style="enable-background:new 5 4 15 15;" version="1.1" viewBox="5 4 15 15" xml:space="preserve" fill="#129c3c"> <g/><g><path d="M18.3,6.3L9.1,16.4l-2.3-3c-0.3-0.4-1-0.5-1.4-0.2c-0.4,0.3-0.5,1-0.2,1.4l3,4C8.4,18.8,8.7,19,9,19c0,0,0,0,0,0 c0.3,0,0.5-0.1,0.7-0.3l10-11c0.4-0.4,0.3-1-0.1-1.4C19.3,5.9,18.6,5.9,18.3,6.3z"/></g> </svg>
</div>
</div>
<div class="project-content">
<h2 class="title">{{ project.name }}</h2>
<span class="subtitle">{{ project.type }} <div class="sub-ball"></div> {{ project.subjects }}</span>
{% if user.role == 'Ученик' %}
<span>{{ project.teacher }}</span>
{% else %}
<span>{{ project.student }}</span>
{% endif %}
</div>
</a>
{% endif %}
{% endfor %}
</div>
<script src="{% static 'js/projects/index.js' %}"></script>
<script src="{% static 'js/global/list.js' %}"></script>
{% endif %}
{% endblock %}
\ Нет новой строки в конце файла
......@@ -18,6 +18,8 @@
<link rel="stylesheet" href="{% static 'css/projects/project_page_request.css' %}">
{% elif status == 'on work' %}
<link rel="stylesheet" href="{% static 'css/projects/project_page_work.css' %}">
{% elif status == 'done' %}
<link rel="stylesheet" href="{% static 'css/projects/project_page_done.css' %}">
{% endif %}
{% endblock head %}
......@@ -45,6 +47,8 @@
<span class="send-request">Заявка на рассмотрении руководителем</span>
{% elif status == 'on work' %}
<span class="on-work">Проект в процессе выполнения</span>
{% elif status == 'done' %}
<span class="done">Проект выполнен</span>
{% endif %}
</span>
</div>
......@@ -133,18 +137,12 @@
</ul>
</div>
{% if status == 'send request' and user.role == 'Учитель'%}
{% if status == 'send request' and user.role == 'Учитель' or user.role == 'Администратор' %}
<form method="POST" action="{% url 'approve_project' %}" class="form-btn">
{% csrf_token %}
<input type="hidden" name="project_id" value="{{project_id}}">
<input type="submit" id="approve_project" class="status-input" value="Одобрить проект">
</form>
{% elif status == 'on work' and user.role == 'Учитель' %}
<form method="POST" action="{% url 'close_project' %}" class="form-btn">
{% csrf_token %}
<input type="hidden" name="project_id" value="{{project_id}}">
<input type="submit" id="close_project " class="status-input" value="Завршить проект">
</form>
{% endif %}
{% elif status == 'on work' %}
......@@ -486,11 +484,23 @@
</div>
<div class="bottom-div">
<button class="bottom-btn skip-btn" onclick="skip()">Пропустить</button>
<div class="bottom-div-right">
{% if status == 'on work' and user.role == 'Учитель' or user.role == 'Администратор' %}
<input type="submit" id="close_project " class="bottom-btn finish-btn" value="Завершить проект" form="finish-form">
{% endif %}
<button class="bottom-btn next-btn" onclick="next()" type="button" form="form-on-work">Дальше <svg viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg"><path d="M69.8437,43.3876,33.8422,13.3863a6.0035,6.0035,0,0,0-7.6878,9.223l30.47,25.39-30.47,25.39a6.0035,6.0035,0,0,0,7.6878,9.2231L69.8437,52.6106a6.0091,6.0091,0,0,0,0-9.223Z"/></svg>
</button>
</div>
</div>
</form>
{% if status == 'on work' and user.role == 'Учитель' or user.role == 'Администратор' %}
<form method="POST" action="{% url 'close_project' %}" class="form-btn" id="finish-form">
{% csrf_token %}
<input type="hidden" name="project_id" value="{{project_id}}">
</form>
{% endif %}
<form method="POST" action="{% url 'add_file' %}" enctype="multipart/form-data" id="add-file">
{% csrf_token %}
<input type="hidden" name="file_id" value="-1" />
......@@ -627,6 +637,79 @@
</div>
</div>
</div>
{% elif status == 'done' %}
<h1 class="title">{{ name }}</h1>
<span class="subtitle">{{ project_type }} <div class="ball"></div> {{ subjects }}</span>
<ul class="content-list">
<li class="content-item">
<span class="span">Проблема:</span>
<p>{{problem}}</p>
</li>
<li class="content-item">
<span class="span">Актуальность:</span>
<p>{{relevance}}</p>
</li>
<li class="content-item">
<span class="span">Цель:</span>
<p>{{target}}</p>
</li>
<li class="content-item">
<span class="span">Задачи:</span>
<p>{{tasks}}</p>
</li>
<li class="content-item">
<span class="span">Ожидаемые результаты:</span>
<p>{{expected_results}}</p>
</li>
</ul>
<ul class="file-list">
<li class="file-item">
<label class="file-label docx">
<a href="{% url 'download_file' %}?file_id={{abstract.id}}" title="Загрузить файл" class="download-link">
Реферат
<span class="file-name">{{abstract.name}}</span>
<svg height="32px" version="1.1" viewBox="0 0 32 32" width="32px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g fill="#1f68e9ba"><path d="M19,13 L19,10 L19,10 L13,3 L2.00276013,3 C0.896666251,3 0,3.89833832 0,5.00732994 L0,27.9926701 C0,29.1012878 0.890925393,30 1.99742191,30 L17.0025781,30 C18.1057238,30 19,29.1017876 19,28.0092049 L19,26 L29.0057181,26 C30.6594143,26 32,24.6577357 32,23.0012144 L32,15.9987856 C32,14.3426021 30.6594313,13 29.0057181,13 L19,13 L19,13 L19,13 Z M18,26 L18,28.0066023 C18,28.5550537 17.5523026,29 17.0000398,29 L1.9999602,29 C1.45470893,29 1,28.5543187 1,28.004543 L1,4.99545703 C1,4.45526288 1.44573523,4 1.9955775,4 L12,4 L12,8.99408095 C12,10.1134452 12.8944962,11 13.9979131,11 L18,11 L18,13 L5.99428189,13 C4.34058566,13 3,14.3422643 3,15.9987856 L3,23.0012144 C3,24.6573979 4.3405687,26 5.99428189,26 L18,26 L18,26 L18,26 Z M13,4.5 L13,8.99121523 C13,9.54835167 13.4506511,10 13.9967388,10 L17.6999512,10 L13,4.5 L13,4.5 Z M6.00732994,14 C4.89871223,14 4,14.9001762 4,15.992017 L4,23.007983 C4,24.1081436 4.89833832,25 6.00732994,25 L28.9926701,25 C30.1012878,25 31,24.0998238 31,23.007983 L31,15.992017 C31,14.8918564 30.1016617,14 28.9926701,14 L6.00732994,14 L6.00732994,14 Z M6,16 L6,23 L8.9951185,23 C10.102384,23 11,22.1134452 11,20.9940809 L11,18.0059191 C11,16.8980806 10.1061002,16 8.9951185,16 L6,16 L6,16 Z M7,17 L7,22 L9.00104344,22 C9.55275191,22 10,21.5562834 10,21.0001925 L10,17.9998075 C10,17.4476291 9.55733967,17 9.00104344,17 L7,17 L7,17 Z M14.0048815,16 C12.897616,16 12,16.8865548 12,18.0059191 L12,20.9940809 C12,22.1019194 12.8938998,23 14.0048815,23 L14.9951185,23 C16.102384,23 17,22.1134452 17,20.9940809 L17,18.0059191 C17,16.8980806 16.1061002,16 14.9951185,16 L14.0048815,16 L14.0048815,16 Z M13.9989566,17 C13.4472481,17 13,17.4437166 13,17.9998075 L13,21.0001925 C13,21.5523709 13.4426603,22 13.9989566,22 L15.0010434,22 C15.5527519,22 16,21.5562834 16,21.0001925 L16,17.9998075 C16,17.4476291 15.5573397,17 15.0010434,17 L13.9989566,17 L13.9989566,17 Z M22.9999916,21 C22.9968339,22.1165689 22.1004316,23 20.9951185,23 L20.0048815,23 C18.8938998,23 18,22.1019194 18,20.9940809 L18,18.0059191 C18,16.8865548 18.897616,16 20.0048815,16 L20.9951185,16 C22.1041209,16 22.9968142,16.8948834 22.9999915,18 L22,18 C22,17.4476291 21.5573397,17 21.0010434,17 L19.9989566,17 C19.4472481,17 19,17.4437166 19,17.9998075 L19,21.0001925 C19,21.5523709 19.4426603,22 19.9989566,22 L21.0010434,22 C21.5527519,22 22,21.5562834 22,21.0001925 L22.9999923,21 L22.9999916,21 L22.9999916,21 Z M26,19.5 L24,16 L25,16 L26.5,18.625 L28,16 L29,16 L27,19.5 L29,23 L28,23 L26.5,20.375 L25,23 L24,23 L26,19.5 L26,19.5 Z"/></g></g></svg>
</a>
</label>
</li>
<li class="file-item">
<label class="file-label ppt">
<a href="{% url 'download_file' %}?file_id={{presentation.id}}" title="Загрузить файл" class="download-link">
Презентация
<span class="file-name">{{presentation.name}}</span>
<svg height="32px" version="1.1" viewBox="0 0 32 32" width="32px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g fill="#d5731ee3"><path d="M21,13 L21,10 L21,10 L15,3 L4.00276013,3 C2.89666625,3 2,3.89833832 2,5.00732994 L2,27.9926701 C2,29.1012878 2.89092539,30 3.99742191,30 L19.0025781,30 C20.1057238,30 21,29.1017876 21,28.0092049 L21,26 L28.9931517,26 C30.6537881,26 32,24.6577357 32,23.0012144 L32,15.9987856 C32,14.3426021 30.6640085,13 28.9931517,13 L21,13 L21,13 L21,13 Z M20,26 L20,28.0066023 C20,28.5550537 19.5523026,29 19.0000398,29 L3.9999602,29 C3.45470893,29 3,28.5543187 3,28.004543 L3,4.99545703 C3,4.45526288 3.44573523,4 3.9955775,4 L14,4 L14,8.99408095 C14,10.1134452 14.8944962,11 15.9979131,11 L20,11 L20,13 L12.0068483,13 C10.3462119,13 9,14.3422643 9,15.9987856 L9,23.0012144 C9,24.6573979 10.3359915,26 12.0068483,26 L20,26 L20,26 L20,26 Z M15,4.5 L15,8.99121523 C15,9.54835167 15.4506511,10 15.9967388,10 L19.6999512,10 L15,4.5 L15,4.5 Z M11.9945615,14 C10.8929956,14 10,14.9001762 10,15.992017 L10,23.007983 C10,24.1081436 10.9023438,25 11.9945615,25 L29.0054385,25 C30.1070044,25 31,24.0998238 31,23.007983 L31,15.992017 C31,14.8918564 30.0976562,14 29.0054385,14 L11.9945615,14 L11.9945615,14 Z M18,18 L18,23 L19,23 L19,20 L20.9951185,20 C22.102384,20 23,19.1122704 23,18 C23,16.8954305 22.1061002,16 20.9951185,16 L18,16 L18,18 L18,18 Z M19,17 L19,19 L21.0010434,19 C21.5527519,19 22,18.5561352 22,18 C22,17.4477153 21.5573397,17 21.0010434,17 L19,17 L19,17 Z M12,18 L12,23 L13,23 L13,20 L14.9951185,20 C16.102384,20 17,19.1122704 17,18 C17,16.8954305 16.1061002,16 14.9951185,16 L12,16 L12,18 L12,18 Z M13,17 L13,19 L15.0010434,19 C15.5527519,19 16,18.5561352 16,18 C16,17.4477153 15.5573397,17 15.0010434,17 L13,17 L13,17 Z M26,17 L26,23 L27,23 L27,17 L29,17 L29,16 L24,16 L24,17 L26,17 L26,17 Z"/></g></g></svg>
</a>
</label>
</li>
{% if defence == not None %}
<li class="file-item">
<label class="file-label txt">
<a href="{% url 'download_file' %}?file_id={{defence.id}}" title="Загрузить файл" class="download-link">
Защита
<span class="file-name">{{defence.name}}</span>
<svg height="32px" version="1.1" viewBox="0 0 32 32" width="32px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g fill="#929292"><path d="M19.5,3 L9.00276013,3 C7.89666625,3 7,3.89833832 7,5.00732994 L7,27.9926701 C7,29.1012878 7.89092539,30 8.99742191,30 L24.0025781,30 C25.1057238,30 26,29.1017876 26,28.0092049 L26,10.5 L26,10 L20,3 L19.5,3 L19.5,3 L19.5,3 Z M19,4 L8.9955775,4 C8.44573523,4 8,4.45526288 8,4.99545703 L8,28.004543 C8,28.5543187 8.45470893,29 8.9999602,29 L24.0000398,29 C24.5523026,29 25,28.5550537 25,28.0066023 L25,11 L20.9979131,11 C19.8944962,11 19,10.1134452 19,8.99408095 L19,4 L19,4 Z M20,4.5 L20,8.99121523 C20,9.54835167 20.4506511,10 20.9967388,10 L24.6999512,10 L20,4.5 L20,4.5 Z M10,10 L10,11 L15,11 L15,10 L10,10 L10,10 Z M10,7 L10,8 L17,8 L17,7 L10,7 L10,7 Z M10,13 L10,14 L23,14 L23,13 L10,13 L10,13 Z M10,16 L10,17 L20,17 L20,16 L10,16 L10,16 Z M10,19 L10,20 L23,20 L23,19 L10,19 L10,19 Z M10,22 L10,23 L19,23 L19,22 L10,22 L10,22 Z M10,25 L10,26 L23,26 L23,25 L10,25 L10,25 Z"/></g></g></svg>
</a>
</label>
</li>
{% endif %}
</ul>
<div class="other-files">
<div class="other-files-title">
Другое:
<div class="line"></div>
</div>
<div class="other-files-content">
<ul class="other-file-list">
{% for file in other_files %}
<li class="other-file-item">
<a href="{% url 'download_file' %}?file_id={{file.id}}"
title="Загрузить файл">{{file.name}}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
</div>
</div>
......@@ -713,6 +796,9 @@
{% if status == 'on work' %}
<script src="{% static 'js/projects/project_page_on_work.js' %}"></script>
{% if user.role == 'Учитель' %}
<script src="{% static 'js/projects/project_checking.js' %}"></script>
{% endif %}
{% endif %}
<script src="{% static 'js/projects/project_page.js' %}"></script>
{% endblock %}
\ Нет новой строки в конце файла
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать