Merge remote-tracking branch 'origin/korekturovatko'
This commit is contained in:
commit
2d6ad5f369
10 changed files with 89 additions and 53 deletions
|
@ -101,9 +101,11 @@ def opravy_a_komentare_view(request, pdf_id: int, **kwargs):
|
||||||
|
|
||||||
if komentar_id != -1:
|
if komentar_id != -1:
|
||||||
komentar = get_object_or_404(Komentar, id=komentar_id)
|
komentar = get_object_or_404(Komentar, id=komentar_id)
|
||||||
komentar.text = text
|
if komentar.text != text:
|
||||||
komentar.autor = autor
|
komentar.text = text
|
||||||
komentar.save()
|
komentar.autor = autor
|
||||||
|
komentar.save()
|
||||||
|
oprava = komentar.oprava
|
||||||
else:
|
else:
|
||||||
if oprava_id != -1:
|
if oprava_id != -1:
|
||||||
oprava = get_object_or_404(Oprava, id=oprava_id)
|
oprava = get_object_or_404(Oprava, id=oprava_id)
|
||||||
|
@ -116,13 +118,16 @@ def opravy_a_komentare_view(request, pdf_id: int, **kwargs):
|
||||||
y=y,
|
y=y,
|
||||||
)
|
)
|
||||||
|
|
||||||
tagy_raw = q.get('tagy')
|
|
||||||
if tagy_raw != "":
|
|
||||||
tagy = list(map(int, tagy_raw.split(",")))
|
|
||||||
oprava.tagy.add(*KorekturaTag.objects.filter(id__in=tagy))
|
|
||||||
Komentar.objects.create(oprava=oprava, autor=autor, text=text)
|
Komentar.objects.create(oprava=oprava, autor=autor, text=text)
|
||||||
send_email_notification_komentar(oprava, autor, request)
|
send_email_notification_komentar(oprava, autor, request)
|
||||||
|
|
||||||
|
tagy_raw = q.get('tagy')
|
||||||
|
if tagy_raw is not None:
|
||||||
|
oprava.tagy.clear()
|
||||||
|
if tagy_raw != "":
|
||||||
|
tagy = list(map(int, tagy_raw.split(",")))
|
||||||
|
oprava.tagy.add(*KorekturaTag.objects.filter(id__in=tagy))
|
||||||
|
|
||||||
|
|
||||||
opravy = Oprava.objects.filter(pdf=pdf_id).all()
|
opravy = Oprava.objects.filter(pdf=pdf_id).all()
|
||||||
# Serializovat list je prý security vulnerability, tedy je přidán slovník pro bezpečnost
|
# Serializovat list je prý security vulnerability, tedy je přidán slovník pro bezpečnost
|
||||||
|
|
10
korektury/static/korektury/imgs/reload.svg
Normal file
10
korektury/static/korektury/imgs/reload.svg
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<svg id="icon-reload" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 120 120" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path d="M60,95.5c-19.575,0-35.5-15.926-35.5-35.5c0-19.575,15.925-35.5,35.5-35.5c13.62,0,25.467,7.714,31.418,19h22.627
|
||||||
|
C106.984,20.347,85.462,3.5,60,3.5C28.796,3.5,3.5,28.796,3.5,60c0,31.203,25.296,56.5,56.5,56.5
|
||||||
|
c16.264,0,30.911-6.882,41.221-17.88L85.889,84.255C79.406,91.168,70.201,95.5,60,95.5z"/>
|
||||||
|
</g>
|
||||||
|
<line fill="none" x1="120" y1="0" x2="120" y2="45.336"/>
|
||||||
|
<line fill="none" x1="91.418" y1="43.5" x2="114.045" y2="43.5"/>
|
||||||
|
<polygon points="120,21.832 119.992,68.842 74.827,55.811 "/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 712 B |
|
@ -20,6 +20,11 @@ body {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sbal-korektury, #rozbal-korektury {
|
||||||
|
float: right;
|
||||||
|
margin-left: 4pt;
|
||||||
|
}
|
||||||
|
|
||||||
img{background:white;}
|
img{background:white;}
|
||||||
|
|
||||||
/* Barvy korektur */
|
/* Barvy korektur */
|
||||||
|
@ -55,31 +60,6 @@ img{background:white;}
|
||||||
.toggle-button { transform: rotate(180deg); }
|
.toggle-button { transform: rotate(180deg); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tlačítko na aktualizaci */
|
|
||||||
|
|
||||||
#korektury-aktualizace {
|
|
||||||
position: absolute;
|
|
||||||
right: 10px;
|
|
||||||
top: 10px;
|
|
||||||
|
|
||||||
border-radius: 10px;
|
|
||||||
|
|
||||||
|
|
||||||
/* copy-paste .button */
|
|
||||||
margin: 10px 0 10px 0;
|
|
||||||
padding: 4px 0; /*vertikální centování textu*/
|
|
||||||
text-align: center;
|
|
||||||
background-color: #e84e10;
|
|
||||||
color: #fffbf6;
|
|
||||||
font-size: 150%;
|
|
||||||
font-weight: bold;
|
|
||||||
font-variant: small-caps;
|
|
||||||
filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.4));
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: #df490e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Čára od textu k místu korektury */
|
/* Čára od textu k místu korektury */
|
||||||
.pointer{
|
.pointer{
|
||||||
|
@ -168,7 +148,8 @@ form {
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
|
|
||||||
&[data-selected="false"] { opacity: 0.7; }
|
&[data-selected="false"] { background: unset !important; }
|
||||||
|
/*&[data-selected="true"] { border-color: unset !important; }*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Šipky na posouvání korektur */
|
/* Šipky na posouvání korektur */
|
||||||
|
@ -176,6 +157,7 @@ form {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 5px;
|
bottom: 5px;
|
||||||
left: 5px;
|
left: 5px;
|
||||||
|
opacity: 50%;
|
||||||
|
|
||||||
button, img {
|
button, img {
|
||||||
border: 1px solid white;
|
border: 1px solid white;
|
||||||
|
@ -203,6 +185,11 @@ form {
|
||||||
#predchozi-korektura-k-zaneseni, #dalsi-korektura-k-zaneseni {
|
#predchozi-korektura-k-zaneseni, #dalsi-korektura-k-zaneseni {
|
||||||
background-color: #00FF00;
|
background-color: #00FF00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tlačítko na aktualizaci */
|
||||||
|
#korektury-aktualizace {
|
||||||
|
background-color: #e84e10;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,12 @@
|
||||||
<button type='button' id="dalsi-korektura-k-zaneseni" title='Další korektura k zaneseni'>
|
<button type='button' id="dalsi-korektura-k-zaneseni" title='Další korektura k zaneseni'>
|
||||||
<img class='toggle-button' src='{% static "korektury/imgs/hide.png" %}' alt='⬇' style="transform: rotate(180deg);"/>
|
<img class='toggle-button' src='{% static "korektury/imgs/hide.png" %}' alt='⬇' style="transform: rotate(180deg);"/>
|
||||||
</button>
|
</button>
|
||||||
|
<button type='button' id='korektury-aktualizace'
|
||||||
|
title='Aktualizuj korektury
|
||||||
|
Nemusíš mačkat, pokud ti stačí, že se korektury aktualizují samy každé 2 minuty a při každém přidání korektury/komentáře.'
|
||||||
|
>
|
||||||
|
<img class='toggle-button' src='{% static "korektury/imgs/reload.svg" %}' alt='↻' style="width: 15px"/>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -64,4 +70,7 @@
|
||||||
dalsi_k_o.addEventListener('click', _ => { dalsi_nebo_predchozi_korektura(true, "k_oprave") });
|
dalsi_k_o.addEventListener('click', _ => { dalsi_nebo_predchozi_korektura(true, "k_oprave") });
|
||||||
predchozi_k_z.addEventListener('click', _ => { dalsi_nebo_predchozi_korektura(false, "k_zaneseni") });
|
predchozi_k_z.addEventListener('click', _ => { dalsi_nebo_predchozi_korektura(false, "k_zaneseni") });
|
||||||
dalsi_k_z.addEventListener('click', _ => { dalsi_nebo_predchozi_korektura(true, "k_zaneseni") });
|
dalsi_k_z.addEventListener('click', _ => { dalsi_nebo_predchozi_korektura(true, "k_zaneseni") });
|
||||||
|
|
||||||
|
// FIXME není mi jasné, zda v {} nemá být `cache: "no-store"`, aby prohlížeč necachoval GET.
|
||||||
|
document.getElementById("korektury-aktualizace").addEventListener("click", _ => update_all({}, false));
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -5,11 +5,12 @@
|
||||||
<br/>
|
<br/>
|
||||||
<textarea id="commform-text" cols=40 rows=10 name="txt"></textarea>
|
<textarea id="commform-text" cols=40 rows=10 name="txt"></textarea>
|
||||||
<br/>
|
<br/>
|
||||||
<span id="commform-tagy">
|
<div id="commform-tagy-info">Úprava tagů celé korektury:</div>
|
||||||
|
<div id="commform-tagy">
|
||||||
{% for tag in tagy %}
|
{% for tag in tagy %}
|
||||||
<button type="button" class="korektury-tag" value="{{tag.id}}" data-selected="false" style="background: {{ tag.barva }};">{{tag.nazev}}</button>
|
<button type="button" class="korektury-tag" value="{{tag.id}}" data-selected="false" style="background: {{ tag.barva }}; border-color: {{ tag.barva }};">{{tag.nazev}}</button>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</span>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -20,6 +21,7 @@
|
||||||
this.submit_button = document.getElementById('commform-submit');
|
this.submit_button = document.getElementById('commform-submit');
|
||||||
const close_button = document.getElementById('commform-close');
|
const close_button = document.getElementById('commform-close');
|
||||||
this.tagy = document.getElementById('commform-tagy');
|
this.tagy = document.getElementById('commform-tagy');
|
||||||
|
this.tagy_info = document.getElementById('commform-tagy-info');
|
||||||
|
|
||||||
|
|
||||||
// ctrl-enter submits form
|
// ctrl-enter submits form
|
||||||
|
@ -71,8 +73,16 @@
|
||||||
this.text.value = text;
|
this.text.value = text;
|
||||||
|
|
||||||
// show form
|
// show form
|
||||||
if (oprava_id === -1 && komentar_id === -1) this.tagy.style.display = 'unset'; else this.tagy.style.display = 'none';
|
if (oprava_id === -1 && komentar_id === -1) {
|
||||||
if (this.reset_tags_every_open) this.reset_tags();
|
if (this.reset_tags_every_open) this.reset_tags();
|
||||||
|
this.tagy_info.style.display = 'none';
|
||||||
|
} else {
|
||||||
|
const oprava = opravy[oprava_id];
|
||||||
|
this.tagy_info.style.display = 'unset';
|
||||||
|
for (const tag of this.tagy.getElementsByTagName("button"))
|
||||||
|
tag.dataset.selected = String(oprava.tagy.has(parseInt(tag.value)));
|
||||||
|
}
|
||||||
|
|
||||||
this._show(img_id, x, y);
|
this._show(img_id, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,13 +94,12 @@
|
||||||
data.append('img_id', this.imgID);
|
data.append('img_id', this.imgID);
|
||||||
data.append('oprava_id', this.oprava_id);
|
data.append('oprava_id', this.oprava_id);
|
||||||
data.append('komentar_id', this.komentar_id);
|
data.append('komentar_id', this.komentar_id);
|
||||||
if (this.oprava_id === -1 && this.komentar_id === -1) {
|
|
||||||
const tagy = [];
|
const tagy = [];
|
||||||
for (const tag of this.tagy.getElementsByTagName("button")) {
|
for (const tag of this.tagy.getElementsByTagName("button")) {
|
||||||
if (tag.dataset.selected !== "false") tagy.push(tag.value);
|
if (tag.dataset.selected !== "false") tagy.push(tag.value);
|
||||||
}
|
|
||||||
data.append('tagy', String(tagy));
|
|
||||||
}
|
}
|
||||||
|
data.append('tagy', String(tagy));
|
||||||
|
|
||||||
data.append('text', this.text.value);
|
data.append('text', this.text.value);
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
|
|
||||||
// show comment form when 'update-comment' button pressed
|
// show comment form when 'update-comment' button pressed
|
||||||
#update_comment() {
|
#update_comment() {
|
||||||
return commform.show(this.oprava.img_id, this.oprava.x, this.oprava.y, this.#text.textContent, -1, this.id);
|
return commform.show(this.oprava.img_id, this.oprava.x, this.oprava.y, this.#text.textContent, this.oprava.id, this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
#delete_comment() {
|
#delete_comment() {
|
||||||
|
|
|
@ -72,6 +72,7 @@
|
||||||
#komentare; #tagy;
|
#komentare; #tagy;
|
||||||
htmlElement; pointer;
|
htmlElement; pointer;
|
||||||
id; x; y; img_id; status; zobrazit = true; {# oprava_data; #}
|
id; x; y; img_id; status; zobrazit = true; {# oprava_data; #}
|
||||||
|
tagy;
|
||||||
|
|
||||||
constructor(oprava_data) {
|
constructor(oprava_data) {
|
||||||
this.htmlElement = preoprava.cloneNode(true);
|
this.htmlElement = preoprava.cloneNode(true);
|
||||||
|
@ -109,7 +110,9 @@
|
||||||
{# this.oprava_data = oprava_data; #}
|
{# this.oprava_data = oprava_data; #}
|
||||||
this.set_status(oprava_data['status']);
|
this.set_status(oprava_data['status']);
|
||||||
this.#tagy.innerHTML = "";
|
this.#tagy.innerHTML = "";
|
||||||
|
this.tagy = new Set();
|
||||||
for (const tag of oprava_data["tagy"]) {
|
for (const tag of oprava_data["tagy"]) {
|
||||||
|
this.tagy.add(tag["id"]);
|
||||||
const span = document.createElement("span");
|
const span = document.createElement("span");
|
||||||
span.innerHTML = tag["nazev"];
|
span.innerHTML = tag["nazev"];
|
||||||
span.classList.add("korektury-tag");
|
span.classList.add("korektury-tag");
|
||||||
|
@ -131,9 +134,12 @@
|
||||||
|
|
||||||
|
|
||||||
// hide or show text of correction
|
// hide or show text of correction
|
||||||
#toggle_visibility(){
|
toggle_visibility() {
|
||||||
this.zobrazit = !this.zobrazit;
|
this.zobrazit = !this.zobrazit;
|
||||||
this.htmlElement.dataset.opravazobrazit = String(this.zobrazit);
|
this.htmlElement.dataset.opravazobrazit = String(this.zobrazit);
|
||||||
|
}
|
||||||
|
#toggle_visibility(){
|
||||||
|
this.toggle_visibility();
|
||||||
place_comments()
|
place_comments()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
|
|
||||||
{% include "korektury/korekturovatko/__dalsi_korektura.html" %}
|
{% include "korektury/korekturovatko/__dalsi_korektura.html" %}
|
||||||
|
|
||||||
<button type="button" id="korektury-aktualizace">Aktualizuj korektury.</button>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -44,9 +42,6 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// FIXME není mi jasné, zda v {} nemá být `cache: "no-store"`, aby prohlížeč necachoval GET.
|
|
||||||
document.getElementById("korektury-aktualizace").addEventListener("click", _ => update_all({}, false));
|
|
||||||
|
|
||||||
// FIXME není mi jasné, zda v {} nemá být `cache: "no-store"`, aby prohlížeč necachoval GET.
|
// FIXME není mi jasné, zda v {} nemá být `cache: "no-store"`, aby prohlížeč necachoval GET.
|
||||||
setInterval(() => update_all({}, false), 120000); // Každý dvě minuty fetchni korektury
|
setInterval(() => update_all({}, false), 120000); // Každý dvě minuty fetchni korektury
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -20,6 +20,10 @@ Zobrazit:
|
||||||
onchange="toggle_corrections('k_zaneseni')" checked>
|
onchange="toggle_corrections('k_zaneseni')" checked>
|
||||||
<label for="k_zaneseni_checkbox">K zanesení (<span id="k_zaneseni_pocet">↺</span>)</label>
|
<label for="k_zaneseni_checkbox">K zanesení (<span id="k_zaneseni_pocet">↺</span>)</label>
|
||||||
|
|
||||||
|
|
||||||
|
<button type="button" id="sbal-korektury">Sbal korektury</button>
|
||||||
|
<button type="button" id="rozbal-korektury">Rozbal korektury</button>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -65,4 +69,15 @@ Zobrazit:
|
||||||
}
|
}
|
||||||
for (let [stav, pocet] of Object.entries(pocty_stavu)) spany_s_pocty_stavu[stav].innerText = pocet;
|
for (let [stav, pocet] of Object.entries(pocty_stavu)) spany_s_pocty_stavu[stav].innerText = pocet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
document.getElementById("sbal-korektury").addEventListener("click", () => {
|
||||||
|
for (const oprava of Object.values(opravy))
|
||||||
|
if (oprava.zobrazit) oprava.toggle_visibility();
|
||||||
|
place_comments();
|
||||||
|
})
|
||||||
|
document.getElementById("rozbal-korektury").addEventListener("click", () => {
|
||||||
|
for (const oprava of Object.values(opravy))
|
||||||
|
if (!oprava.zobrazit) oprava.toggle_visibility();
|
||||||
|
place_comments();
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<link rel="stylesheet" title="opraf-css" type="text/css" media="screen, projection" href="{% static "korektury/opraf.css"%}?version=1" />
|
<link rel="stylesheet" title="opraf-css" type="text/css" media="screen, projection" href="{% static "korektury/opraf.css"%}?version=1" />
|
||||||
<link href="{% static 'css/rozliseni.css' %}?version=1" rel="stylesheet">
|
<link href="{% static 'css/rozliseni.css' %}?version=2" rel="stylesheet">
|
||||||
<script src="{% static "korektury/opraf.js"%}?version=1"></script>
|
<script src="{% static "korektury/opraf.js"%}?version=2"></script>
|
||||||
<title>Korektury {{korekturovanepdf.nazev}}</title>
|
<title>Korektury {{korekturovanepdf.nazev}}</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="{{ LOCAL_TEST_PROD }}web" data-status="{{ korekturovanepdf.status }}">
|
<body class="{{ LOCAL_TEST_PROD }}web" data-status="{{ korekturovanepdf.status }}">
|
||||||
|
|
Loading…
Reference in a new issue