Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
fja
eval
Commits
932fde28
Commit
932fde28
authored
Feb 08, 2021
by
Vladimír Štill
Browse files
evalweb: Reflow the templates
parent
985ce4a9
Changes
9
Hide whitespace changes
Inline
Side-by-side
evalweb/templates/about.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
O vyhodnocovací službě
{% endblock %}
</h1>
<h1>
O vyhodnocovací službě
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<br>
<br>
Webový front end nově implementované vyhodnocovací služby pro formální jazyky a automaty vznikl na
Webový front end nově implementované vyhodnocovací služby pro formální jazyky a automaty vznikl na
Fakultě informatiky Masarykovy univerzity v rámci
Fakultě informatiky Masarykovy univerzity v rámci
<a
href=
"https://is.muni.cz/th/bwci5/"
>
závěrečné práce
</a>
v roce 2020.
<a
href=
"https://is.muni.cz/th/bwci5/"
>
závěrečné práce
</a>
v roce 2020.
<br>
<br>
<br>
<br>
Zdrojový kód:
<a
href=
"https://gitlab.fi.muni.cz/fja/eval/"
>
GitLab
</a>
Zdrojový kód:
<a
href=
"https://gitlab.fi.muni.cz/fja/eval/"
>
GitLab
</a>
<br>
<br>
<br>
<br>
Kateřina Sloupová, autorka závěrečné práce
<br>
Kateřina Sloupová, autorka závěrečné práce
<br>
Jan Strejček, vedoucí
<br>
Jan Strejček, vedoucí
<br>
Vladimír Štill, konzultant
Vladimír Štill, konzultant
{% endblock %}
{% endblock %}
evalweb/templates/base.html
View file @
932fde28
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<html
lang=
"cs"
>
<html
lang=
"cs"
>
<head>
<head>
<meta
charset=
"UTF-8"
>
<meta
charset=
"UTF-8"
>
<title>
FJA: Porovnávání a převody formalismů regulárních jazyků
</title>
<title>
{% block title %}
FJA: Porovnávání a převody formalismů regulárních jazyků
{% endblock %}
</title>
</head>
</head>
<body>
<body>
...
@@ -16,22 +16,20 @@
...
@@ -16,22 +16,20 @@
</ul>
</ul>
</nav>
</nav>
<section
class=
"content"
>
<section
class=
"content"
>
<br>
<br>
<label>
Mód:
</label>
<label>
Mód:
</label>
<a
href=
"{{ url_for('eval.compare') }}"
>
Porovnání
</a>
<a
href=
"{{ url_for('eval.compare') }}"
>
Porovnání
</a>
<a
href=
"{{ url_for('eval.convert') }}"
>
Převod
</a>
<a
href=
"{{ url_for('eval.convert') }}"
>
Převod
</a>
<header>
<header>
{% block header %}{% endblock %}
{% block header %}{% endblock %}
</header>
</header>
{% for message in get_flashed_messages() %}
{% for message in get_flashed_messages() %}
<div
class=
"flash"
>
{{ message }}
</div>
<div
class=
"flash"
>
{{ message }}
</div>
{% endfor %}
{% endfor %}
{% block content %}{% endblock %}
{% block content %}{% endblock %}
</section>
</section>
</body>
</body>
</html>
</html>
evalweb/templates/compare.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
Porovnání formalismů
{% endblock %}
</h1>
<h1>
Porovnání formalismů
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<form
method=
"post"
>
<form
method=
"post"
>
<input
type=
"submit"
name=
"example_button"
value=
"Vlož příklady ke zvoleným typům"
>
<input
type=
"submit"
name=
"example_button"
value=
"Vlož příklady ke zvoleným typům"
>
<label
for=
"teacher_string"
>
Zadání
</label>
<label
for=
"teacher_string"
>
Zadání
</label>
<div>
<div>
<div
style=
"width:400px; float:right;"
>
<div
style=
"width:400px; float:right;"
>
<textarea
style=
"width:400px;"
name=
"teacher_string"
id=
"teacher_string"
>
{{ teacher_area }}
</textarea></div>
<textarea
style=
"width:400px;"
name=
"teacher_string"
id=
"teacher_string"
>
{{ teacher_area }}
</textarea></div>
{{ teacher_form.hidden_tag() }}
{{ teacher_form.hidden_tag() }}
<div
style=
"float:left;"
>
{{ teacher_form.make(style="list-style:none") }}
</div>
<div
style=
"float:left;"
>
{{ teacher_form.make(style="list-style:none") }}
</div>
</div>
</div>
<label
for=
"student_string"
>
Řešení
</label><br>
<label
for=
"student_string"
>
Řešení
</label><br>
<div>
<div>
<div
style=
"width:400px; float:right;"
>
<div
style=
"width:400px; float:right;"
>
<textarea
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
{{ student_area }}
</textarea></div>
<textarea
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
{{ student_area }}
</textarea></div>
{{ student_form.hidden_tag() }}
{{ student_form.hidden_tag() }}
<div
style=
"float:left;"
>
{{ student_form.make(style="list-style:none") }}
</div>
<div
style=
"float:left;"
>
{{ student_form.make(style="list-style:none") }}
</div>
</div>
</div>
<input
type=
"submit"
name=
"submit_button"
value=
"Porovnej"
>
<input
type=
"submit"
name=
"submit_button"
value=
"Porovnej"
>
</form>
</form>
Tento mód simuluje vyhodnocení odpovědníku v IS MU. Máte-li k dispozici správné řešení úlohy, můžete jej porovnat s vaším výsledkem.
Tento mód simuluje vyhodnocení odpovědníku v IS MU. Máte-li k dispozici správné řešení úlohy, můžete jej porovnat s vaším výsledkem.
Nezapomeňte vybrat, jakého typu je zadaný formalismus a jaký typ a vlastnosti se očekávají u vašeho řešení.
Nezapomeňte vybrat, jakého typu je zadaný formalismus a jaký typ a vlastnosti se očekávají u vašeho řešení.
{% endblock %}
{% endblock %}
evalweb/templates/convert.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
Převod formalismu
{% endblock %}
</h1>
<h1>
Převod formalismu
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<form
method=
"post"
>
<form
method=
"post"
>
<input
type=
"submit"
name=
"example_button"
value=
"Vlož příklad zvoleného typu"
>
<input
type=
"submit"
name=
"example_button"
value=
"Vlož příklad zvoleného typu"
>
<label
for=
"student_string"
>
Můj vstup typu
</label><br>
<label
for=
"student_string"
>
Můj vstup typu
</label><br>
<div>
<div>
<div
style=
"width:400px; float:right;"
>
<div
style=
"width:400px; float:right;"
>
<textarea
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
{{ student_area }}
</textarea></div>
<textarea
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
{{ student_area }}
</textarea>
{{ student_form.hidden_tag() }}
</div>
<div
style=
"float:left;"
>
{{ student_form.make(style="list-style:none") }}
</div>
{{ student_form.hidden_tag() }}
</div>
<div
style=
"float:left;"
>
{{ student_form.make(style="list-style:none") }}
</div>
</div>
<label>
Převeď na typ
</label><br>
<label>
Převeď na typ
</label><br>
{{ task_form.hidden_tag() }}
{{ task_form.hidden_tag() }}
{{ task_form.make(style="list-style:none") }}
{{ task_form.make(style="list-style:none") }}
<input
type=
"submit"
name=
"submit_button"
value=
"Převeď"
>
<input
type=
"submit"
name=
"submit_button"
value=
"Převeď"
>
</form>
</form>
{% endblock %}
{% endblock %}
evalweb/templates/eval.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
Převod formalismu
{% endblock %}
</h1>
<h1>
Převod formalismu
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<form
method=
"post"
>
<form
method=
"post"
>
<label
for=
"student_type"
>
Můj vstup
</label>
<label
for=
"student_type"
>
Můj vstup
</label>
<input
type=
"radio"
id=
"dfa"
name=
"student_type"
value=
"dfa"
>
<input
type=
"radio"
id=
"dfa"
name=
"student_type"
value=
"dfa"
>
<label
for=
"dfa"
>
DFA
</label><br>
<label
for=
"dfa"
>
DFA
</label><br>
<input
type=
"radio"
id=
"nfa"
name=
"student_type"
value=
"nfa"
>
<input
type=
"radio"
id=
"nfa"
name=
"student_type"
value=
"nfa"
>
<label
for=
"nfa"
>
NFA
</label><br>
<label
for=
"nfa"
>
NFA
</label><br>
<input
type=
"radio"
id=
"grammar"
name=
"student_type"
value=
"grammar"
>
<input
type=
"radio"
id=
"grammar"
name=
"student_type"
value=
"grammar"
>
<label
for=
"grammar"
>
Gramatika
</label>
<label
for=
"grammar"
>
Gramatika
</label>
<input
type=
"radio"
id=
"regex"
name=
"student_type"
value=
"regex"
>
<input
type=
"radio"
id=
"regex"
name=
"student_type"
value=
"regex"
>
<label
for=
"regex"
>
Regulární výraz
</label>
<label
for=
"regex"
>
Regulární výraz
</label>
</form>
</form>
<form
method=
"post"
>
<label
for=
"user_input"
>
Můj vstup
</label>
<textarea
name=
"user_input"
id=
"user_input"
>
{{ request.form['user_input'] }}
</textarea>
<input
type=
"submit"
value=
"Převeď"
>
</form>
<form
method=
"post"
>
<label
for=
"user_input"
>
Můj vstup
</label>
<textarea
name=
"user_input"
id=
"user_input"
>
{{ request.form['user_input'] }}
</textarea>
<input
type=
"submit"
value=
"Převeď"
>
</form>
{% endblock %}
{% endblock %}
evalweb/templates/parsing_error.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
<h1>
Výsledek
</h1>
Výsledek
{% endblock %}
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<br>
Vstupní formalismus nebyl správně zadán, nastala chyba při parsování.
<br><br>
<br>
Vstupní formalismus nebyl správně zadán, nastala chyba při parsování.
<br><br>
{{ error }}
{{ error }}
{% endblock %}
{% endblock %}
\ No newline at end of file
evalweb/templates/result_compare.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
<h1>
Výsledek porovnání
</h1>
Výsledek porovnání
{% endblock %}
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<br>
<br>
<div
style=
"text-align:center"
><h2>
Celkový výsledek:
<div
style=
"text-align:center"
><h2>
Celkový výsledek:
{% if ok %} správné řešení.
{% if ok %} správné řešení.
{% else %} nesprávné řešení.
{% else %} nesprávné řešení.
{% endif %}
</h2><br>
{% endif %}
</h2><br>
{% if alphabets != "" %}
<b>
{{ alphabets }}
</b><br><br>
{% endif %}
{% if alphabets != "" %}
<b>
{{ alphabets }}
</b><br><br>
{% endif %}
{% if task_solved == "" %}
Odpověď splňuje požadavky kladené na formalismus.
{% else %}
Odpověď
<b>
nesplňuje požadavky
</b>
kladené na formalismus. {{ task_solved }}
{% endif %}
<br>
{% if extra_word_ce or missing_word_ce or alphabets != "" %}
Jazyky popisované oběma formalismy
<b>
nejsou ekvivalentní
</b>
.
{% else %}
Jazyky popisované oběma formalismy jsou ekvivalentní.
{% endif %}
</div><br>
<div>
<div
style=
"float:left;"
><label
for=
"teacher_string"
><h3
style=
"text-align:center"
>
Jazyk zadání
</h3></label>
<div
style=
"width:400px;"
name=
"teacher_string"
id=
"teacher_string"
>
<b>
Charakteristika:
</b>
{{ teacher.sizename }}
<br><br>
<b>
Příklad slova z jazyka:
</b>
{{ teacher.example }}
<br><br>
<b>
Původní popis:
</b>
<br>
{{ teacher_type_string }}: {{ teacher.string }}
<br><br>
<b>
Popis pomocí minimálního DFA:
</b>
<br>
{{ teacher.minimal }}
<br>
</div><br>
</div>
<div
style=
"float:right;"
><label
for=
"student_string"
><h3
style=
"text-align:center"
>
Jazyk řešení
</h3></label>
<div
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
<b>
Charakteristika:
</b>
{{ student.sizename }}
<br><br>
<b>
Příklad slova z jazyka:
</b>
{{ student.example }}
<br><br>
<b>
Původní popis:
</b>
<br>
{{ student_type_string }}: {{ student.string }}
<br><br>
<b>
Popis pomocí minimálního DFA:
</b>
<br>
{{ student.minimal }}
<br>
</div><br>
</div>
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><hr>
<p>
<h3>
Porovnání jazyků
</h3>
{% if img_src %}
<img
style=
"float:left; margin:10px 30px;"
src=
"static/img/{{ img_src }}.png"
alt=
"{{ img_src }}"
><br>
{% endif %}
{% if not ok and (extra_word_ce or missing_word_ce) %}
{% if extra_word_ce %}
Příklad slova, které je ve studentově řešení a není v zadaném jazyce: {{ extra_word_ce }}
{% else %}
Studentovo řešení je podmnožinou zadaného jazyka.
{% endif %}
<br>
{% if
missing_word_ce
%}
{% if
task_solved == ""
%}
Příklad slova, které chybí ve studentově řešení a je v z
ad
a
né
m jazyce: {{ missing_word_ce }}
Odpověď splňuje požadavky kl
ad
e
né
na formalismus.
{% else %}
{% else %}
Studentovo řešení je nadmnožinou z
ad
a
né
ho jazyka.
Odpověď
<b>
nesplňuje požadavky
</b>
kl
ad
e
né
na formalismus. {{ task_solved }}
{% endif %}
<br>
{% endif %}
<br>
{% if inf %}Rozdíl porovnávaných jazyků je nekonečný.
{% if extra_word_ce or missing_word_ce or alphabets != "" %}
{% else %}Rozdíl porovnávaných jazyků je konečný.
Jazyky popisované oběma formalismy
<b>
nejsou ekvivalentní
</b>
.
{% else %}
Jazyky popisované oběma formalismy jsou ekvivalentní.
{% endif %}
</div><br>
<div>
<div
style=
"float:left;"
>
<label
for=
"teacher_string"
><h3
style=
"text-align:center"
>
Jazyk zadání
</h3></label>
<div
style=
"width:400px;"
name=
"teacher_string"
id=
"teacher_string"
>
<b>
Charakteristika:
</b>
{{ teacher.sizename }}
<br><br>
<b>
Příklad slova z jazyka:
</b>
{{ teacher.example }}
<br><br>
<b>
Původní popis:
</b>
<br>
{{ teacher_type_string }}: {{ teacher.string }}
<br><br>
<b>
Popis pomocí minimálního DFA:
</b>
<br>
{{ teacher.minimal }}
<br>
</div><br>
</div>
<div
style=
"float:right;"
><label
for=
"student_string"
><h3
style=
"text-align:center"
>
Jazyk řešení
</h3></label>
<div
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
<b>
Charakteristika:
</b>
{{ student.sizename }}
<br><br>
<b>
Příklad slova z jazyka:
</b>
{{ student.example }}
<br><br>
<b>
Původní popis:
</b>
<br>
{{ student_type_string }}: {{ student.string }}
<br><br>
<b>
Popis pomocí minimálního DFA:
</b>
<br>
{{ student.minimal }}
<br>
</div><br>
</div>
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><hr>
<p>
<h3>
Porovnání jazyků
</h3>
{% if img_src %}
<img
style=
"float:left; margin:10px 30px;"
src=
"static/img/{{ img_src }}.png"
alt=
"{{ img_src }}"
><br>
{% endif %}
{% endif %}
{% else %}
{% if ok %}
{% if not ok and (extra_word_ce or missing_word_ce) %}
Jazyky jsou ekvivalentní.
{% if extra_word_ce %}
Příklad slova, které je ve studentově řešení a není v zadaném jazyce: {{ extra_word_ce }}
{% else %}
Studentovo řešení je podmnožinou zadaného jazyka.
{% endif %}
<br>
{% if missing_word_ce %}
Příklad slova, které chybí ve studentově řešení a je v zadaném jazyce: {{ missing_word_ce }}
{% else %}
Studentovo řešení je nadmnožinou zadaného jazyka.
{% endif %}
<br>
{% if inf %}Rozdíl porovnávaných jazyků je nekonečný.
{% else %}Rozdíl porovnávaných jazyků je konečný.
{% endif %}
{% else %}
{% if ok %}
Jazyky jsou ekvivalentní.
{% endif %}
{% endif %}
{% endif %}
{% endif %}
</p>
</p>
<div>
<div>
{% if langs[0] %}
{% if langs[0] %}
<table>
<table>
<tr>
<tr>
<th>
Jazyk
</th><th>
Charakteristika
</th><th>
Slovo z jazyka
</th><th>
Automat
</th></tr>
<th>
Jazyk
</th><th>
Charakteristika
</th><th>
Slovo z jazyka
</th><th>
Automat
</th>
<tr><td>
0
</td><td>
{{ langs[0].sizename }}
</td><td>
{{ langs[0].example }}
</td><td><button
onclick=
"toggleDFA('.dfa_0')"
>
Automat
</button>
</tr>
<div
class=
"dfa_0"
style=
"display: none;"
>
{{ langs[0].minimal }}
</div></td></tr>
<tr>
{% if langs[1] %}
<td>
0
</td>
<tr><td>
1
</td><td>
{{ langs[1].sizename }}
</td><td>
{{ langs[1].example }}
</td><td><button
onclick=
"toggleDFA('.dfa_1')"
>
Automat
</button>
<td>
{{ langs[0].sizename }}
</td>
<div
class=
"dfa_1"
style=
"display: none;"
>
{{ langs[1].minimal }}
</div></td></tr>
<td>
{{ langs[0].example }}
</td>
{% if langs[2] %}
<td>
<tr><td>
2
</td><td>
{{ langs[2].sizename }}
</td><td>
{{ langs[2].example }}
</td><td><button
onclick=
"toggleDFA('.dfa_2')"
>
Automat
</button>
<button
onclick=
"toggleDFA('.dfa_0')"
>
Automat
</button>
<div
class=
"dfa_2"
style=
"display: none;"
>
{{ langs[2].minimal }}
</div></td></tr>
<div
class=
"dfa_0"
style=
"display: none;"
>
{{ langs[0].minimal }}
</div>
{% if langs[3] %}
</td>
<tr><td>
3
</td><td>
{{ langs[3].sizename }}
</td><td>
{{ langs[3].example }}
</td><td><button
onclick=
"toggleDFA('.dfa_3')"
>
Automat
</button>
</tr>
<div
class=
"dfa_3"
style=
"display: none;"
>
{{ langs[3].minimal }}
</div></td></tr>
{% if langs[1] %}
{% endif %}
<tr>
{% endif %}
<td>
1
</td>
{% endif %}
<td>
{{ langs[1].sizename }}
</td>
<td>
{{ langs[1].example }}
</td>
<td>
<button
onclick=
"toggleDFA('.dfa_1')"
>
Automat
</button>
<div
class=
"dfa_1"
style=
"display: none;"
>
{{ langs[1].minimal }}
</div>
</td>
</tr>
{% if langs[2] %}
<tr>
<td>
2
</td>
<td>
{{ langs[2].sizename }}
</td>
<td>
{{ langs[2].example }}
</td>
<td>
<button
onclick=
"toggleDFA('.dfa_2')"
>
Automat
</button>
<div
class=
"dfa_2"
style=
"display: none;"
>
{{ langs[2].minimal }}
</div>
</td>
</tr>
{% if langs[3] %}
<tr>
<td>
3
</td>
<td>
{{ langs[3].sizename }}
</td>
<td>
{{ langs[3].example }}
</td>
<td>
<button
onclick=
"toggleDFA('.dfa_3')"
>
Automat
</button>
<div
class=
"dfa_3"
style=
"display: none;"
>
{{ langs[3].minimal }}
</div>
</td>
</tr>
{% endif %}
{% endif %}
{% endif %}
</table>
</table>
{% endif %}
{% endif %}
</div>
</div>
<script>
<script>
function
toggleDFA
(
dfa
){
function
toggleDFA
(
dfa
){
el
=
document
.
querySelector
(
dfa
);
el
=
document
.
querySelector
(
dfa
);
if
(
el
.
style
.
display
==
'
none
'
){
if
(
el
.
style
.
display
==
'
none
'
){
el
.
style
.
display
=
'
block
'
el
.
style
.
display
=
'
block
'
}
else
{
}
else
{
el
.
style
.
display
=
'
none
'
el
.
style
.
display
=
'
none
'
}
}
}
}
</script>
</script>
...
@@ -124,4 +151,4 @@ function toggleDFA(dfa){
...
@@ -124,4 +151,4 @@ function toggleDFA(dfa){
<h3>
Vygenerovaný řetězec pro odpovědník
</h3>
<h3>
Vygenerovaný řetězec pro odpovědník
</h3>
{{ is_task }}
{{ is_task }}
</div>
</div>
{% endblock %}
{% endblock %}
\ No newline at end of file
evalweb/templates/result_convert.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
{% block title %}
<h1>
Výsledek převodu
</h1>
Výsledek převodu
{% endblock %}
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
<br>
<br><label
for=
"student_string"
>
Můj vstup
</label><br>
<label
for=
"student_string"
>
Můj vstup
</label>
<br>
<textarea
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
{{ student_string }}
</textarea>
<textarea
style=
"width:400px;"
name=
"student_string"
id=
"student_string"
>
{{ student_string }}
</textarea>
{{ student_type }}, převod na {{ task }}
{{ student_type }}, převod na {{ task }}
<br><br>
<br><br>
<label
for=
"output"
>
Výsledek
</label><br>
<label
for=
"output"
>
Výsledek
</label>
<textarea
style=
"width:400px;"
name=
"output"
id=
"output"
>
{{ output }}
</textarea>
<br>
<textarea
style=
"width:400px;"
name=
"output"
id=
"output"
>
{{ output }}
</textarea>
<br>
<br><br>
<br>
<h3>
Vygenerovaný řetězec pro odpovědník
</h3>
<h3>
Vygenerovaný řetězec pro odpovědník
</h3>
{{ is_task }}
{{ is_task }}
{% endblock %}
{% endblock %}
\ No newline at end of file
evalweb/templates/userref.html
View file @
932fde28
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block header %}
{% block header %}
<h1>
Zadávání formalismů pro popis regulárních jazyků
</h1>
<h1>
Zadávání formalismů pro popis regulárních jazyků
</h1>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment