190 lines
10 KiB
HTML
190 lines
10 KiB
HTML
{% extends 'base_main.html' %}
|
|
|
|
{% block title %}{{ task.name }}{% endblock %}
|
|
|
|
{% block scripts %}
|
|
function deleteFile(file_id) {
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/admin/task?task_id={{ task.id }}",
|
|
data: {"id": file_id, "csrfmiddlewaretoken": document.getElementsByName("csrfmiddlewaretoken")[0].value, "action": "delete_file"},
|
|
success: function(data) {
|
|
if (data == "ok") {
|
|
var elem = document.getElementById("file_" + file_id);
|
|
elem.parentNode.removeChild(elem);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function setActionCreate(action) {
|
|
document.getElementById('action_create').value = action;
|
|
}
|
|
{% endblock %}
|
|
|
|
{% block main %}
|
|
<h3 style="margin-bottom: 40px;">Настройки задачи</h3>
|
|
<form method="POST">
|
|
{% csrf_token %}
|
|
<table style="width: 100%;">
|
|
<tr>
|
|
<td style="width: 250px;">
|
|
Название задачи
|
|
</td>
|
|
<td>
|
|
<h4><input type="text" value="{{ task.name }}" name="name" class="task-settings-input" placeholder="Новая задача"></h4>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Легенда
|
|
</td>
|
|
<td>
|
|
<textarea class="task-settings-input task-settings-textarea" name="legend">{{ task.legend }}</textarea>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Формат входных данных
|
|
</td>
|
|
<td>
|
|
<textarea class="task-settings-input task-settings-textarea" name="input_format">{{ task.input_format }}</textarea>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Формат выходных данных
|
|
</td>
|
|
<td>
|
|
<textarea class="task-settings-input task-settings-textarea" name="output_format">{{ task.output_format }}</textarea>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Примечания
|
|
</td>
|
|
<td>
|
|
<textarea class="task-settings-input task-settings-textarea" name="specifications">{{ task.specifications }}</textarea>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Ограничение по времени (мс)
|
|
</td>
|
|
<td>
|
|
<input type="text" name="time_limit" value="{{ task.time_limit }}" class="task-settings-input">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Оценка времени решения (мин)
|
|
</td>
|
|
<td>
|
|
<input type="text" name="time_estimation" value="{{ task.time_estimation }}" class="task-settings-input">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<button type="submit" class="btn btn-light" style="margin-top: 15px;"><i class="fa fa-save"></i> Сохранить</button>
|
|
</form>
|
|
<hr><hr>
|
|
<h3 style="margin-bottom: 40px;">Загрузка тестов и файлов</h3>
|
|
<p style="color: red">{{ error_message }}</p>
|
|
<table style="width: 80%;">
|
|
<tr>
|
|
<td>
|
|
<h4>Тесты</h4>
|
|
</td>
|
|
<td>
|
|
<h4>Файлы</h4>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
{% for test in task.tests %}
|
|
<div id="file_{{ test.id }}">
|
|
<i class="fa fa-file"></i> <button class="btn btn-link" {% if not test.readable %}style="color: red;" {% else %}data-toggle="modal" data-target="#filesModalLong{{ test.id }}"{% endif %}>{{ test.filename }}</button><button class="btn btn-link" style="color: black;" onclick="deleteFile({{ test.id }});"><i class="fa fa-times"></i> </button><br>
|
|
{% if test.readable %}
|
|
<form method="POST">{% csrf_token %}
|
|
<!-- Modal -->
|
|
<div class="modal fade bd-example-modal-lg" id="filesModalLong{{ test.id }}" tabindex="-1" role="dialog" aria-labelledby="filesModalLongTitle{{ test.id }}" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="filesModalLongTitle{{ test.id }}">{{ test.filename }}</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<textarea cols="82" rows="30" name="text">{{ test.text }}</textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
{% if test.can_be_sample %}Использовать как пример <input type="checkbox" name="is_sample" {% if test.is_sample %}checked{% endif %}>{% endif %}
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal"><i class="fa fa-times"></i> Close</button>
|
|
<input name="action" value="save_test" type="hidden">
|
|
<input name="test_id" value="{{ test.id }}" type="hidden">
|
|
<button type="submit" class="btn btn-primary"><i class="fa fa-save"></i> Save</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
{% endif %}
|
|
{% endfor %}
|
|
<input type="file" style="display: none;" form="form_test_upload" onchange="this.form.submit();" class="btn form-control-file" id="test-upload" value="Выбрать файл" name="file">
|
|
<label for="test-upload" class="btn btn-primary"><i class="fa fa-upload"></i> Загрузить тесты</label><button style="margin-left: 10px; margin-top: -8px;" class="btn btn-success" data-toggle="modal" data-target="#exampleModalLongnewtest" onclick="setActionCreate('create_test');"><i class="fa fa-plus"></i></button>
|
|
<form method="POST" enctype="multipart/form-data" id="form_test_upload">
|
|
<input name="action" type="hidden" value="test_upload">
|
|
{% csrf_token %}
|
|
</form>
|
|
</td>
|
|
<td>
|
|
{% for file in task.files %}
|
|
<div id="file_{{ file.id }}">
|
|
<i class="fa fa-file"></i> <button class="btn btn-link" {% if not file.readable %}style="color: red;"{% endif %}>{{ file.filename }}</button><button class="btn btn-link" style="color: black;" onclick="deleteFile({{ file.id }});"><i class="fa fa-times"></i> </button><br>
|
|
</div>
|
|
{% endfor %}
|
|
<input type="file" style="display: none;" form="form_file_upload" onchange="this.form.submit();" class="btn form-control-file" id="file-upload" value="Выбрать файл" name="file">
|
|
<label for="file-upload" class="btn btn-primary"><i class="fa fa-upload"></i> Загрузить файлы</label><button style="margin-left: 10px; margin-top: -8px;" class="btn btn-success" data-toggle="modal" data-target="#exampleModalLongnewtest" onclick="setActionCreate('create_file');"><i class="fa fa-plus"></i></button>
|
|
<form method="POST" enctype="multipart/form-data" id="form_file_upload">
|
|
<input name="action" type="hidden" value="file_upload">
|
|
{% csrf_token %}
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<form method="POST">
|
|
{% csrf_token %}
|
|
<div class="modal fade" id="exampleModalLongnewtest" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitlenewtest" aria-hidden="true">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="exampleModalLongTitlenewtest">Создать новый файл</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<input type="text" placeholder="Имя файла" name="newfile_name">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fa fa-times"></i> Закрыть</button>
|
|
<button type="submit" class="btn btn-success"><i class="fa fa-file"></i> Создать</button>
|
|
<input id="action_create" type="hidden" name="action" value="">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
{% endblock %} |