|
|
|
@ -4,6 +4,10 @@
|
|
|
|
|
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html">
|
|
|
|
|
<head>
|
|
|
|
|
<link rel="stylesheet" href="../css/paper.css"/>
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"/>
|
|
|
|
|
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
@ -31,6 +35,9 @@
|
|
|
|
|
href="#nav-main" role="tab" aria-controls="nav-main" aria-selected="true">Статья</a>
|
|
|
|
|
<a class="nav-item nav-link" id="nav-latex-tab" data-toggle="tab"
|
|
|
|
|
href="#nav-latex" role="tab" aria-controls="nav-latex" aria-selected="false">Latex</a>
|
|
|
|
|
<a class="nav-item nav-link" id="nav-references-tab" data-toggle="tab"
|
|
|
|
|
href="#nav-references" role="tab" aria-controls="nav-references"
|
|
|
|
|
aria-selected="false">References</a>
|
|
|
|
|
</div>
|
|
|
|
|
</nav>
|
|
|
|
|
<div class="tab-content" id="nav-tabContent">
|
|
|
|
@ -71,54 +78,56 @@
|
|
|
|
|
th:field="*{comment}"></textarea>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="title">Ссылка на сайт конференции:</label>
|
|
|
|
|
<input class="form-control" id="url" type="text"
|
|
|
|
|
placeholder="Url"
|
|
|
|
|
th:field="*{url}"/>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label>Дедлайны:</label>
|
|
|
|
|
<div class="row" th:each="deadline, rowStat : *{deadlines}">
|
|
|
|
|
<input type="hidden" th:field="*{deadlines[__${rowStat.index}__].id}"/>
|
|
|
|
|
<div class="col-6">
|
|
|
|
|
<input type="date" class="form-control" name="deadline"
|
|
|
|
|
th:field="*{deadlines[__${rowStat.index}__].date}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-4">
|
|
|
|
|
<input class="form-control" type="text" placeholder="Описание"
|
|
|
|
|
th:field="*{deadlines[__${rowStat.index}__].description}"/>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="title">Ссылка на сайт конференции:</label>
|
|
|
|
|
<input class="form-control" id="url" type="text"
|
|
|
|
|
placeholder="Url"
|
|
|
|
|
th:field="*{url}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-2">
|
|
|
|
|
<a class="btn btn-danger float-right"
|
|
|
|
|
th:onclick="|$('#deadlines${rowStat.index}\\.description').val('');
|
|
|
|
|
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label>Дедлайны:</label>
|
|
|
|
|
<div class="row" th:each="deadline, rowStat : *{deadlines}">
|
|
|
|
|
<input type="hidden" th:field="*{deadlines[__${rowStat.index}__].id}"/>
|
|
|
|
|
<div class="col-6">
|
|
|
|
|
<input type="date" class="form-control" name="deadline"
|
|
|
|
|
th:field="*{deadlines[__${rowStat.index}__].date}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-4">
|
|
|
|
|
<input class="form-control" type="text" placeholder="Описание"
|
|
|
|
|
th:field="*{deadlines[__${rowStat.index}__].description}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-2">
|
|
|
|
|
<a class="btn btn-danger float-right"
|
|
|
|
|
th:onclick="|$('#deadlines${rowStat.index}\\.description').val('');
|
|
|
|
|
$('#deadlines${rowStat.index}\\.date').val('');
|
|
|
|
|
$('#addDeadline').click();|"><span
|
|
|
|
|
aria-hidden="true"><i class="fa fa-times"/></span>
|
|
|
|
|
</a>
|
|
|
|
|
aria-hidden="true"><i class="fa fa-times"/></span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<p th:if="${#fields.hasErrors('deadlines')}" th:errors="*{deadlines}"
|
|
|
|
|
class="alert alert-danger">Incorrect title</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<p th:if="${#fields.hasErrors('deadlines')}" th:errors="*{deadlines}"
|
|
|
|
|
class="alert alert-danger">Incorrect title</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<input type="submit" id="addDeadline" name="addDeadline" class="btn btn-primary"
|
|
|
|
|
value="Добавить
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<input type="submit" id="addDeadline" name="addDeadline"
|
|
|
|
|
class="btn btn-primary"
|
|
|
|
|
value="Добавить
|
|
|
|
|
дедлайн"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label>Авторы:</label>
|
|
|
|
|
<select class="selectpicker form-control" multiple="true" data-live-search="true"
|
|
|
|
|
title="-- Выберите авторов --"
|
|
|
|
|
th:field="*{authorIds}">
|
|
|
|
|
<option th:each="author: ${allAuthors}" th:value="${author.id}"
|
|
|
|
|
th:text="${author.lastName}">Status
|
|
|
|
|
</option>
|
|
|
|
|
</select>
|
|
|
|
|
<p th:if="${#fields.hasErrors('authorIds')}" th:errors="*{authorIds}"
|
|
|
|
|
class="alert alert-danger">Incorrect title</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label>Авторы:</label>
|
|
|
|
|
<select class="selectpicker form-control" multiple="true"
|
|
|
|
|
data-live-search="true"
|
|
|
|
|
title="-- Выберите авторов --"
|
|
|
|
|
th:field="*{authorIds}">
|
|
|
|
|
<option th:each="author: ${allAuthors}" th:value="${author.id}"
|
|
|
|
|
th:text="${author.lastName}">Status
|
|
|
|
|
</option>
|
|
|
|
|
</select>
|
|
|
|
|
<p th:if="${#fields.hasErrors('authorIds')}" th:errors="*{authorIds}"
|
|
|
|
|
class="alert alert-danger">Incorrect title</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="form-group files-list" id="files-list">
|
|
|
|
|
<label>Файлы:</label>
|
|
|
|
@ -167,6 +176,125 @@
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="tab-pane fade" id="nav-references" role="tabpanel"
|
|
|
|
|
aria-labelledby="nav-profile-tab">
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label>References:</label>
|
|
|
|
|
<th:block th:each="reference, rowStat : *{references}">
|
|
|
|
|
<div class="row" th:id="|reference${rowStat.index}|"
|
|
|
|
|
th:style="${reference.deleted} ? 'display: none;' :''">
|
|
|
|
|
|
|
|
|
|
<div class="form-group col-11">
|
|
|
|
|
<a data-toggle="collapse"
|
|
|
|
|
th:href="${'#collapseReference'+rowStat.index}"
|
|
|
|
|
aria-expanded="false">
|
|
|
|
|
<div class="collapse-heading"
|
|
|
|
|
th:text="${(reference.referenceType.toString() == 'ARTICLE'?'Статья':'Книга') +'. '
|
|
|
|
|
+(reference.publicationTitle==null?'':reference.publicationTitle+'. ')+(reference.authors==null?'':reference.authors+'. ') }">
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-1">
|
|
|
|
|
<a class="btn btn-danger float-right"
|
|
|
|
|
th:onclick="|$('#references${rowStat.index}\\.deleted').val('true'); $('#reference${rowStat.index}').hide(); |"><span
|
|
|
|
|
aria-hidden="true"><i class="fa fa-times"/></span>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="collapse" th:id="${'collapseReference'+rowStat.index}">
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].id}"/>
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].deleted}"/>
|
|
|
|
|
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4">Вид публикации:</label>
|
|
|
|
|
<select class="form-control col-7"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].referenceType}">
|
|
|
|
|
<option th:each="type : ${allReferenceTypes}"
|
|
|
|
|
th:value="${type}"
|
|
|
|
|
th:text="${type.typeName}">Type
|
|
|
|
|
</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4">Авторы:</label>
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control col-7 autocomplete author"
|
|
|
|
|
name="authors"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].authors}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4 ">Название публикации:</label>
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control col-7 autocomplete publicationTitle"
|
|
|
|
|
name="publicationTitle"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].publicationTitle}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4">Год издания:</label>
|
|
|
|
|
<input type="number" class="form-control col-7 "
|
|
|
|
|
name="publicationYear"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].publicationYear}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4">Издательство:</label>
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control col-7 autocomplete publisher"
|
|
|
|
|
name="publisher"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].publisher}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4">Страницы:</label>
|
|
|
|
|
<input type="text" class="form-control col-7" name="pages"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].pages}"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group col-12">
|
|
|
|
|
<label class="col-4">Название журнала или сборника статей
|
|
|
|
|
конференции:</label>
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control col-7 autocomplete journalOrCollectionTitle"
|
|
|
|
|
name="journalOrCollectionTitle"
|
|
|
|
|
th:field="*{references[__${rowStat.index}__].journalOrCollectionTitle}"/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</th:block>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<input type="submit" id="addReference" name="addReference"
|
|
|
|
|
class="btn btn-primary"
|
|
|
|
|
value="Добавить источник"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<div class="col-12 form-group">
|
|
|
|
|
<label for="formatStandard">Стандарт форматирования:</label>
|
|
|
|
|
|
|
|
|
|
<select class="form-control" th:field="*{formatStandard}"
|
|
|
|
|
id="formatStandard">
|
|
|
|
|
<option th:each="standard : ${allFormatStandards}"
|
|
|
|
|
th:value="${standard}"
|
|
|
|
|
th:text="${standard.standardName}">standard
|
|
|
|
|
</option>
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="col-12 form-group">
|
|
|
|
|
<button id="formatBtn" class="btn btn-primary text-uppercase"
|
|
|
|
|
onclick="getFormattedReferences()"
|
|
|
|
|
type="button">
|
|
|
|
|
Форматировать
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="col-12">
|
|
|
|
|
<textarea class="form-control"
|
|
|
|
|
id="formattedReferencesArea"></textarea>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-4 offset-md-1 col-sm-12 offset-sm-0">
|
|
|
|
@ -379,6 +507,63 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getFormattedReferences() {
|
|
|
|
|
|
|
|
|
|
var formData = new FormData(document.forms.paperform);
|
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
|
|
|
xhr.open("POST", urlReferencesFormatting);
|
|
|
|
|
console.log(formData);
|
|
|
|
|
xhr.send(formData);
|
|
|
|
|
|
|
|
|
|
xhr.onload = function () {
|
|
|
|
|
if (this.status == 200) {
|
|
|
|
|
console.debug(this.response);
|
|
|
|
|
$('#formattedReferencesArea').val(this.response);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
showFeedbackMessage("Ошибка при форматировании списка литературы", MessageTypesEnum.DANGER);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<script th:inline="javascript">
|
|
|
|
|
/*<![CDATA[*/
|
|
|
|
|
|
|
|
|
|
var autoCompleteData = /*[[${autocompleteData}]]*/ 'default';
|
|
|
|
|
console.log(autoCompleteData);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$(".autocomplete.author").autocomplete({
|
|
|
|
|
source: autoCompleteData.authors,
|
|
|
|
|
minLength: 0,
|
|
|
|
|
}).focus(function () {
|
|
|
|
|
$(this).autocomplete("search");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$(".autocomplete.publicationTitle").autocomplete({
|
|
|
|
|
source: autoCompleteData.publicationTitles,
|
|
|
|
|
minLength: 0,
|
|
|
|
|
}).focus(function () {
|
|
|
|
|
$(this).autocomplete("search");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$(".autocomplete.publisher").autocomplete({
|
|
|
|
|
source: autoCompleteData.publishers,
|
|
|
|
|
minLength: 0,
|
|
|
|
|
}).focus(function () {
|
|
|
|
|
$(this).autocomplete("search");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$(".autocomplete.journalOrCollectionTitle").autocomplete({
|
|
|
|
|
source: autoCompleteData.journalOrCollectionTitles,
|
|
|
|
|
minLength: 0,
|
|
|
|
|
}).focus(function () {
|
|
|
|
|
$(this).autocomplete("search");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*]]>*/
|
|
|
|
|
</script>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|