#show paper list
This commit is contained in:
parent
ac88ef2704
commit
a4cbb3e3df
@ -116,7 +116,7 @@ dependencies {
|
|||||||
|
|
||||||
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
|
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
|
||||||
|
|
||||||
compile group: 'org.webjars', name: 'font-awesome', version: '5.8.1'
|
compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0'
|
||||||
compile group: 'org.webjars', name: 'bootstrap', version: '4.1.3'
|
compile group: 'org.webjars', name: 'bootstrap', version: '4.1.3'
|
||||||
compile group: 'org.webjars.npm', name: 'vue', version: '2.6.9'
|
compile group: 'org.webjars.npm', name: 'vue', version: '2.6.9'
|
||||||
compile group: 'org.webjars.npm', name: 'vuex', version: '3.1.0'
|
compile group: 'org.webjars.npm', name: 'vuex', version: '3.1.0'
|
||||||
|
@ -17,7 +17,6 @@ public class MailTemplateConfiguration {
|
|||||||
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
|
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
|
||||||
templateEngine.addTemplateResolver(templateResolver);
|
templateEngine.addTemplateResolver(templateResolver);
|
||||||
templateEngine.addTemplateResolver(emailTemplateResolver());
|
templateEngine.addTemplateResolver(emailTemplateResolver());
|
||||||
templateEngine.addTemplateResolver(mvcTemplateResolver());
|
|
||||||
templateEngine.addDialect(new LayoutDialect());
|
templateEngine.addDialect(new LayoutDialect());
|
||||||
templateEngine.addDialect(sec);
|
templateEngine.addDialect(sec);
|
||||||
return templateEngine;
|
return templateEngine;
|
||||||
@ -32,15 +31,4 @@ public class MailTemplateConfiguration {
|
|||||||
emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
||||||
return emailTemplateResolver;
|
return emailTemplateResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClassLoaderTemplateResolver mvcTemplateResolver() {
|
|
||||||
ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
|
|
||||||
emailTemplateResolver.setPrefix("templates");
|
|
||||||
emailTemplateResolver.setTemplateMode("HTML5");
|
|
||||||
emailTemplateResolver.setSuffix(".html");
|
|
||||||
emailTemplateResolver.setOrder(2);
|
|
||||||
emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
|
||||||
return emailTemplateResolver;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
package ru.ulstu.configuration;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
||||||
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
|
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class MvcConfiguration extends WebMvcConfigurerAdapter {
|
|
||||||
@Override
|
|
||||||
public void addViewControllers(ViewControllerRegistry registry) {
|
|
||||||
registry.addViewController("/{articlename:\\w+}");
|
|
||||||
registry.addViewController("/admin/{articlename:\\w+}");
|
|
||||||
registry.addViewController("/papers/{articlename:\\w+}");
|
|
||||||
registry.addViewController("/grants/{articlename:\\w+}");
|
|
||||||
registry.addViewController("/conferences/{articlename:\\w+}");
|
|
||||||
registry.addViewController("/students/{articlename:\\w+}");
|
|
||||||
registry.addRedirectViewController("/", "/index");
|
|
||||||
registry.addRedirectViewController("/default", "/index");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
|
||||||
registry
|
|
||||||
.addResourceHandler("/webjars/**")
|
|
||||||
.addResourceLocations("/webjars/");
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,15 @@
|
|||||||
|
package ru.ulstu.core.controller;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@ApiIgnore
|
||||||
|
public class ForwardingController {
|
||||||
|
@GetMapping(path = "/**/{url:[^\\.]+}")
|
||||||
|
public String forward(@PathVariable("url") String url) {
|
||||||
|
return "forward:/";
|
||||||
|
}
|
||||||
|
}
|
154
src/main/resources/static/core-components/app-index.vue
Normal file
154
src/main/resources/static/core-components/app-index.vue
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
<template>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<router-link to="/papers/papers" class="portfolio-link">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/papers.jpg" alt=""/>
|
||||||
|
</router-link>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Статьи</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" href="./grants/dashboard">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/grants.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Гранты</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" href="./projects/dashboard">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/projects.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Проекты</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" href="./conferences/conferences">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/conf.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Конференции</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" data-toggle="modal" href="/team">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/team.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Команда</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" href="./students/tasks">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/students.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Работа со студентами</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" href="./timeline">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/tasks.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Задачи</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" data-toggle="modal" href="./career.html">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/career.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Карьера</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-sm-6 portfolio-item">
|
||||||
|
<a class="portfolio-link" data-toggle="modal" href="/other">
|
||||||
|
<div class="portfolio-hover">
|
||||||
|
<div class="portfolio-hover-content">
|
||||||
|
<i class="fa fa-arrow-right fa-3x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img class="img-fluid" src="img/main/templates.jpg" alt=""/>
|
||||||
|
</a>
|
||||||
|
<div class="portfolio-caption">
|
||||||
|
<h4>Прочее</h4>
|
||||||
|
<p class="text-muted"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
components: {
|
||||||
|
"paper-list": httpVueLoaderEx("/papers/paper-list.vue")
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getVersion: function () {
|
||||||
|
return appConfig.version;
|
||||||
|
},
|
||||||
|
getMessage: function () {
|
||||||
|
return "hell, Vue!";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted: function () {
|
||||||
|
this.$nextTick(function () {
|
||||||
|
var self = this;
|
||||||
|
window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
|
||||||
|
self.$store.dispatch("addDangerMessage", lineNumber + ": " + errorMsg + " (" + url + ")");
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -34,149 +34,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
<section id="portfolio">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<ul id="messages" class="feedback-panel">
|
|
||||||
</ul>
|
<router-view></router-view>
|
||||||
</div>
|
|
||||||
<section class="bg-light" id="portfolio">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./papers/papers">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/papers.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Статьи</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./grants/dashboard">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/grants.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Гранты</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./projects/dashboard">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/projects.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Проекты</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./conferences/conferences">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/conf.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Конференции</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" data-toggle="modal" href="/team">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/team.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Команда</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./students/tasks">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/students.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Работа со студентами</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./timeline">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/tasks.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Задачи</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" data-toggle="modal" href="./career.html">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/career.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Карьера</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" data-toggle="modal" href="/other">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/templates.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Прочее</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="bg-light">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div id="app">
|
|
||||||
{{ getMessage() }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@ -204,7 +65,8 @@
|
|||||||
<script>
|
<script>
|
||||||
module.exports = {
|
module.exports = {
|
||||||
components: {
|
components: {
|
||||||
"app-messages": httpVueLoaderEx("/core-components/app-messages.vue")
|
"app-messages": httpVueLoaderEx("/core-components/app-messages.vue"),
|
||||||
|
"paper-list": httpVueLoaderEx("/papers/paper-list.vue")
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getVersion: function () {
|
getVersion: function () {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page-not-found-container">
|
<div class="page-not-found-container">
|
||||||
<h1><i class="fas fa-user-secret"></i> 404</h1>
|
<h1><i class="fa fa-user-secret"></i> 404</h1>
|
||||||
<div class="page-not-found-link">
|
<div class="page-not-found-link">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<b>На главную</b>
|
<b>На главную</b>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<meta charset="UTF-8"/>
|
<meta charset="UTF-8"/>
|
||||||
<title>NG-Tracker</title>
|
<title>NG-Tracker</title>
|
||||||
<link rel="stylesheet" href="/webjars/bootstrap/4.1.3/css/bootstrap.min.css"/>
|
<link rel="stylesheet" href="/webjars/bootstrap/4.1.3/css/bootstrap.min.css"/>
|
||||||
|
<link rel="stylesheet" href="/webjars/font-awesome/4.7.0/css/font-awesome.min.css"/>
|
||||||
<link rel="stylesheet" href="/css/agency.css"/>
|
<link rel="stylesheet" href="/css/agency.css"/>
|
||||||
|
|
||||||
<!-- Custom fonts for this template -->
|
<!-- Custom fonts for this template -->
|
||||||
@ -14,7 +15,7 @@
|
|||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body id="page-top">
|
<body id="page-top">
|
||||||
<div id="integration-app">
|
<div id="ng-tracker-app">
|
||||||
<app></app>
|
<app></app>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -17,10 +17,16 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function errorHandler(result, callback) {
|
|
||||||
var data = result.data;
|
function errorHandler(result, callback, errorCallback) {
|
||||||
|
if (result.data.error) {
|
||||||
|
if (errorCallback) {
|
||||||
|
errorCallback();
|
||||||
|
}
|
||||||
|
throw result.data.error;
|
||||||
|
}
|
||||||
if (callback) {
|
if (callback) {
|
||||||
callback(data);
|
callback(result.data.data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var contextPath = "";
|
var contextPath = "";
|
||||||
var apiVersion = "";
|
var apiVersion = "/api/1.0";
|
||||||
var basePath = contextPath + apiVersion;
|
var basePath = contextPath + apiVersion;
|
||||||
|
|
||||||
var appVersion = "@@version";
|
var appVersion = "@@version";
|
||||||
@ -18,12 +18,14 @@
|
|||||||
var getOwl = basePath + "/get-owl";
|
var getOwl = basePath + "/get-owl";
|
||||||
var getTables = basePath + "/get-tables";
|
var getTables = basePath + "/get-tables";
|
||||||
var makeIntegration = basePath + "/make-integration";
|
var makeIntegration = basePath + "/make-integration";
|
||||||
|
var paperList = basePath + "/papers";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: appVersion,
|
version: appVersion,
|
||||||
timestamp: resourcesTimestamp,
|
timestamp: resourcesTimestamp,
|
||||||
owl: getOwl,
|
owl: getOwl,
|
||||||
tables: getTables,
|
tables: getTables,
|
||||||
integration: makeIntegration
|
integration: makeIntegration,
|
||||||
|
paperList: paperList
|
||||||
};
|
};
|
||||||
});
|
});
|
@ -6,7 +6,10 @@ var router = new VueRouter({
|
|||||||
mode: "history",
|
mode: "history",
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
path: "/", component: httpVueLoaderEx("/core-components/integration-main.vue", "Integration")
|
path: "/", component: httpVueLoaderEx("/core-components/app-index.vue", "NG-Tracker")
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/papers/papers", component: httpVueLoaderEx("/papers/paper-list.vue", "PaperList")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/*", component: httpVueLoaderEx("/core-components/page-not-found.vue", "PageNotFound")
|
path: "/*", component: httpVueLoaderEx("/core-components/page-not-found.vue", "PageNotFound")
|
||||||
@ -53,7 +56,7 @@ var store = new Vuex.Store({
|
|||||||
});
|
});
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: "#integration-app",
|
el: "#ng-tracker-app",
|
||||||
router: router,
|
router: router,
|
||||||
store: store,
|
store: store,
|
||||||
components: {
|
components: {
|
||||||
|
22
src/main/resources/static/papers/paper-item.vue
Normal file
22
src/main/resources/static/papers/paper-item.vue
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<div class="row text-left paper-row" style="background-color: white;">
|
||||||
|
<div class="col">
|
||||||
|
<span class="fa-stack fa-1x">
|
||||||
|
<div>
|
||||||
|
<i class="fa fa-circle fa-stack-2x text-warning"></i>
|
||||||
|
</div>
|
||||||
|
<i class="fa fa-file-text-o fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
<router-link :to="{ path: 'papers/paper', query: { id: paper.id }}" class="portfolio-link">
|
||||||
|
<span class="h6">{{ paper.title }}</span>
|
||||||
|
<!-- <span class="text-muted">{{ paper.authors }}</span>-->
|
||||||
|
</router-link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
props: ['paper']
|
||||||
|
}
|
||||||
|
</script>
|
31
src/main/resources/static/papers/paper-list.vue
Normal file
31
src/main/resources/static/papers/paper-list.vue
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<template>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-9 col-sm-12">
|
||||||
|
<paper-item v-for="paper in papers"
|
||||||
|
:key="paper.id"
|
||||||
|
:paper="paper">
|
||||||
|
</paper-item>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
components: {
|
||||||
|
"paper-item": httpVueLoaderEx("/papers/paper-item.vue")
|
||||||
|
},
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
|
papers: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted: function () {
|
||||||
|
var self = this;
|
||||||
|
axiosEx.get(
|
||||||
|
appConfig.paperList,
|
||||||
|
function (data) {
|
||||||
|
self.papers = data;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -1,40 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav layout:fragment="navbar">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<a class="navbar-brand" href="/"><span class="ui-menuitem-text"><i
|
|
||||||
class="fa fa-plane fa-4" aria-hidden="true"></i> Balance</span></a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<div class="margined-top-10">
|
|
||||||
<a href="/login" class="btn btn-success btn-block" role="button">Вернуться к странице входа</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<th:block layout:fragment="data-scripts">
|
|
||||||
<script type="text/javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
var key = getUrlVar("key");
|
|
||||||
if (isEmpty(key)) {
|
|
||||||
showFeedbackMessage("Ключ активации не задан", MessageTypesEnum.DANGER);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
postToRest(urlUsersActivate + "?key=" + key, null,
|
|
||||||
function () {
|
|
||||||
showFeedbackMessage("Пользователь успешно активирован");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</th:block>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,28 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="commits">
|
|
||||||
<div class="container">
|
|
||||||
<div id="commits-tab">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<th:block layout:fragment="scripts">
|
|
||||||
<script th:inline="javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new OdinTableWithMeta("commits-tab", urlCommits);
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
</script>
|
|
||||||
</th:block>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,24 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<div id="users-tab">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<th:block layout:fragment="scripts">
|
|
||||||
<script th:inline="javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new OdinTableWithMeta("users-tab", urlUsers, true);
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
</script>
|
|
||||||
</th:block>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,24 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<div id="sessions-tab">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<th:block layout:fragment="scripts">
|
|
||||||
<script th:inline="javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new OdinTableWithMeta("sessions-tab", urlUserSessions);
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
</script>
|
|
||||||
</th:block>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,204 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../css/conference.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div layout:fragment="content">
|
|
||||||
<section id="conference">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h3 class="section-heading text-uppercase text-center">Редактирование конференции</h3>
|
|
||||||
<div th:replace="conferences/fragments/confNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<form id="conference-form" method="post"
|
|
||||||
th:action="@{'/conferences/conference?id='+ *{id == null ? '' : id} + ''}"
|
|
||||||
th:object="${conferenceDto}">
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-7 col-sm-12">
|
|
||||||
<input type="hidden" name="id" th:field="*{id}"/>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="title">Название:</label>
|
|
||||||
<input class="form-control" th:field="*{title}" id="title" type="text"
|
|
||||||
placeholder="Название конференции"/>
|
|
||||||
<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}"
|
|
||||||
class="alert alert-danger">Incorrect title</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="url">URL:</label>
|
|
||||||
<input class="form-control" th:field="*{url}" id="url" type="text"
|
|
||||||
placeholder="http://"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="description">Описание:</label>
|
|
||||||
<textarea class="form-control" rows="8" th:field="*{description}" id="description">
|
|
||||||
</textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="deadlines">Дедлайны:</label>
|
|
||||||
<div class="deadline-list form-control list-group" id="deadlines">
|
|
||||||
<input type="hidden" th:field="*{removedDeadlineIds}"/>
|
|
||||||
<div class="deadline d-flex p-0 list-group-item list-group-horizontal"
|
|
||||||
th:each="deadline, rowStat : *{deadlines}">
|
|
||||||
<input type="hidden" th:field="*{deadlines[__${rowStat.index}__].id}"/>
|
|
||||||
<input class="deadline-text col-md list-group-item" type="text"
|
|
||||||
placeholder="Описание"
|
|
||||||
th:field="*{deadlines[__${rowStat.index}__].description}"/>
|
|
||||||
<input class="list-group-item" type="date" name="deadline"
|
|
||||||
th:field="*{deadlines[__${rowStat.index}__].date}"/>
|
|
||||||
<input type="submit" class="icon icon-delete grey-border"
|
|
||||||
alt="Удалить" name="removeDeadline" th:value="${rowStat.index}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p th:if="${#fields.hasErrors('deadlines')}" th:errors="*{deadlines}"
|
|
||||||
class="alert alert-danger">Incorrect title</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group d-flex justify-content-end">
|
|
||||||
<input type="submit" id="addDeadline" name="addDeadline"
|
|
||||||
class="btn btn-primary"
|
|
||||||
value="Добавить дедлайн"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-5 col-sm-12 offset-sm-0">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="dates">Дата проведения:</label>
|
|
||||||
<div class="row" id="dates">
|
|
||||||
<div class="d-flex col justify-content-between dates-panel">
|
|
||||||
<div class="date">
|
|
||||||
<input class="grey-border form-control" type="date"
|
|
||||||
th:field="*{beginDate}" id="begin-date"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="date">
|
|
||||||
<input class="grey-border form-control" type="date"
|
|
||||||
th:field="*{endDate}" id="end-date"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="members">Участники:</label>
|
|
||||||
<div class="member-list form-control list-group" id="members">
|
|
||||||
<div class="member d-flex list-group-item p-0"
|
|
||||||
th:each="user, rowStat : *{users}">
|
|
||||||
<input type="hidden" th:field="*{users[__${rowStat.index}__].id}"/>
|
|
||||||
<input type="hidden" th:field="*{users[__${rowStat.index}__].user}"/>
|
|
||||||
<input class="member-name w-100" readonly="true"
|
|
||||||
th:field="*{users[__${rowStat.index}__].user.lastName}"/>
|
|
||||||
<select class="member-participation w-auto"
|
|
||||||
th:field="*{users[__${rowStat.index}__].participation}">
|
|
||||||
<option th:each="participation : ${allParticipation}"
|
|
||||||
th:value="${participation}"
|
|
||||||
th:text="${participation.participation}">Participation
|
|
||||||
</option>
|
|
||||||
|
|
||||||
</select>
|
|
||||||
<select class="member-deposit w-auto"
|
|
||||||
th:field="*{users[__${rowStat.index}__].deposit}">
|
|
||||||
<option th:each="deposit : ${allDeposit}" th:value="${deposit}"
|
|
||||||
th:text="${deposit.deposit}">Deposit
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group d-flex justify-content-between flex-wrap">
|
|
||||||
<!--<input type="hidden" th:value="*{ping}" th:name="ping"/>-->
|
|
||||||
<input id="ping-button" class="btn btn-primary"
|
|
||||||
type="submit" name="pingConference" value="Ping участникам"
|
|
||||||
th:disabled="*{id == null ? 'true' : 'false'}"/>
|
|
||||||
<input type="hidden" th:value="*{disabledTakePart}" th:name="disabledTakePart"/>
|
|
||||||
<input id="take-part" class="btn btn-primary"
|
|
||||||
type="submit" name="takePart" value="Принять участие"
|
|
||||||
th:disabled="*{disabledTakePart}"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="papers">Статьи:</label>
|
|
||||||
<div class="paper-list form-control list-group" id="papers">
|
|
||||||
<!--<input th:type="hidden" th:field="*{papers}"/>-->
|
|
||||||
<div class="paper d-flex list-group-item p-0"
|
|
||||||
th:each="paper, rowStat : *{papers}">
|
|
||||||
<input type="hidden" th:field="*{papers[__${rowStat.index}__].id}"/>
|
|
||||||
<input type="hidden" th:field="*{papers[__${rowStat.index}__].title}"/>
|
|
||||||
<input type="hidden" th:field="*{papers[__${rowStat.index}__].status}"/>
|
|
||||||
<a class="paper-name"
|
|
||||||
th:href="@{'/papers/paper?id=' + *{papers[__${rowStat.index}__].id} + ''}"
|
|
||||||
th:if="*{papers[__${rowStat.index}__].id !=null}">
|
|
||||||
<span th:replace="papers/fragments/paperStatusFragment :: paperStatus(paperStatus=*{papers[__${rowStat.index}__].status})"/>
|
|
||||||
<span th:text="*{papers[__${rowStat.index}__].title}">
|
|
||||||
Имя статьи
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<!--<img class="icon-paper" src="/img/conference/paper.png"/>-->
|
|
||||||
</a>
|
|
||||||
<a class="paper-name"
|
|
||||||
th:unless="*{papers[__${rowStat.index}__].id !=null}">
|
|
||||||
<span th:text="*{papers[__${rowStat.index}__].title}">
|
|
||||||
Имя статьи
|
|
||||||
</span>
|
|
||||||
<img class="icon-paper" src="/img/conference/paper.png"/>
|
|
||||||
</a>
|
|
||||||
<input type="submit" class="icon icon-delete grey-border"
|
|
||||||
alt="Удалить" name="removePaper" th:value="${rowStat.index}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="paper-control form-group d-flex justify-content-end">
|
|
||||||
<input th:type="hidden" th:field="*{notSelectedPapers}"/>
|
|
||||||
<select class="selectpicker form-control" multiple="true" data-live-search="true"
|
|
||||||
title="Прикрепить статью" data-style="btn-primary" data-size="5"
|
|
||||||
th:field="*{paperIds}">
|
|
||||||
<option th:each="paper: *{notSelectedPapers}" th:value="${paper.id}"
|
|
||||||
th:text="${paper.title}">Status
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<button id="add-paper" class="btn btn-primary"
|
|
||||||
type="submit" name="addPaper">
|
|
||||||
Добавить статью
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="form-group d-flex justify-content-between">
|
|
||||||
<button id="send-message-button" name="save"
|
|
||||||
class="btn btn-success text-uppercase"
|
|
||||||
type="submit">
|
|
||||||
Сохранить
|
|
||||||
</button>
|
|
||||||
<a id="cancel-button" class="btn btn-default text-uppercase"
|
|
||||||
href="/conferences/conferences">
|
|
||||||
Отмена
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,62 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../css/conference.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div layout:fragment="content">
|
|
||||||
<form id="conferences-form" method="post" th:action="@{'/conferences/conferences'}"
|
|
||||||
th:object="${filteredConferences}">
|
|
||||||
|
|
||||||
<section id="conferences">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row" id="conference-list">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h3 class="section-heading text-uppercase">Конференции</h3>
|
|
||||||
<div th:replace="conferences/fragments/confNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="alert alert-danger" th:if="${#fields.hasErrors('*')}">
|
|
||||||
<p th:each="err : ${#fields.errors('*')}" th:text="${err}"></p>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-9 col-sm-12">
|
|
||||||
<th:block th:each="conference : *{conferences}">
|
|
||||||
<div th:replace="conferences/fragments/confLineFragment :: confLine(conference=${conference})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-sm-12">
|
|
||||||
<div class="filter">
|
|
||||||
<h5>Фильтр:</h5>
|
|
||||||
<select class="selectpicker form-control" id="user"
|
|
||||||
th:field="${filteredConferences.filterUserId}"
|
|
||||||
onchange="this.form.submit();" data-style="btn-primary" data-size="5">
|
|
||||||
<option value="">Все участники</option>
|
|
||||||
<option th:each="user: ${allUsers}" th:value="${user.id}"
|
|
||||||
th:text="${user.lastName}">lastName
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<select class="selectpicker form-control" id="year" th:field="${filteredConferences.year}"
|
|
||||||
onchange="this.form.submit();" data-style="btn-primary" data-size="5">
|
|
||||||
<option value="">Все годы</option>
|
|
||||||
<option th:each="year: ${allYears}" th:value="${year}"
|
|
||||||
th:text="${year}">year
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div id="modalDelete"/>
|
|
||||||
</form>
|
|
||||||
<script src="../js/conference.js"></script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,148 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../css/conference.css"/>
|
|
||||||
<script src="https://code.highcharts.com/highcharts.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div layout:fragment="content">
|
|
||||||
<section id="conference">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<h3 class="section-heading text-uppercase text-center">Актуальные конференции</h3>
|
|
||||||
<div th:replace="conferences/fragments/confNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row justify-content-center" id="dashboard">
|
|
||||||
<th:block th:each="conference : ${conferences}">
|
|
||||||
<div th:replace="conferences/fragments/confDashboardFragment :: confDashboard(conference=${conference})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<!--chart example-->
|
|
||||||
<nav>
|
|
||||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
|
||||||
<a class="nav-item nav-link active" id="nav-main-tab" data-toggle="tab"
|
|
||||||
href="#nav-stat1" role="tab" aria-controls="nav-stat1" aria-selected="true">Стат1</a>
|
|
||||||
<a class="nav-item nav-link" id="nav-latex-tab" data-toggle="tab"
|
|
||||||
href="#nav-stat2" role="tab" aria-controls="nav-stat2" aria-selected="false">Стат2</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="tab-content" id="nav-tabContent">
|
|
||||||
<div class="tab-pane fade show active" id="nav-stat1" role="tabpanel"
|
|
||||||
aria-labelledby="nav-main-tab">
|
|
||||||
<div id="salesByType" style="width:100%; height:400px;"></div>
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane fade" id="nav-stat2" role="tabpanel"
|
|
||||||
aria-labelledby="nav-profile-tab">
|
|
||||||
<div id="salesByRegion" style="width:100%; height:400px;"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--chart example-->
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<script th:inline="javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
|
|
||||||
// chart example
|
|
||||||
$(function () {
|
|
||||||
Highcharts.setOptions({
|
|
||||||
lang: {
|
|
||||||
decimalPoint: '.',
|
|
||||||
thousandsSep: ','
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
drawSalesByTypeChart();
|
|
||||||
drawSalesByRegionChart();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
function drawSalesByRegionChart() {
|
|
||||||
var salesByRegionChart = Highcharts.chart('salesByRegion', {
|
|
||||||
chart: {
|
|
||||||
type: 'pie',
|
|
||||||
margin: 40
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
text: 'Sales by Region'
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
pointFormat: "${point.y:,.0f}"
|
|
||||||
},
|
|
||||||
plotOptions: {
|
|
||||||
pie: {
|
|
||||||
allowPointSelect: true,
|
|
||||||
depth: 35
|
|
||||||
}
|
|
||||||
},
|
|
||||||
series: [{
|
|
||||||
name: 'Regions',
|
|
||||||
colorByPoint:true,
|
|
||||||
data: [{
|
|
||||||
name: 'Northeast',
|
|
||||||
y: /*[[${northeastSales}]]*/ 0
|
|
||||||
},{
|
|
||||||
name: 'South',
|
|
||||||
y: /*[[${southSales}]]*/ 0
|
|
||||||
},{
|
|
||||||
name: 'Midwest',
|
|
||||||
y: /*[[${midwestSales}]]*/ 0
|
|
||||||
},{
|
|
||||||
name: 'West',
|
|
||||||
y: /*[[${westSales}]]*/ 0
|
|
||||||
}]
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function drawSalesByTypeChart() {
|
|
||||||
var salesByTypeChart = Highcharts.chart('salesByType', {
|
|
||||||
chart: {
|
|
||||||
type: 'column',
|
|
||||||
margin: 75
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
text: 'Sales by Lure Type'
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
categories: ['May', 'June', 'July']
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
title: {
|
|
||||||
text: 'Sales (US $)'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
pointFormat: "${point.y:,.0f}"
|
|
||||||
},
|
|
||||||
plotOptions: {
|
|
||||||
column: {
|
|
||||||
depth: 60,
|
|
||||||
stacking: true,
|
|
||||||
grouping: false,
|
|
||||||
groupZPadding: 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
series: [{
|
|
||||||
name: 'Inshore',
|
|
||||||
data: /*[[${inshoreSales}]]*/ []
|
|
||||||
}, {
|
|
||||||
name: 'Nearshore',
|
|
||||||
data: /*[[${nearshoreSales}]]*/ []
|
|
||||||
}, {
|
|
||||||
name: 'Offshore',
|
|
||||||
data: /*[[${offshoreSales}]]*/ []
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,28 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="confDashboard (conference)" th:class="@{'col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3 dashboard-card ' +
|
|
||||||
${conference.ping == 0 ? '' :
|
|
||||||
conference.ping < 5 ? 'note-1' :
|
|
||||||
conference.ping < 10 ? 'note-2' :
|
|
||||||
conference.ping < 15 ? 'note-3' : 'note-4'} + ''}">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col text-right">
|
|
||||||
<p th:if="${conference.url!=null and conference.url!=''}"><a target="_blank" th:href="${conference.url}"><i
|
|
||||||
class="fa fa-external-link fa-1x"
|
|
||||||
aria-hidden="true"></i></a></p>
|
|
||||||
<p th:unless="${conference.url!=null and conference.url!=''}"><i class="fa fa-fw fa-2x"
|
|
||||||
aria-hidden="true"></i></p>
|
|
||||||
<a th:href="'conference?id='+${conference.id}">
|
|
||||||
<h7 class="service-heading" th:text="${conference.title}"> title</h7>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="confLine (conference)" class="row text-left conference-row h3" style="background-color: white;">
|
|
||||||
<div class="d-flex justify-content-between w-100">
|
|
||||||
<a th:href="@{'conference?id='+${conference.id}}" class="w-100 text-decoration">
|
|
||||||
<span class="h5" th:text="${conference.title}"/>
|
|
||||||
<span class="text-muted h6 float-right m-2" th:text="${conference.datesString}"/>
|
|
||||||
</a>
|
|
||||||
<input class="id-class" type="hidden" th:value="${conference.id}"/>
|
|
||||||
<input type="submit" class="icon icon-delete grey-border"
|
|
||||||
alt="Удалить" th:value="${conference.id}"
|
|
||||||
data-confirm="Удалить конференцию?"/>
|
|
||||||
<!--<a class="remove-paper pull-right m-auto" th:href="@{'/conferences/delete/'+${conference.id}}"-->
|
|
||||||
<!--data-confirm="Удалить конференцию?">-->
|
|
||||||
<!--<i class="fa fa-trash" aria-hidden="true"></i>-->
|
|
||||||
<!--</a>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,29 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="row justify-content-center control-panel">
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./conferences" class="btn btn-light toolbar-button">
|
|
||||||
<i class="fa fa-list-alt"></i>
|
|
||||||
Весь список</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./dashboard" class="btn btn-light toolbar-button">
|
|
||||||
<i class="fa fa-newspaper-o" aria-hidden="true"></i>
|
|
||||||
Актуальное</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./conference?id=0" class="btn btn-light toolbar-button">
|
|
||||||
<i class="fa fa-plus-circle" aria-hidden="true"></i>
|
|
||||||
Новая конференция</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,151 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:th="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
|
|
||||||
<meta name="description" content=""/>
|
|
||||||
<meta name="author" content=""/>
|
|
||||||
|
|
||||||
<title>NG-Tracker</title>
|
|
||||||
|
|
||||||
<!-- Bootstrap core CSS -->
|
|
||||||
<link rel="stylesheet" href="/webjars/bootstrap/4.1.0/css/bootstrap.min.css"/>
|
|
||||||
<link rel="stylesheet" href="/webjars/bootstrap-select/1.13.3/css/bootstrap-select.min.css"/>
|
|
||||||
<link rel="stylesheet" href="/webjars/font-awesome/4.7.0/css/font-awesome.min.css"/>
|
|
||||||
|
|
||||||
<!-- Custom fonts for this template -->
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/google/montserrat.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/google/kaushan.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/google/droid.css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/google/roboto.css"/>
|
|
||||||
|
|
||||||
<!-- Custom styles for this template -->
|
|
||||||
<link rel="stylesheet" href="/css/agency.css"/>
|
|
||||||
<link rel="stylesheet" href="/css/odin.css"/>
|
|
||||||
<!-- Bootstrap core JavaScript -->
|
|
||||||
<script src="/webjars/jquery/3.3.1-1/jquery.min.js"></script>
|
|
||||||
<script src="/webjars/bootstrap/4.1.0/js/bootstrap.bundle.min.js"></script>
|
|
||||||
<script src="/webjars/bootstrap-select/1.13.3/js/bootstrap-select.min.js"></script>
|
|
||||||
|
|
||||||
<!-- Plugin JavaScript -->
|
|
||||||
<script src="/webjars/jquery.easing/1.4.1/jquery.easing.js"></script>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body id="page-top">
|
|
||||||
|
|
||||||
<!-- Navigation -->
|
|
||||||
<nav class="navbar navbar-expand-lg navbar-dark fixed-top navbar-shrink" id="mainNav">
|
|
||||||
<div class="container">
|
|
||||||
<a class="navbar-brand js-scroll-trigger" href="/">NG-Tracker</a>
|
|
||||||
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
|
|
||||||
data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
Menu
|
|
||||||
<i class="fa fa-bars"></i>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
|
||||||
<ul class="navbar-nav text-uppercase ml-auto">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link js-scroll-trigger" target="_blank" href="#landing">НИО-17</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link js-scroll-trigger" target="_blank" href="http://is.ulstu.ru">Сайт кафедры</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link js-scroll-trigger" target="_blank"
|
|
||||||
th:href="@{'http://timetable.athene.tech?filter='+${currentUser}}">Расписание</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link js-scroll-trigger" target="_blank" href="https://kias.rfbr.ru/">КИАС РФФИ</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link js-scroll-trigger" href="/logout">Выход</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container-fluid">
|
|
||||||
<div class="container">
|
|
||||||
<ul id="messages" class="feedback-panel">
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div layout:fragment="content">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<span class="copyright">Copyright © НИО17 2018</span>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4">
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4">
|
|
||||||
<ul class="list-inline quicklinks">
|
|
||||||
<li class="list-inline-item">
|
|
||||||
<a href="/swagger-ui.html">Разработчикам</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<script src="/js/core.js"></script>
|
|
||||||
<script src="/js/config.js"></script>
|
|
||||||
<script src="/js/odin.js"></script>
|
|
||||||
<script th:inline="javascript">
|
|
||||||
|
|
||||||
/*<![CDATA[*/
|
|
||||||
var message = /*[[${flashMessage}]]*/ "";
|
|
||||||
if (message && message.length > 0) {
|
|
||||||
showFeedbackMessage(message, MessageTypesEnum.DANGER);
|
|
||||||
}
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<th:block layout:fragment="scripts">
|
|
||||||
</th:block>
|
|
||||||
<!-- Yandex.Metrika counter -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
(function (d, w, c) {
|
|
||||||
(w[c] = w[c] || []).push(function () {
|
|
||||||
try {
|
|
||||||
w.yaCounter49387279 = new Ya.Metrika2({
|
|
||||||
id: 49387279,
|
|
||||||
clickmap: true,
|
|
||||||
trackLinks: true,
|
|
||||||
accurateTrackBounce: true,
|
|
||||||
webvisor: true
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var n = d.getElementsByTagName("script")[0],
|
|
||||||
s = d.createElement("script"),
|
|
||||||
f = function () {
|
|
||||||
n.parentNode.insertBefore(s, n);
|
|
||||||
};
|
|
||||||
s.type = "text/javascript";
|
|
||||||
s.async = true;
|
|
||||||
s.src = "https://mc.yandex.ru/metrika/tag.js";
|
|
||||||
|
|
||||||
if (w.opera == "[object Opera]") {
|
|
||||||
d.addEventListener("DOMContentLoaded", f, false);
|
|
||||||
} else {
|
|
||||||
f();
|
|
||||||
}
|
|
||||||
})(document, window, "yandex_metrika_callbacks2");
|
|
||||||
</script>
|
|
||||||
<noscript>
|
|
||||||
<div><img src="https://mc.yandex.ru/watch/49387279" style="position:absolute; left:-9999px;" alt=""/></div>
|
|
||||||
</noscript>
|
|
||||||
<!-- /Yandex.Metrika counter -->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Доступ запрещен</h2>
|
|
||||||
<a href="/"><h3>Вернуться на главную</h3></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Страница не найдена</h2>
|
|
||||||
<a href="/"><h3>Вернуться на главную</h3></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Ошибка сервера</h2>
|
|
||||||
<a href="/"><h3>Вернуться на главную</h3></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,17 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="noRecords(entities, noRecordsMessage, url)" class="col-12 text-center"
|
|
||||||
style="background-color: white;">
|
|
||||||
<div th:if="*{#lists.isEmpty(entities)}">
|
|
||||||
<div th:text="'Еще не создано ни'+${noRecordsMessage}"/>
|
|
||||||
<a th:href="@{${url}+'?id=0'}">
|
|
||||||
Перейдите по ссылке, чтобы добавить
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,25 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Гранты</h2>
|
|
||||||
<div th:replace="grants/fragments/grantNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
<div class="row justify-content-center" id="dashboard">
|
|
||||||
<th:block th:each="grant : ${grants}">
|
|
||||||
<div th:replace="grants/fragments/grantDashboardFragment :: grantDashboard(grant=${grant})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div th:replace="fragments/noRecordsFragment :: noRecords(entities=${grants}, noRecordsMessage=' одного гранта', url='grant')"/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="grantDashboard (grant)" class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3 dashboard-card">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-2">
|
|
||||||
<span th:replace="grants/fragments/grantStatusFragment :: grantStatus(grantStatus=${grant.status})"/>
|
|
||||||
</div>
|
|
||||||
<div class="col col-10 text-right">
|
|
||||||
<a th:href="'grant?id='+${grant.id}">
|
|
||||||
<h7 class="service-heading" th:text="${grant.title}"> title</h7>
|
|
||||||
</a>
|
|
||||||
<p class="text-muted" th:text="${grant.status.statusName}"> status</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,22 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="grantLine (grant)" class="row text-left grant-row" style="background-color: white;">
|
|
||||||
<div class="col">
|
|
||||||
<span th:replace="grants/fragments/grantStatusFragment :: grantStatus(grantStatus=${grant.status})"/>
|
|
||||||
<a th:href="@{'grant?id='+${grant.id}}">
|
|
||||||
<span class="h6" th:text="${grant.title}"/>
|
|
||||||
<span class="text-muted" th:text="${grant.authorsString}"/>
|
|
||||||
</a>
|
|
||||||
<input class="id-class" type="hidden" th:value="${grant.id}"/>
|
|
||||||
<a class="remove-paper pull-right d-none" th:href="@{'/grants/delete/'+${grant.id}}"
|
|
||||||
data-confirm="Удалить грант?">
|
|
||||||
<i class="fa fa-trash" aria-hidden="true"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="row justify-content-center">
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./grants" class="btn btn-light toolbar-button"><i class="fa fa-list-alt"></i>
|
|
||||||
Список</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./dashboard" class="btn btn-light toolbar-button"><i class="fa fa-newspaper-o"
|
|
||||||
aria-hidden="true"></i> Панель
|
|
||||||
управления</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./grant?id=0" class="btn btn-light toolbar-button"><i class="fa fa-plus-circle"
|
|
||||||
aria-hidden="true"></i>
|
|
||||||
Добавить грант</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,31 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<span th:fragment="grantStatus (grantStatus)" class="fa-stack fa-1x">
|
|
||||||
<th:block th:switch="${grantStatus.name()}">
|
|
||||||
<div th:case="'APPLICATION'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-draft"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'ON_COMPETITION'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-review"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'SUCCESSFUL_PASSAGE'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-accepted"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'IN_WORK'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-primary"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'COMPLETED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-success"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'FAILED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-failed"></i>
|
|
||||||
</div>
|
|
||||||
</th:block>
|
|
||||||
<i class="fa fa-file-text-o fa-stack-1x fa-inverse"></i>
|
|
||||||
</span>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,279 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" href="../css/grant.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="grant">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Редактирование гранта</h2>
|
|
||||||
<div th:replace="grants/fragments/grantNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<form id="grant-form" method="post" th:action="@{'/grants/grant?id='+ *{id == null ? '' : id} + ''}"
|
|
||||||
th:object="${grantDto}">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6 col-sm-12">
|
|
||||||
<input type="hidden" name="id" th:field="*{id}"/>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="title">Название:</label>
|
|
||||||
<input class="form-control" id="title" type="text"
|
|
||||||
placeholder="Название гранта"
|
|
||||||
th:field="*{title}"/>
|
|
||||||
<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}"
|
|
||||||
class="alert alert-danger">Incorrect title</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="status">Статус:</label>
|
|
||||||
<select class="form-control" th:field="*{status}" id="status">
|
|
||||||
<option th:each="status : ${allStatuses}" th:value="${status}"
|
|
||||||
th:text="${status.statusName}">Status
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="comment">Комментарий:</label>
|
|
||||||
<textarea class="form-control" rows="3" id="comment"
|
|
||||||
th:field="*{comment}"></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Дедлайны показателей:</label>
|
|
||||||
<input type="hidden" th:field="*{removedDeadlineIds}"/>
|
|
||||||
<div class="row" th:each="deadline, rowStat : *{deadlines}">
|
|
||||||
<input type="hidden" th:field="*{deadlines[__${rowStat.index}__].id}"/>
|
|
||||||
<div class="col-6 div-deadline-date">
|
|
||||||
<input type="date" class="form-control form-deadline-date" name="deadline"
|
|
||||||
th:field="*{deadlines[__${rowStat.index}__].date}"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-4 div-deadline-description">
|
|
||||||
<input class="form-control" type="text" placeholder="Описание"
|
|
||||||
th:field="*{deadlines[__${rowStat.index}__].description}"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-2">
|
|
||||||
<button type="submit"
|
|
||||||
class="btn btn-danger float-right btn-delete-deadline "
|
|
||||||
id="removeDeadline" name="removeDeadline"
|
|
||||||
th:value="${rowStat.index}">
|
|
||||||
<span aria-hidden="true">
|
|
||||||
<i class="fa fa-times"/>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</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>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="loader">Загрузить заявку:</label>
|
|
||||||
<div id="loader">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 col-sm-12">
|
|
||||||
<label data-toggle="collapse"
|
|
||||||
href="#collapse-filter"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="collapse-filter">Фильтр рабочей группы
|
|
||||||
</label>
|
|
||||||
<div th:class="${grantDto.wasLeader || grantDto.hasAge || grantDto.hasDegree} ?
|
|
||||||
'form-check' : 'form-check collapse'" id="collapse-filter">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-check-input" type="checkbox" id="f1"
|
|
||||||
th:field="*{wasLeader}" th:onclick="|$('#filter').click();|"/>
|
|
||||||
<label class="form-check-label" for="f1">Был руководителем проекта</label>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-check-input" type="checkbox" id="f2"
|
|
||||||
th:field="*{hasAge}" th:onclick="|$('#filter').click();|"/>
|
|
||||||
<label class="form-check-label" for="f2">Младше 35 лет</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-check-input" type="checkbox" id="f3"
|
|
||||||
th:field="*{hasDegree}" th:onclick="|$('#filter').click();|"/>
|
|
||||||
<label class="form-check-label" for="f3">Cтепень к.т.н.</label>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-check-input" type="checkbox" id="f4"/>
|
|
||||||
<label class="form-check-label" for="f4">Более 3-х публикаций в
|
|
||||||
scopus</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-check-input" type="checkbox" id="f5"/>
|
|
||||||
<label class="form-check-label" for="f5">Наличие ВАК статей</label> <br/>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<input class="form-check-input" type="checkbox" id="f6"/>
|
|
||||||
<label class="form-check-label" for="f6">Наименьшая загруженность</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="submit" hidden="hidden" id="filter" name="filterUsers"
|
|
||||||
value="Применить фильтр"/>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Руководитель проекта:</label>
|
|
||||||
<select class="form-control" th:field="*{leaderId}" id="leaderId"
|
|
||||||
onchange="updateAuthors();">
|
|
||||||
<option selected="selected" hidden="hidden" th:value="-1">-- Выберите
|
|
||||||
руководителя --
|
|
||||||
</option>
|
|
||||||
<option th:each="leader : ${allAuthors}" th:value="${leader.id}"
|
|
||||||
th:text="${leader.lastName}"> Руководитель
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<p th:if="${#fields.hasErrors('leaderId')}" th:errors="*{leaderId}"
|
|
||||||
class="alert alert-danger">Choose leader</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Участники гранта:</label>
|
|
||||||
<select class="selectpicker form-control" multiple="true" data-live-search="true"
|
|
||||||
title="-- Выберите участников --" id="authors"
|
|
||||||
th:field="*{authorIds}" data-size="5">
|
|
||||||
<option th:each="author : ${allAuthors}" th:value="${author.id}"
|
|
||||||
th:text="${author.lastName}"> Участник
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Список статей:</label>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-8">
|
|
||||||
<select class="selectpicker form-control" multiple="true"
|
|
||||||
data-live-search="true"
|
|
||||||
title="Прикрепить статью" id="allPapers"
|
|
||||||
th:field="*{paperIds}" data-size="5">
|
|
||||||
<option th:each="paper : ${allPapers}" th:value="${paper.id}"
|
|
||||||
th:text="${paper.title}">Статья для прикрепления
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-4 div-view-paper">
|
|
||||||
<a th:onclick="|$('#attachPaper').click();|">
|
|
||||||
<span aria-hidden="true">
|
|
||||||
<label>Отобразить</label>
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<input type="submit" hidden="hidden" id="attachPaper" name="attachPaper"
|
|
||||||
value="Отобразить прикрепленную статью"/>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<input th:type="hidden" th:field="*{papers}"/>
|
|
||||||
<div class="form-control list-group div-selected-papers" id="selected-papers">
|
|
||||||
<div th:each="paper, rowStat : *{papers}">
|
|
||||||
<div class="col">
|
|
||||||
<a th:href="@{'/papers/paper?id=' + *{papers[__${rowStat.index}__].id} + ''}">
|
|
||||||
<img class="icon-paper" src="/img/conference/paper.png"/>
|
|
||||||
<span th:text="*{papers[__${rowStat.index}__].title}">
|
|
||||||
Название статьи
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<label>Статус: </label>
|
|
||||||
<span th:text="*{papers[__${rowStat.index}__].status.statusName}">
|
|
||||||
Статус статьи
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<div th:if="*{project} == null">
|
|
||||||
<input type="submit" name="createProject" class="btn btn-primary"
|
|
||||||
value="Добавить проект"/>
|
|
||||||
</div>
|
|
||||||
<input type = "hidden" th:field="*{project.id}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<button id="sendMessageButton" name="save" class="btn btn-success text-uppercase"
|
|
||||||
type="submit">
|
|
||||||
Сохранить
|
|
||||||
</button>
|
|
||||||
<button id="cancelButton" class="btn btn-default text-uppercase" href="/grants/grants">
|
|
||||||
Отмена
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<script type="text/javascript" src="/js/file-loader.js"></script>
|
|
||||||
<script>
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new FileLoader({
|
|
||||||
div: "loader",
|
|
||||||
url: urlFileUpload,
|
|
||||||
maxSize: 1.5,
|
|
||||||
extensions: ["doc", "docx", "xls", "jpg", "pdf", "txt", "png"],
|
|
||||||
callback: function (response) {
|
|
||||||
showFeedbackMessage("Файл успешно загружен");
|
|
||||||
console.debug(response);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$('.selectpicker').selectpicker();
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
function updateAuthors() {
|
|
||||||
$("#authors").val('default');
|
|
||||||
$("#authors").selectpicker("refresh");
|
|
||||||
$("#authors").children('option:disabled').prop('disabled', false);
|
|
||||||
var lid = $("#leaderId option:selected").val();
|
|
||||||
$("#authors [value='" + lid + "']").attr("disabled", "disabled");
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
function viewdiv(id) {
|
|
||||||
var el = document.getElementById(id);
|
|
||||||
var link = document.getElementById('toggleLink');
|
|
||||||
if (el.style.display == "block") {
|
|
||||||
el.style.display = "none";
|
|
||||||
link.innerText = link.getAttribute('data-text-hide');
|
|
||||||
} else {
|
|
||||||
el.style.display = "block";
|
|
||||||
link.innerText = link.getAttribute('data-text-show');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,37 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<form id="grants-form" method="post" th:action="@{'/grants/grants'}">
|
|
||||||
<input th:type="hidden" name="grantDeleteId" id="grantDeleteId"/>
|
|
||||||
<section id="grants">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row" id="grant-list">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Гранты</h2>
|
|
||||||
<div th:replace="grants/fragments/grantNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-9 col-sm-12">
|
|
||||||
<th:block th:each="grant : ${grants}">
|
|
||||||
<div th:replace="grants/fragments/grantLineFragment :: grantLine(grant=${grant})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-sm-12">
|
|
||||||
</div>
|
|
||||||
<div th:replace="fragments/noRecordsFragment :: noRecords(entities=${grants}, noRecordsMessage=' одного гранта', url='grant')"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div id="modalDelete"/>
|
|
||||||
</form>
|
|
||||||
<script src="/js/grants.js"></script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,146 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div layout:fragment="content">
|
|
||||||
<!-- Portfolio Grid -->
|
|
||||||
<section class="bg-light" id="portfolio">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./papers/papers">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/papers.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Статьи</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./grants/dashboard">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/grants.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Гранты</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./projects/dashboard">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/projects.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Проекты</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./conferences/conferences">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/conf.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Конференции</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" data-toggle="modal" href="/team">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/team.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Команда</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./students/tasks">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/students.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Работа со студентами</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" href="./timeline">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/tasks.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Задачи</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" data-toggle="modal" href="./career.html">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/career.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Карьера</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-sm-6 portfolio-item">
|
|
||||||
<a class="portfolio-link" data-toggle="modal" href="/other">
|
|
||||||
<div class="portfolio-hover">
|
|
||||||
<div class="portfolio-hover-content">
|
|
||||||
<i class="fa fa-arrow-right fa-3x"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<img class="img-fluid" src="img/main/templates.jpg" alt=""/>
|
|
||||||
</a>
|
|
||||||
<div class="portfolio-caption">
|
|
||||||
<h4>Прочее</h4>
|
|
||||||
<p class="text-muted"></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,42 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="load">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row" id="paper-list">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Статьи</h2>
|
|
||||||
<div id="loader">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="/js/file-loader.js"></script>
|
|
||||||
<script>
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new FileLoader({
|
|
||||||
div: "loader",
|
|
||||||
url: urlFileUpload,
|
|
||||||
maxSize: 1.5,
|
|
||||||
extensions: ["xls", "jpg", "pdf", "txt", "png"],
|
|
||||||
callback: function (response) {
|
|
||||||
showFeedbackMessage("Файл успешно загружен");
|
|
||||||
console.debug(response);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,43 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav layout:fragment="navbar">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<a class="navbar-brand" href="/"><span class="ui-menuitem-text"><i
|
|
||||||
class="fa fa-plane fa-4" aria-hidden="true"></i> Balance</span></a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div layout:fragment="content">
|
|
||||||
<section class="bg-light" id="portfolio">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row justify-content-md-center">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<form th:action="@{/login}" method="post" class="margined-top-10">
|
|
||||||
<fieldset>
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="text" name="username" id="username" class="form-control"
|
|
||||||
placeholder="Логин" required="true" autofocus="true"/>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="password" name="password" id="password" class="form-control"
|
|
||||||
placeholder="Пароль" required="true"/>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-success btn-block">Войти</button>
|
|
||||||
<div class="form-group">
|
|
||||||
<small class="form-text text-muted">
|
|
||||||
<a href="/resetRequest">Забыли пароль?</a>
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Статьи</h2>
|
|
||||||
<div th:replace="papers/fragments/paperNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
<div class="row justify-content-center" id="dashboard">
|
|
||||||
<th:block th:each="paper : ${papers}">
|
|
||||||
<div th:replace="papers/fragments/paperDashboardFragment :: paperDashboard(paper=${paper})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div th:replace="fragments/noRecordsFragment :: noRecords(entities=${papers}, noRecordsMessage=' одной статьи', url='paper')"/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,27 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="paperDashboard (paper)" class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3 dashboard-card">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-2">
|
|
||||||
<span th:replace="papers/fragments/paperStatusFragment :: paperStatus(paperStatus=${paper.status})"/>
|
|
||||||
</div>
|
|
||||||
<div class="col col-10 text-right">
|
|
||||||
<p th:if="${paper.url!=null and paper.url!=''}"><a target="_blank" th:href="${paper.url}"><i
|
|
||||||
class="fa fa-external-link fa-1x"
|
|
||||||
aria-hidden="true"></i></a></p>
|
|
||||||
<p th:unless="${paper.url!=null and paper.url!=''}"><i class="fa fa-fw fa-2x" aria-hidden="true"></i></p>
|
|
||||||
<a th:href="'paper?id='+${paper.id}">
|
|
||||||
<h7 class="service-heading" th:text="${paper.title}"> title</h7>
|
|
||||||
</a>
|
|
||||||
<p class="text-muted" th:text="${paper.authorsString}">authors</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,46 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="filesList (isLatexAttach)" th:remove="tag">
|
|
||||||
<th:block th:each="file, rowStat : *{files}">
|
|
||||||
|
|
||||||
<span th:if="${(!isLatexAttach and file.isLatexAttach == null) or file.isLatexAttach == isLatexAttach}"
|
|
||||||
th:remove="tag">
|
|
||||||
|
|
||||||
<div class="row" th:id="|files${rowStat.index}|"
|
|
||||||
th:style="${file.deleted} ? 'display: none;' :''">
|
|
||||||
<input type="hidden" th:field="*{files[__${rowStat.index}__].id}"/>
|
|
||||||
<input type="hidden"
|
|
||||||
th:field="*{files[__${rowStat.index}__].deleted}"/>
|
|
||||||
<input type="hidden"
|
|
||||||
th:field="*{files[__${rowStat.index}__].name}"/>
|
|
||||||
<input type="hidden"
|
|
||||||
th:field="*{files[__${rowStat.index}__].tmpFileName}"/>
|
|
||||||
<input type="hidden"
|
|
||||||
th:field="*{files[__${rowStat.index}__].isLatexAttach}"/>
|
|
||||||
<div class="col-2">
|
|
||||||
<a class="btn btn-danger float-right"
|
|
||||||
th:onclick="|$('#files${rowStat.index}\\.deleted').val('true'); $('#files${rowStat.index}').hide(); |">
|
|
||||||
<span aria-hidden="true"><i class="fa fa-times"/></span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-10">
|
|
||||||
<a th:onclick="${file.id==null} ? 'downloadFile('+${file.tmpFileName}+',null,\''+${file.name}+'\')':
|
|
||||||
'downloadFile(null,'+${file.id}+',\''+${file.name}+'\')' "
|
|
||||||
href="javascript:void(0)"
|
|
||||||
th:text="*{files[__${rowStat.index}__].name}">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,23 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="paperLine (paper)" class="row text-left paper-row" style="background-color: white;">
|
|
||||||
<div class="col">
|
|
||||||
<span th:replace="papers/fragments/paperStatusFragment :: paperStatus(paperStatus=${paper.status})"/>
|
|
||||||
<a th:href="@{'paper?id='+${paper.id}}">
|
|
||||||
<span class="h6" th:text="${paper.title}"/>
|
|
||||||
<span class="text-muted" th:text="${paper.authorsString}"/>
|
|
||||||
</a>
|
|
||||||
<input class="id-class" type="hidden" th:value="${paper.id}"/>
|
|
||||||
<a class="remove-paper pull-right d-none" href="#" data-confirm="Удалить статью?">
|
|
||||||
<i class="fa fa-trash" aria-hidden="true"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,27 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="row justify-content-center">
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./papers" class="btn btn-light toolbar-button"><i class="fa fa-list-alt"></i>
|
|
||||||
Список</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./dashboard" class="btn btn-light toolbar-button"><i class="fa fa-newspaper-o"
|
|
||||||
aria-hidden="true"></i> Панель
|
|
||||||
управления</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./paper?id=0" class="btn btn-light toolbar-button"><i class="fa fa-plus-circle"
|
|
||||||
aria-hidden="true"></i>
|
|
||||||
Добавить статью</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,37 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<span th:fragment="paperStatus (paperStatus)" class="fa-stack fa-1x">
|
|
||||||
<th:block th:switch="${paperStatus.name()}">
|
|
||||||
<div th:case="'ATTENTION'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-warning"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'DRAFT'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-draft"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'ON_PREPARATION'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-primary"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'ON_REVIEW'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-review"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'COMPLETED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-success"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'FAILED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-failed"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'ACCEPTED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-accepted"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'NOT_ACCEPTED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-not-accepted"></i>
|
|
||||||
</div>
|
|
||||||
</th:block>
|
|
||||||
<i class="fa fa-file-text-o fa-stack-1x fa-inverse"></i>
|
|
||||||
</span>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,387 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
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"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
|
|
||||||
<section id="paper">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Редактирование статьи</h2>
|
|
||||||
<div th:replace="papers/fragments/paperNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<form name="paperform" id="paper-form" method="post"
|
|
||||||
th:action="@{'/papers/paper?id='+ *{id == null ? '' : id} + ''}"
|
|
||||||
th:object="${paperDto}">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-7 col-sm-12">
|
|
||||||
<nav>
|
|
||||||
<div class="nav nav-tabs" id="nav-tab" role="tablist">
|
|
||||||
<a class="nav-item nav-link active" id="nav-main-tab" data-toggle="tab"
|
|
||||||
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>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="tab-content" id="nav-tabContent">
|
|
||||||
<div class="tab-pane fade show active" id="nav-main" role="tabpanel"
|
|
||||||
aria-labelledby="nav-main-tab">
|
|
||||||
<input type="hidden" name="id" th:field="*{id}"/>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="title">Название:</label>
|
|
||||||
<input class="form-control" id="title" type="text"
|
|
||||||
placeholder="Название статьи"
|
|
||||||
th:field="*{title}"/>
|
|
||||||
<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}"
|
|
||||||
class="alert alert-danger">Incorrect title</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="type">Тип статьи:</label>
|
|
||||||
<select class="form-control" th:field="*{type}" id="type">
|
|
||||||
<option th:each="type : ${allTypes}" th:value="${type}"
|
|
||||||
th:text="${type.typeName}">Type
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="status">Статус:</label>
|
|
||||||
<select class="form-control" th:field="*{status}" id="status">
|
|
||||||
<option th:each="status : ${allStatuses}" th:value="${status}"
|
|
||||||
th:text="${status.statusName}">Status
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="comment">Комментарий:</label>
|
|
||||||
<textarea class="form-control" rows="5" id="comment"
|
|
||||||
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>
|
|
||||||
<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>
|
|
||||||
</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>
|
|
||||||
<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>
|
|
||||||
|
|
||||||
<div th:replace="papers/fragments/paperFilesListFragment :: filesList(isLatexAttach = ${false})"/>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-check">
|
|
||||||
<input type="checkbox" class="form-check-input" id="locked"
|
|
||||||
th:field="*{locked}"/>
|
|
||||||
<label class="form-check-label" for="locked">Заблокирована</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="loader">Загрузить статью:</label>
|
|
||||||
<div id="loader">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane fade" id="nav-latex" role="tabpanel"
|
|
||||||
aria-labelledby="nav-profile-tab">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="latex-text">Latex текст:</label>
|
|
||||||
<textarea class="form-control" id="latex-text" type="text" rows="10"
|
|
||||||
placeholder="Latex.."
|
|
||||||
th:field="*{latexText}"/>
|
|
||||||
</div>
|
|
||||||
<div class="form-group files-list" id="latex-files-list">
|
|
||||||
<label>Файлы:</label>
|
|
||||||
<div th:replace="papers/fragments/paperFilesListFragment :: filesList(isLatexAttach = ${true})"/>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="latex-loader">Загрузить файлы:</label>
|
|
||||||
<div id="latex-loader">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<button id="pdfBtn" class="btn btn-primary text-uppercase"
|
|
||||||
onclick="generatePDF()"
|
|
||||||
type="button">
|
|
||||||
<i id="pdfLoadingIcon" class='fa fa-circle-o-notch fa-spin'
|
|
||||||
style="display: none;"></i>
|
|
||||||
pdf
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 offset-md-1 col-sm-12 offset-sm-0">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h6 class="my-0">Дата создания:</h6>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<small class="text-muted"
|
|
||||||
th:text="${paperDto.createDate == null ? '' : #dates.format(paperDto.createDate, 'dd.MM.yyyy HH:mm')}">
|
|
||||||
text
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h6 class="my-0">Дата изменения:</h6>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<small class="text-muted"
|
|
||||||
th:text="${paperDto.updateDate == null ? '' : #dates.format(paperDto.updateDate, 'dd.MM.yyyy HH:mm')}">
|
|
||||||
text
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<button id="pingButton" class="btn btn-primary text-uppercase"
|
|
||||||
type="button">
|
|
||||||
Ping авторам
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<button id="sendMessageButton" name="save"
|
|
||||||
class="btn btn-success text-uppercase"
|
|
||||||
type="submit">
|
|
||||||
Сохранить
|
|
||||||
</button>
|
|
||||||
<a id="cancelButton" class="btn btn-default text-uppercase"
|
|
||||||
href="/papers/papers">
|
|
||||||
Отмена
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<script type="text/javascript" src="/js/file-loader.js"></script>
|
|
||||||
<script>
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new FileLoader({
|
|
||||||
div: "loader",
|
|
||||||
url: urlFileUpload,
|
|
||||||
maxSize: -1,
|
|
||||||
extensions: [],
|
|
||||||
callback: function (response) {
|
|
||||||
showFeedbackMessage("Файл успешно загружен");
|
|
||||||
console.debug(response);
|
|
||||||
|
|
||||||
addNewFile(response, $("#files-list"), false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
new FileLoader({
|
|
||||||
div: "latex-loader",
|
|
||||||
url: urlFileUpload,
|
|
||||||
maxSize: -1,
|
|
||||||
extensions: [],
|
|
||||||
callback: function (response) {
|
|
||||||
showFeedbackMessage("Файл успешно загружен");
|
|
||||||
console.debug(response);
|
|
||||||
|
|
||||||
addNewFile(response, $("#latex-files-list"), true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$('.selectpicker').selectpicker();
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
function addNewFile(fileDto, listElement, isLatexAttach) {
|
|
||||||
var fileNumber = $('.files-list div.row').length;
|
|
||||||
|
|
||||||
var newFileRow = $("<div/>")
|
|
||||||
.attr("id", 'files' + fileNumber)
|
|
||||||
.addClass("row");
|
|
||||||
|
|
||||||
var idInput = $("<input/>")
|
|
||||||
.attr("type", "hidden")
|
|
||||||
.attr("id", "files" + fileNumber + ".id")
|
|
||||||
.attr("value", '')
|
|
||||||
.attr("name", "files[" + fileNumber + "].id");
|
|
||||||
newFileRow.append(idInput);
|
|
||||||
|
|
||||||
var flagInput = $("<input/>")
|
|
||||||
.attr("type", "hidden")
|
|
||||||
.attr("id", "files" + fileNumber + ".deleted")
|
|
||||||
.attr("value", "false")
|
|
||||||
.attr("name", "files[" + fileNumber + "].deleted");
|
|
||||||
newFileRow.append(flagInput);
|
|
||||||
|
|
||||||
var nameInput = $("<input/>")
|
|
||||||
.attr("type", "hidden")
|
|
||||||
.attr("id", "files" + fileNumber + ".name")
|
|
||||||
.attr("value", fileDto.fileName)
|
|
||||||
.attr("name", "files[" + fileNumber + "].name");
|
|
||||||
newFileRow.append(nameInput);
|
|
||||||
|
|
||||||
var tmpFileNameInput = $("<input/>")
|
|
||||||
.attr("type", "hidden")
|
|
||||||
.attr("id", "files" + fileNumber + ".tmpFileName")
|
|
||||||
.attr("value", fileDto.tmpFileName)
|
|
||||||
.attr("name", "files[" + fileNumber + "].tmpFileName");
|
|
||||||
newFileRow.append(tmpFileNameInput);
|
|
||||||
|
|
||||||
var isLatexInput = $("<input/>")
|
|
||||||
.attr("type", "hidden")
|
|
||||||
.attr("id", "files" + fileNumber + ".isLatexAttach")
|
|
||||||
.attr("value", isLatexAttach)
|
|
||||||
.attr("name", "files[" + fileNumber + "].isLatexAttach");
|
|
||||||
newFileRow.append(isLatexInput);
|
|
||||||
|
|
||||||
var nextDiv = $("<div/>")
|
|
||||||
.addClass("col-2");
|
|
||||||
|
|
||||||
var nextA = $("<a/>")
|
|
||||||
.addClass("btn btn-danger float-right")
|
|
||||||
.attr("onclick", "$('#files" + fileNumber + "\\\\.deleted').val('true'); $('#files" + fileNumber + "').hide();")
|
|
||||||
.append(($("<span/>").attr("aria-hidden", "true")).append($("<i/>").addClass("fa fa-times")))
|
|
||||||
;
|
|
||||||
nextDiv.append(nextA)
|
|
||||||
newFileRow.append(nextDiv);
|
|
||||||
|
|
||||||
var nameDiv = $("<div/>")
|
|
||||||
.addClass("col-10")
|
|
||||||
.append($("<a/>").text(fileDto.fileName)
|
|
||||||
.attr("href", 'javascript:void(0)')
|
|
||||||
.attr("onclick", "downloadFile('" + fileDto.tmpFileName + "',null,'" + fileDto.fileName + "')"));
|
|
||||||
newFileRow.append(nameDiv);
|
|
||||||
|
|
||||||
listElement.append(newFileRow);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function downloadFile(tmpName, fileId, downloadName) {
|
|
||||||
let xhr = new XMLHttpRequest();
|
|
||||||
if (fileId != null) xhr.open('GET', urlFileDownload + fileId);
|
|
||||||
if (tmpName != null) xhr.open('GET', urlFileDownloadTmp + tmpName);
|
|
||||||
xhr.responseType = 'blob';
|
|
||||||
|
|
||||||
var formData = new FormData();
|
|
||||||
if (fileId != null) formData.append("file-id", fileId);
|
|
||||||
if (tmpName != null) formData.append("tmp-file-name", tmpName);
|
|
||||||
|
|
||||||
xhr.send(formData);
|
|
||||||
|
|
||||||
xhr.onload = function () {
|
|
||||||
if (this.status == 200) {
|
|
||||||
console.debug(this.response);
|
|
||||||
var blob = new Blob([this.response], {type: '*'});
|
|
||||||
let a = document.createElement("a");
|
|
||||||
a.style = "display: none";
|
|
||||||
document.body.appendChild(a);
|
|
||||||
let url = window.URL.createObjectURL(blob);
|
|
||||||
a.href = url;
|
|
||||||
a.download = downloadName;
|
|
||||||
a.click();
|
|
||||||
window.URL.revokeObjectURL(url);
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function generatePDF() {
|
|
||||||
$('#pdfLoadingIcon').show();
|
|
||||||
$('#pdfBtn').prop('disabled', true);
|
|
||||||
|
|
||||||
var formData = new FormData(document.forms.paperform);
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open("POST", urlPdfGenerating);
|
|
||||||
xhr.send(formData);
|
|
||||||
xhr.responseType = 'blob';
|
|
||||||
|
|
||||||
xhr.onload = function () {
|
|
||||||
if (this.status == 200) {
|
|
||||||
console.debug(this.response);
|
|
||||||
var blob = new Blob([this.response], {type: 'application/pdf'});
|
|
||||||
let a = document.createElement("a");
|
|
||||||
a.style = "display: none";
|
|
||||||
document.body.appendChild(a);
|
|
||||||
let url = window.URL.createObjectURL(blob);
|
|
||||||
a.href = url;
|
|
||||||
a.download = $('#title').val() + '.pdf';
|
|
||||||
a.click();
|
|
||||||
window.URL.revokeObjectURL(url);
|
|
||||||
} else {
|
|
||||||
showFeedbackMessage("Ошибка при создании PDF", MessageTypesEnum.DANGER);
|
|
||||||
}
|
|
||||||
$('#pdfLoadingIcon').hide();
|
|
||||||
$('#pdfBtn').prop('disabled', false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,61 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<form id="papers-form" method="post" th:action="@{'/papers/papers'}"
|
|
||||||
th:object="${filteredPapers}">
|
|
||||||
<input th:type="hidden" name="paperDeleteId" id="paperDeleteId"/>
|
|
||||||
<section id="papers">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row" id="paper-list">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Статьи</h2>
|
|
||||||
<div th:replace="papers/fragments/paperNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="alert alert-danger" th:if="${#fields.hasErrors('*')}">
|
|
||||||
<p th:each="err : ${#fields.errors('*')}" th:text="${err}"></p>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-9 col-sm-12">
|
|
||||||
<th:block th:each="paper : ${filteredPapers.papers}">
|
|
||||||
<div th:replace="papers/fragments/paperLineFragment :: paperLine(paper=${paper})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-sm-12">
|
|
||||||
<div class="filter">
|
|
||||||
<h5>Фильтр:</h5>
|
|
||||||
<select class="form-control" th:field="${filteredPapers.filterAuthorId}" id="author"
|
|
||||||
onchange="this.form.submit();">
|
|
||||||
<option value="">Все авторы</option>
|
|
||||||
<option th:each="author: ${allAuthors}" th:value="${author.id}"
|
|
||||||
th:text="${author.lastName}">lastName
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<select class="form-control" id="year" th:field="${filteredPapers.year}"
|
|
||||||
onchange="this.form.submit();">
|
|
||||||
<option value="">Все годы</option>
|
|
||||||
<option th:each="year: ${allYears}" th:value="${year}"
|
|
||||||
th:text="${year}">year
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--<div th:replace="fragments/noRecordsFragment :: noRecords(entities=${filteredPapers.papers}, noRecordsMessage=' одной статьи', url='paper')"/>-->
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div id="modalDelete"/>
|
|
||||||
</form>
|
|
||||||
<script src="/js/papers.js"></script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,24 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Проекты</h2>
|
|
||||||
<div th:replace="projects/fragments/projectNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
<div class="row justify-content-center" id="dashboard">
|
|
||||||
<th:block th:each="project : ${projects}">
|
|
||||||
<div th:replace="projects/fragments/projectDashboardFragment :: projectDashboard(project=${project})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,18 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="projectDashboard (project)" class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3 dashboard-card">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-2">
|
|
||||||
<span th:replace="projects/fragments/projectStatusFragment :: projectStatus(projectStatus=${project.status})"/>
|
|
||||||
</div>
|
|
||||||
<div class="col col-10 text-right">
|
|
||||||
<h7 class="service-heading" th:text="${project.title}"> title</h7>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,22 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="projectLine (project)" class="row text-left project-row" style="background-color: white;">
|
|
||||||
<div class="col">
|
|
||||||
<span th:replace="projects/fragments/projectStatusFragment :: projectStatus(projectStatus=${project.status})"/>
|
|
||||||
<a th:href="@{'project?id='+${project.id}}">
|
|
||||||
<span class="h6" th:text="${project.title}"/>
|
|
||||||
<span class="text-muted" th:text="${project.description}"/>
|
|
||||||
</a>
|
|
||||||
<input class="id-class" type="hidden" th:value="${project.id}"/>
|
|
||||||
<a class="remove-paper pull-right d-none" th:href="@{'/projects/delete/'+${project.id}}"
|
|
||||||
data-confirm="Удалить проект?">
|
|
||||||
<i class="fa fa-trash" aria-hidden="true"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="row justify-content-center">
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./projects" class="btn btn-light toolbar-button"><i class="fa fa-list-alt"></i>
|
|
||||||
Список</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./dashboard" class="btn btn-light toolbar-button"><i class="fa fa-newspaper-o"
|
|
||||||
aria-hidden="true"></i> Панель
|
|
||||||
управления</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./project?id=0" class="btn btn-light toolbar-button"><i class="fa fa-plus-circle"
|
|
||||||
aria-hidden="true"></i>
|
|
||||||
Добавить проект</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,31 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<span th:fragment="projectStatus (projectStatus)" class="fa-stack fa-1x">
|
|
||||||
<th:block th:switch="${projectStatus.name()}">
|
|
||||||
<div th:case="'APPLICATION'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-draft"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'ON_COMPETITION'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-review"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'SUCCESSFUL_PASSAGE'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-accepted"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'IN_WORK'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-primary"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'COMPLETED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-success"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'FAILED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-failed"></i>
|
|
||||||
</div>
|
|
||||||
</th:block>
|
|
||||||
<i class="fa fa-file-text-o fa-stack-1x fa-inverse"></i>
|
|
||||||
</span>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,151 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html">
|
|
||||||
<head>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
|
|
||||||
<section id="paper">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Редактирование проекта</h2>
|
|
||||||
<div th:replace="projects/fragments/projectNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<form id="project-form" method="post"
|
|
||||||
th:action="@{'/projects/project?id='+ *{id == null ? '' : id} + ''}"
|
|
||||||
th:object="${projectDto}">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6 col-sm-12">
|
|
||||||
<input type="hidden" name="id" th:field="*{id}"/>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="title">Название:</label>
|
|
||||||
<input class="form-control" id="title" type="text"
|
|
||||||
placeholder="Название проекта"
|
|
||||||
th:field="*{title}"/>
|
|
||||||
<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}"
|
|
||||||
class="alert alert-danger">Incorrect title</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="status">Статус:</label>
|
|
||||||
<select class="form-control" th:field="*{status}" id="status">
|
|
||||||
<option th:each="status : ${allStatuses}" th:value="${status}"
|
|
||||||
th:text="${status.statusName}">Status
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="description">Описание:</label>
|
|
||||||
<textarea class="form-control" rows="3" id="description"
|
|
||||||
th:field="*{description}"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="createGrant">Добавить грант:</label>
|
|
||||||
<div th:if="*{grant} == null">
|
|
||||||
<input type="submit" id="createGrant" name="createGrant" class="btn btn-primary"
|
|
||||||
value="Добавить грант"/>
|
|
||||||
</div>
|
|
||||||
<input type="hidden" th:field="*{grant.id}"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="repository">Ссылка на репозиторий:</label>
|
|
||||||
<input class="form-control" id="repository" type="text"
|
|
||||||
placeholder="http://"
|
|
||||||
th:field="*{repository}"/>
|
|
||||||
<p th:if="${#fields.hasErrors('repository')}" th:errors="*{repository}"
|
|
||||||
class="alert alert-danger">Incorrect repository link</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</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 div-deadline-date">
|
|
||||||
<input type="date" class="form-control form-deadline-date" name="deadline"
|
|
||||||
th:field="*{deadlines[__${rowStat.index}__].date}"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-4 div-deadline-description">
|
|
||||||
<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>
|
|
||||||
</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>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="loader">Загрузить файл:</label>
|
|
||||||
<div id="loader">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="form-group">
|
|
||||||
<button id="sendMessageButton" name="save" class="btn btn-success text-uppercase"
|
|
||||||
type="submit">
|
|
||||||
Сохранить
|
|
||||||
</button>
|
|
||||||
<button id="cancelButton" class="btn btn-default text-uppercase"
|
|
||||||
onclick="location.href='/projects/projects'" href="/projects/projects"
|
|
||||||
type="button">
|
|
||||||
Отмена
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<script type="text/javascript" src="/js/file-loader.js"></script>
|
|
||||||
<script>
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
new FileLoader({
|
|
||||||
div: "loader",
|
|
||||||
url: urlFileUpload,
|
|
||||||
maxSize: 2,
|
|
||||||
extensions: ["doc", "docx", "xls", "jpg", "png", "pdf", "txt"],
|
|
||||||
callback: function (response) {
|
|
||||||
showFeedbackMessage("Файл успешно загружен");
|
|
||||||
console.debug(response);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$('.selectpicker').selectpicker();
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,35 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<form id="projects-form" method="post" th:action="@{'/projects/projects'}">
|
|
||||||
<input th:type="hidden" name="projectDeleteId" id="projectDeleteId"/>
|
|
||||||
<section id="projects">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row" id="project-list">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Проекты</h2>
|
|
||||||
<div th:replace="projects/fragments/projectNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-9 col-sm-12">
|
|
||||||
<th:block th:each="project : ${projects}">
|
|
||||||
<div th:replace="projects/fragments/projectLineFragment :: projectLine(project=${project})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-sm-12">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<div id="modalDelete"/>
|
|
||||||
</form>
|
|
||||||
<script src="/js/projects.js"></script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,77 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav layout:fragment="navbar">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<a class="navbar-brand" href="/"><span class="ui-menuitem-text"><i
|
|
||||||
class="fa fa-plane fa-4" aria-hidden="true"></i> Balance</span></a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<form id="reset-form" method="post" class="margined-top-10">
|
|
||||||
<fieldset>
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="password" name="password" id="password1" class="form-control"
|
|
||||||
placeholder="Пароль" required="true" minlength="6" maxlength="50" autofocus="autofocus"/>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="password" name="passwordConfirm" id="password2" class="form-control"
|
|
||||||
placeholder="Пароль (подтверждение)" required="true" minlength="6" maxlength="50"/>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-success btn-block">Обновить пароль</button>
|
|
||||||
<div class="form-group">
|
|
||||||
<small class="form-text text-muted">
|
|
||||||
<a href="/login">Вернуться к странице входа</a>
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
<div id="back" class="margined-top-10" style="display: none">
|
|
||||||
<a href="/login" class="btn btn-success btn-block" role="button">Вернуться к странице входа</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<th:block layout:fragment="data-scripts">
|
|
||||||
<script type="text/javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
$("#reset-form").submit(function () {
|
|
||||||
var key = getUrlVar("key");
|
|
||||||
if (isEmpty(key)) {
|
|
||||||
showFeedbackMessage("Ключ активации не задан", MessageTypesEnum.DANGER);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
var password = $("#password1").val();
|
|
||||||
var passwordConfirm = $("#password2").val();
|
|
||||||
if (isEmpty(password) || isEmpty(passwordConfirm)) {
|
|
||||||
showFeedbackMessage("Пароль не задан", MessageTypesEnum.DANGER);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
var postData = {
|
|
||||||
password: password,
|
|
||||||
passwordConfirm: passwordConfirm
|
|
||||||
};
|
|
||||||
postToRest(urlUsersPasswordReset + "?key=" + key, JSON.stringify(postData),
|
|
||||||
function () {
|
|
||||||
showFeedbackMessage("Пароль пользователя успешно обновлен");
|
|
||||||
},
|
|
||||||
function () {
|
|
||||||
$("#password1").val("");
|
|
||||||
$("#password2").val("");
|
|
||||||
$("#reset-form").hide();
|
|
||||||
$("#back").show();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</th:block>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,57 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:th="http://www.thymeleaf.org"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav layout:fragment="navbar">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<a class="navbar-brand" href="/"><span class="ui-menuitem-text"><i
|
|
||||||
class="fa fa-plane fa-4" aria-hidden="true"></i> Balance</span></a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<form id="reset-form" method="post" class="margined-top-10">
|
|
||||||
<fieldset>
|
|
||||||
<div class="form-group">
|
|
||||||
<input type="email" name="email" id="email" class="form-control"
|
|
||||||
placeholder="E-Mail" required="true" autofocus="autofocus"/>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-success btn-block">Сбросить пароль</button>
|
|
||||||
<div class="form-group">
|
|
||||||
<small class="form-text text-muted">
|
|
||||||
<a href="/login">Вернуться к странице входа</a>
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<th:block layout:fragment="data-scripts">
|
|
||||||
<script type="text/javascript">
|
|
||||||
/*<![CDATA[*/
|
|
||||||
$(document).ready(function () {
|
|
||||||
$("#reset-form").submit(function () {
|
|
||||||
var email = $("#email").val();
|
|
||||||
if (isEmpty(email)) {
|
|
||||||
showFeedbackMessage("Адрес электронной почты не задан", MessageTypesEnum.DANGER);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
postToRest(urlUsersPasswordResetRequest + "?email=" + email, null,
|
|
||||||
function () {
|
|
||||||
showFeedbackMessage("Запрос на смену пароля отправлен");
|
|
||||||
},
|
|
||||||
function () {
|
|
||||||
$("#email").val("");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
/*]]>*/
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</th:block>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="services">
|
|
||||||
<div class="container">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Работа со студентами</h2>
|
|
||||||
<div th:replace="students/fragments/taskNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row justify-content-center" id="dashboard">
|
|
||||||
<th:block th:each="task : ${tasks}">
|
|
||||||
<div th:replace="students/fragments/taskDashboardFragment :: taskDashboard(task=${task})"/>
|
|
||||||
</th:block>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,24 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="taskDashboard (task)" class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3 dashboard-card">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-2">
|
|
||||||
<span th:replace="students/fragments/taskStatusFragment :: taskStatus(taskStatus=${task.status})"/>
|
|
||||||
<!--<span th:replace="students/fragments/taskStatusFragment"/>-->
|
|
||||||
</div>
|
|
||||||
<div class="col col-10 text-right">
|
|
||||||
<h7 class="service-heading" th:text="${task.title}"> title</h7>
|
|
||||||
<p class="text-muted" th:text="${task.status.statusName}"> status</p>
|
|
||||||
<!--<h7 class="service-heading" th:text="Title"> title</h7>-->
|
|
||||||
<!--<p class="text-muted" th:text="Type">type</p>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,22 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div th:fragment="taskLine (task)" class="row text-left task-row" style="background-color: white;">
|
|
||||||
<div class="col">
|
|
||||||
<span th:replace="students/fragments/taskStatusFragment :: taskStatus(taskStatus=${task.status})"/>
|
|
||||||
<a th:href="@{'task?id='+${task.id}}">
|
|
||||||
<span class="h6" th:text="${task.title}"></span>
|
|
||||||
<span class="text-muted" th:text="${task.tagsString}"/>
|
|
||||||
</a>
|
|
||||||
<input class="id-class" type="hidden" th:value="${task.id}"/>
|
|
||||||
<a class="remove-task pull-right d-none" th:href="@{'/students/delete/'+${task.id}}"
|
|
||||||
data-confirm="Удалить задачу?">
|
|
||||||
<i class="fa fa-trash" aria-hidden="true"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,25 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="row justify-content-center">
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./tasks" class="btn btn-light toolbar-button"><i class="fa fa-list-alt"></i>
|
|
||||||
Список</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./dashboard" class="btn btn-light toolbar-button"><i class="fa fa-newspaper-o"
|
|
||||||
aria-hidden="true"></i> Панель
|
|
||||||
управления</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-3">
|
|
||||||
<a href="./task?id=0" class="btn btn-light toolbar-button"><i class="fa fa-plus-circle"
|
|
||||||
aria-hidden="true"></i>
|
|
||||||
Добавить задачу</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,25 +0,0 @@
|
|||||||
<!DOCTYPE HTML>
|
|
||||||
<html xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head th:fragment="headerfiles">
|
|
||||||
<meta charset="UTF-8"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<span th:fragment="taskStatus (taskStatus)" class="fa-stack fa-1x">
|
|
||||||
<th:block th:switch="${taskStatus.name()}">
|
|
||||||
<div th:case="'IN_WORK'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-primary"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'LOADED_FROM_KIAS'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-review"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'COMPLETED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-success"></i>
|
|
||||||
</div>
|
|
||||||
<div th:case="'FAILED'">
|
|
||||||
<i class="fa fa-circle fa-stack-2x text-failed"></i>
|
|
||||||
</div>
|
|
||||||
</th:block>
|
|
||||||
<i class="fa fa-check fa-stack-1x fa-inverse"></i>
|
|
||||||
</span>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,146 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/html">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet"
|
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-tagsinput/0.8.0/bootstrap-tagsinput.css"/>
|
|
||||||
<link rel="stylesheet" href="../css/tasks.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
|
|
||||||
<section id="paper">
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-tagsinput/0.8.0/bootstrap-tagsinput.min.js"></script>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Редактирование задачи</h2>
|
|
||||||
<div th:replace="students/fragments/taskNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<form id="task-form" method="post" th:action="@{'/students/task?id='+ *{id == null ? '' : id} + ''}"
|
|
||||||
th:object="${taskDto}">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-7 col-sm-12">
|
|
||||||
<input type="hidden" name="id" th:field="*{id}"/>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="title">Название:</label>
|
|
||||||
<input class="form-control" id="title" type="text" placeholder="Название задачи"
|
|
||||||
th:field="*{title}"/>
|
|
||||||
<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}"
|
|
||||||
class="alert alert-danger">Incorrect title</p>
|
|
||||||
<p class="help-block text-danger"></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="status">Статус:</label>
|
|
||||||
<select class="form-control" id="status" th:field="*{status}">
|
|
||||||
<option th:each="status : ${allStatuses}" th:value="${status}"
|
|
||||||
th:text="${status.statusName}">Status
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="comment">Описание задачи:</label>
|
|
||||||
<textarea class="form-control" rows="3" id="comment"
|
|
||||||
th:field="*{description}"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="tags">Теги:</label>
|
|
||||||
<div class="tags-container" id="tags">
|
|
||||||
<div class="tag" th:each="tag, rowStat : *{tags}">
|
|
||||||
<input type="hidden" th:field="*{tags[__${rowStat.index}__].id}"/>
|
|
||||||
<div class="tag-name">
|
|
||||||
<input type="text" readonly="true"
|
|
||||||
th:field="*{tags[__${rowStat.index}__].tagName}"/>
|
|
||||||
<span data-role="remove"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input class="input-tag-name" type="text" placeholder="Теги задачи"
|
|
||||||
id="input-tag"/>
|
|
||||||
</div>
|
|
||||||
</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>
|
|
||||||
<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>
|
|
||||||
</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>
|
|
||||||
<div class="clearfix"></div>
|
|
||||||
<div class="form-group">
|
|
||||||
<button id="sendMessageButton" name="save" class="btn btn-success text-uppercase"
|
|
||||||
type="submit">
|
|
||||||
Сохранить
|
|
||||||
</button>
|
|
||||||
<a id="cancelButton" class="btn btn-default text-uppercase" href="/students/tasks">
|
|
||||||
Отмена
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 offset-md-1 col-sm-12 offset-sm-0">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h6 class="my-0">Дата создания:</h6>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<small class="text-muted"
|
|
||||||
th:text="${taskDto.createDate == null ? '' : #dates.format(taskDto.createDate, 'dd.MM.yyyy HH:mm')}">
|
|
||||||
text
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h6 class="my-0">Дата изменения:</h6>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<small class="text-muted"
|
|
||||||
th:text="${taskDto.updateDate == null ? '' : #dates.format(taskDto.updateDate, 'dd.MM.yyyy HH:mm')}">
|
|
||||||
text
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<script src="/js/tasks.js"></script>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,71 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default" xmlns:th="">
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" href="../css/tasks.css"/>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<form id="tasks-form" method="post" th:action="@{'/students/tasks'}">
|
|
||||||
<input th:type="hidden" name="taskDeleteId" id="taskDeleteId"/>
|
|
||||||
<section id="tasks">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row" id="task-list">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">Работа со студентами</h2>
|
|
||||||
<div th:replace="students/fragments/taskNavigationFragment"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-9 col-sm-12">
|
|
||||||
<th:block th:each="task : ${filteredTasks.tasks}">
|
|
||||||
<div th:replace="students/fragments/taskLineFragment :: taskLine(task=${task})"/>
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-sm-12">
|
|
||||||
<div class="sorting">
|
|
||||||
<h5>Сортировать:</h5>
|
|
||||||
<select class="form-control selectpicker" size="auto" th:field="${filteredTasks.order}"
|
|
||||||
id="order"
|
|
||||||
onchange="this.form.submit();">
|
|
||||||
<option th:value="new">
|
|
||||||
Сначала новые
|
|
||||||
</option>
|
|
||||||
<option th:value="old">
|
|
||||||
Сначала старые
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="filter">
|
|
||||||
<h5>Фильтр:</h5>
|
|
||||||
<select class="form-control selectpicker" size="auto" th:field="${filteredTasks.status}"
|
|
||||||
id="status"
|
|
||||||
onchange="this.form.submit();">
|
|
||||||
<option value="">Все статусы</option>
|
|
||||||
<option th:each="status: ${allStatuses}" th:value="${status}"
|
|
||||||
th:text="${status.statusName}">
|
|
||||||
status
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<select class="form-control selectpicker" size="auto" data-live-search="true"
|
|
||||||
th:field="${filteredTasks.tag}" id="tags"
|
|
||||||
onchange="this.form.submit();">
|
|
||||||
<option value="">Все теги</option>
|
|
||||||
<option th:each="tag: ${allTags}" th:value="${tag.id}"
|
|
||||||
th:text="${tag.tagName}">tag
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div id="modalDelete"/>
|
|
||||||
</form>
|
|
||||||
<script src="/js/tasks.js"></script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,38 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en"
|
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
||||||
layout:decorator="default">
|
|
||||||
<head>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="container" layout:fragment="content">
|
|
||||||
<section id="timeline">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12 text-center">
|
|
||||||
<h2 class="section-heading text-uppercase">События</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<ul class="timeline">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Custom scripts for this template -->
|
|
||||||
<script src="js/agency.js"></script>
|
|
||||||
<script src="js/timeline.js"></script>
|
|
||||||
<script>
|
|
||||||
$(document).ready(function() {
|
|
||||||
showTimeline(".timeline")
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
Loading…
x
Reference in New Issue
Block a user