321 lines
15 KiB
HTML
321 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Portal za oddajanje besedil</title>
|
|
<!--{{ dropzone.load_css() }}-->
|
|
<link rel="stylesheet" href="/static/dropzone.css" type="text/css">
|
|
{{ dropzone.style('position: absolute;
|
|
top: -0.5px;
|
|
width: 388px;
|
|
height: 732px;
|
|
left: 385px;
|
|
background: linear-gradient(198.62deg, rgba(255, 255, 255, 0.49) -1.62%, rgba(255, 255, 255, 0.73) -1.61%, rgba(255, 255, 255, 0.41) 79.34%);
|
|
box-shadow: 20px 4px 40px rgba(0, 0, 0, 0.25);
|
|
backdrop-filter: blur(20px);
|
|
border: 0px;
|
|
border-radius: 0px 20px 20px 0px;') }}
|
|
<link rel="stylesheet" href="/static/style.css" type="text/css">
|
|
</head>
|
|
<body>
|
|
<a href="/solar/logout">Odjavi se</a>
|
|
{% if is_institution_coordinator %}
|
|
<br><a href="/solar/manage-institution">Upravljaj z institucijo</a>
|
|
{% endif %}
|
|
{% if is_admin %}
|
|
<br><a href="/solar/admin">Administracijski meni</a>
|
|
{% endif %}
|
|
<br><a href="mailto:email@example.com">Pomoč</a>
|
|
<div class="bg"></div>
|
|
<div id="main-window">
|
|
<div id="rect1">
|
|
<div id="logo-container">
|
|
<img src="/static/image/logo.svg" alt="logo"/>
|
|
</div>
|
|
<form id="my-dropzone" class="dropzone">
|
|
<div style="position: relative; right: 390px;">
|
|
<h1 id="title" style="font-size: 25px;">Korpus ŠOLAR</h1>
|
|
|
|
<div class="selection-tabs">
|
|
<button id="button-oddaja" class="selection-tab-button selected">ODDAJA</button>
|
|
<button id="button-zgodovina" class="selection-tab-button">ZGODOVINA</button>
|
|
<button id="button-pogodbe" class="selection-tab-button">POGODBE</button>
|
|
</div>
|
|
|
|
{% if not institution %}
|
|
<div class="warning">Niste član nobene institucije!</div>
|
|
{% elif not institution_contract %}
|
|
<div class="warning">Pogodba s šolo še ni naložena!</div>
|
|
{% endif %}
|
|
<div id="data-confirm-notification" class="message-notification" style="display: none;">Prosimo, preverite in potrdite vnešene podatke.</div>
|
|
|
|
<label for="program">PROGRAM</label>
|
|
<select id="program" name="program">
|
|
<option value="OS" selected="selected">Osnovnošolski (OŠ)</option>
|
|
<option value="SSG">Splošna in strokovna gimnazija (SGG)</option>
|
|
<option value="MGP">Mednarodni gimnazijski programi (MGP)</option>
|
|
<option value="ZG">Zasebne gimnazije (ZG)</option>
|
|
<option value="NPI">Nižje poklicno izobraževanje (NPI)</option>
|
|
<option value="SPI">Srednje poklicno izobraževanje (SPI)</option>
|
|
<option value="SSI">Srednje strokovno izobraževanje (SSI)</option>
|
|
<option value="PTI">Poklicno-tehnično izobraževanje (PTI)</option>
|
|
</select>
|
|
|
|
<label for="predmet">PREDMET</label>
|
|
<select id="predmet" name="predmet">
|
|
<option value="slo" selected="selected">Slovenščina</option>
|
|
<option value="drug-jez">Drugi jezikoslovni predmeti</option>
|
|
<option value="drug-druz">Drugi družboslovni predmeti</option>
|
|
<option value="drug-narav">Drugi naravoslovni predmeti</option>
|
|
<option value="drug-strok">Drugi strokovni predmeti</option>
|
|
<option value="drug-izb">Drugi izbirni ali dodatni predmeti</option>
|
|
</select>
|
|
<div id="predmet-custom-box" style="display: none;">
|
|
<label for="predmet-custom">Ime predmeta:</label>
|
|
<input type="text" id="predmet-custom" name="predmet-custom"/>
|
|
</div>
|
|
|
|
<label for="letnik">LETNIK</label>
|
|
<select id="letnik" name="letnik">
|
|
<option value="1" selected="selected">1</option>
|
|
<option value="2">2</option>
|
|
<option value="3">3</option>
|
|
<option value="4">4</option>
|
|
<option value="5">5</option>
|
|
<option value="6">6</option>
|
|
<option value="7">7</option>
|
|
<option value="8">8</option>
|
|
<option value="9">9</option>
|
|
</select>
|
|
|
|
<label for="vrsta">VRSTA BESEDILA</label>
|
|
<select id="vrsta" name="vrsta">
|
|
<option value="esej-spis" selected="selected">Esej ali spis</option>
|
|
<option value="prakticno">Praktično besedilo (npr. vabila, prošnje ipd. pri pouku slovenščine), napisano za oceno</option>
|
|
<option value="solski-test">Šolski test</option>
|
|
<option value="delo-v-razredu">Delo v razredu, ne za oceno</option>
|
|
</select>
|
|
<div id="vrsta-custom-box" style="display: none;">
|
|
<label for="vrsta-custom">Vtipkajte besedilno vrsto:</label>
|
|
<input type="text" id="vrsta-custom" name="vrsta-custom"/>
|
|
</div>
|
|
|
|
|
|
<label for="solsko-leto">ŠOLSKO LETO</label>
|
|
<select id="solsko-leto" name="solsko-leto">
|
|
<option value="20-21" selected="selected">2020/21</option>
|
|
<option value="21-22">2021/22</option>
|
|
</select>
|
|
|
|
<label for="jezikovni-popravki">JEZIKOVNI POPRAVKI</label>
|
|
<select id="jezikovni-popravki" name="jezikovni-popravki">
|
|
<option value="popr-ne" selected="selected">Besedilo vsebuje učiteljske popravke in strinjam se z njihovo vključitvijo v korpus</option>
|
|
<option value="brez-popr">Besedilo ne vsebuje učiteljskih popravkov</option>
|
|
<option value="popr-da">Besedilo vsebuje učiteljske popravke in ne strinjam se z njihovo vključitvijo v korpus</option>
|
|
</select>
|
|
|
|
<button id="button-submit" type="submit">Oddaj</button>
|
|
</div>
|
|
|
|
<div class="dropzone-previews">
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div id="popup-terms" style="display: none">
|
|
<div id="popup-terms-text">
|
|
</div>
|
|
<button id="button-submit-cancel" class="button-terms" style="background: #ff2d2d;">Prekliči</button>
|
|
<button id="button-submit-final" class="button-terms">Oddaj</button>
|
|
</div>
|
|
|
|
<!--{{ dropzone.load_js() }}-->
|
|
<script src="/static/dropzone.js"></script>
|
|
<script>
|
|
/////////////////////////
|
|
// Dropzone //
|
|
/////////////////////////
|
|
var selectPredmet = document.getElementById("predmet");
|
|
var selectVrsta = document.getElementById("vrsta");
|
|
var btnSubmit = document.getElementById("button-submit");
|
|
var btnSubmitFinal = document.getElementById("button-submit-final");
|
|
var btnSubmitCancel = document.getElementById("button-submit-cancel");
|
|
var btnZgodovina = document.getElementById("button-zgodovina");
|
|
var btnPogodbe = document.getElementById("button-pogodbe");
|
|
var elemTermsPopup = document.getElementById("popup-terms");
|
|
var termsScrollbox = document.getElementById("popup-terms-text");
|
|
var dataConfirmNotification = document.getElementById("data-confirm-notification");
|
|
var scrollboxTriggered = false;
|
|
var form = document.forms["my-dropzone"];
|
|
|
|
{% if not institution %}
|
|
btnSubmit.disabled = true;
|
|
{% endif %}
|
|
|
|
function isEmptyOrSpaces(str){
|
|
return str == null || str.match(/^ *$/) !== null;
|
|
}
|
|
|
|
const reEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
|
|
Dropzone.options.myDropzone = { // The camelized version of the ID of the form element
|
|
url: "/solar/upload",
|
|
autoProcessQueue: false,
|
|
uploadMultiple: true,
|
|
parallelUploads: 20,
|
|
paramName: "file", // The name that will be used to transfer the file
|
|
maxFilesize: 1000, // MB
|
|
timeout: 5000000, // milliseconds
|
|
acceptedFiles: ".txt, .csv, .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .jpg, .jpeg, .png",
|
|
maxFiles: 20,
|
|
dictDefaultMessage: `Kliknite ali odložite datoteke sem.`,
|
|
dictFallbackMessage: "Vaš brskalnik ne podpira izbiranje datotek z odlaganjem (\"drag & drop\").",
|
|
dictInvalidFileType: "Datoteka je napačnega formata.",
|
|
dictFileTooBig: "Datoteke je prevelika {{filesize}}. Največja dovoljena velikost: {{maxFilesize}}MiB.",
|
|
dictResponseError: "Napaka strežnika: {{statusCode}}",
|
|
dictMaxFilesExceeded: "Ne morete naložiti več datotek.",
|
|
dictCancelUpload: "Prekini prenos",
|
|
dictRemoveFile: "Odstrani datoteko",
|
|
dictCancelUploadConfirmation: "Ali res želite odstraniti to datoteko?",
|
|
dictUploadCanceled: "Prenos prekinjen",
|
|
|
|
// The setting up of the dropzone
|
|
init: function() {
|
|
var dz = this;
|
|
|
|
selectPredmet.addEventListener("change", function(e) {
|
|
var predmetCustomBox = document.getElementById("predmet-custom-box");
|
|
if (selectPredmet.value.startsWith("drug")) {
|
|
predmetCustomBox.style.display = "inherit";
|
|
} else {
|
|
predmetCustomBox.style.display = "none";
|
|
}
|
|
});
|
|
|
|
selectVrsta.addEventListener("change", function(e) {
|
|
var vrstaCustomBox = document.getElementById("vrsta-custom-box");
|
|
if (selectVrsta.value == "delo-v-razredu") {
|
|
vrstaCustomBox.style.display = "inherit";
|
|
} else {
|
|
vrstaCustomBox.style.display = "none";
|
|
}
|
|
});
|
|
|
|
btnSubmit.addEventListener("click", function(e) {
|
|
// Make sure that the form isn't actually being sent.
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
// Check form validity.
|
|
var program = form["program"].value;
|
|
var predmet = form["predmet"].value;
|
|
var predmetCustom = form["predmet-custom"].value;
|
|
var letnik = form["letnik"].value;
|
|
var vrsta = form["vrsta"].value;
|
|
var vrstaCustom = form["vrsta-custom"].value;
|
|
var solskoLeto = form["solsko-leto"].value;
|
|
var jezikovniPopravki = form["jezikovni-popravki"].value;
|
|
|
|
if (predmet.startsWith("drug") && isEmptyOrSpaces(predmetCustom)) {
|
|
alert("Polje za predmet ne more biti prazno!");
|
|
} else if (vrsta === "delo-v-razredu" && isEmptyOrSpaces(vrstaCustom)) {
|
|
alert("Polje za vrsto besedila ne more biti prazno!");
|
|
} else if (dataConfirmNotification.style.display == "none") {
|
|
dataConfirmNotification.style.display = "inherit";
|
|
btnSubmit.textContent = "Potrdi";
|
|
} else {
|
|
// Then make terms popup visible
|
|
//btnSubmit.disabled = true;
|
|
//btnSubmitFinal.disabled = true;
|
|
//elemTermsPopup.style.display = "inline";
|
|
//scrollboxtriggered = false;
|
|
|
|
// Hand off data to dropzone
|
|
dz.processQueue();
|
|
|
|
// Clear fields and hide popup agian
|
|
dataConfirmNotification.style.display = "none";
|
|
btnSubmit.textContent = "Oddaj";
|
|
form.reset();
|
|
}
|
|
});
|
|
|
|
|
|
// First change the button to actually tell dropzone to process the queue.
|
|
btnSubmitFinal.addEventListener("click", function(e) {
|
|
// Hand off data to dropzone
|
|
dz.processQueue();
|
|
|
|
// Clear fields and hide popup agian
|
|
btnSubmit.disabled = false;
|
|
elemTermsPopup.style.display = "none";
|
|
dataConfirmNotification.style.display = "none";
|
|
btnSubmit.textContent = "Oddaj";
|
|
form.reset();
|
|
scrollboxTriggered = false;
|
|
});
|
|
|
|
btnSubmitCancel.addEventListener("click", function(e) {
|
|
btnSubmit.disabled = false;
|
|
scrollboxTriggered = false;
|
|
elemTermsPopup.style.display = "none";
|
|
});
|
|
|
|
btnZgodovina.addEventListener("click", function(e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
window.location.replace("/solar/zgodovina");
|
|
});
|
|
|
|
btnPogodbe.addEventListener("click", function(e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
window.location.replace("/solar/pogodbe");
|
|
});
|
|
|
|
// Enable final submit button only if user scrolls to the end of the terms.
|
|
function checkScrollboxTrigger(event) {
|
|
var element = event.target;
|
|
if (!scrollboxTriggered
|
|
&& element.scrollHeight - element.scrollTop <= element.clientHeight + 50
|
|
) {
|
|
scrollboxTriggered = true;
|
|
btnSubmitFinal.disabled = false;
|
|
}
|
|
}
|
|
|
|
termsScrollbox.addEventListener('scroll', function(event) {
|
|
checkScrollboxTrigger(event);
|
|
});
|
|
|
|
termsScrollbox.addEventListener("mouseenter", function(event) {
|
|
checkScrollboxTrigger(event);
|
|
});
|
|
|
|
// Listen to the sendingmultiple event. In this case, it's the sendingmultiple event instead
|
|
// of the sending event because uploadMultiple is set to true.
|
|
this.on("sendingmultiple", function() {
|
|
// Gets triggered when the form is actually being sent.
|
|
// Hide the success button or the complete form.
|
|
});
|
|
|
|
this.on("successmultiple", function(files, response) {
|
|
// Gets triggered when the files have successfully been sent.
|
|
// Redirect user or notify of success.
|
|
alert("Odgovor strežnika: " + response);
|
|
location.reload();
|
|
});
|
|
|
|
this.on("errormultiple", function(files, response) {
|
|
// Gets triggered when there was an error sending the files.
|
|
// Maybe show form again, and notify user of error
|
|
});
|
|
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|