Revize af2e04cd
Přidáno uživatelem Ondřej Anděl před téměř 4 roky(ů)
application/changes.php | ||
---|---|---|
9 | 9 |
|
10 | 10 |
<!-- css --> |
11 | 11 |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> |
12 |
<link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
|
|
12 |
<link rel="stylesheet" href="view/style.css"> |
|
13 | 13 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
14 | 14 |
|
15 | 15 |
<!-- jQuery library --> |
... | ... | |
26 | 26 |
|
27 | 27 |
<div class="row app-content"> |
28 | 28 |
<div class="col-xs-12 col-sm-12 p-4 content d-flex"> |
29 |
<?php include "./view/changesContent.php" ?> |
|
29 |
<?php include "./view/contents/changesContent.php" ?>
|
|
30 | 30 |
</div> |
31 | 31 |
</div> |
32 | 32 |
<?php include "./view/footer.html" ?> |
application/index.php | ||
---|---|---|
11 | 11 |
|
12 | 12 |
<!-- css --> |
13 | 13 |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> |
14 |
<link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
|
|
14 |
<link rel="stylesheet" href="view/style.css"> |
|
15 | 15 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
16 | 16 |
|
17 | 17 |
<!-- jQuery library --> |
... | ... | |
29 | 29 |
|
30 | 30 |
<div class="row app-content"> |
31 | 31 |
<div class="col-xs-12 col-sm-12 p-4 content d-flex"> |
32 |
<?php include "./view/indexContent.html" ?> |
|
32 |
<?php include "./view/contents/indexContent.html" ?>
|
|
33 | 33 |
</div> |
34 | 34 |
</div> |
35 | 35 |
<?php include "./view/footer.html" ?> |
application/manual.php | ||
---|---|---|
10 | 10 |
<title>Dalimilova kronika</title> |
11 | 11 |
<!-- css --> |
12 | 12 |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> |
13 |
<link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
|
|
13 |
<link rel="stylesheet" href="view/style.css"> |
|
14 | 14 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
15 | 15 |
|
16 | 16 |
<!-- jQuery library --> |
... | ... | |
28 | 28 |
|
29 | 29 |
<div class="row app-content"> |
30 | 30 |
<div class="col-xs-12 col-sm-12 p-4 content d-flex"> |
31 |
<?php include "./view/manualContent.php" ?> |
|
31 |
<?php include "./view/contents/manualContent.php" ?>
|
|
32 | 32 |
</div> |
33 | 33 |
</div> |
34 | 34 |
<?php include "./view/footer.html" ?> |
application/search.php | ||
---|---|---|
7 | 7 |
|
8 | 8 |
<!-- css --> |
9 | 9 |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> |
10 |
<link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
|
|
10 |
<link rel="stylesheet" href="view/style.css"> |
|
11 | 11 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
12 | 12 |
<link rel="stylesheet" href="./view/library/vanillaSelectBox/vanillaSelectBox.css"> |
13 | 13 |
|
... | ... | |
16 | 16 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script> |
17 | 17 |
<script src="./view/library/jQuery-Multi/src/jquery.multi-select.js"></script> |
18 | 18 |
|
19 |
<!-- JavaScript --> |
|
19 |
<!-- JavaScript library-->
|
|
20 | 20 |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script> |
21 | 21 |
<script src="./view/library/vanillaSelectBox/vanillaSelectBox.js"></script> |
22 |
|
|
23 |
<!-- own JavaScript --> |
|
24 |
<script src="./view/js-scripts/convertors.js"></script> |
|
25 |
<script src="./view/js-scripts/filterControl.js"></script> |
|
26 |
<script src="./view/js-scripts/paging.js"></script> |
|
22 | 27 |
</head> |
23 | 28 |
<body> |
24 | 29 |
<div class="container-fluid"> |
... | ... | |
27 | 32 |
|
28 | 33 |
<div class="row app-content"> |
29 | 34 |
<div class="col-xs-12 col-sm-12 p-5 pb-4 content d-flex"> |
30 |
<?php include "./view/searchContent.php" ?> |
|
35 |
<?php include "./view/contents/searchContent.php" ?>
|
|
31 | 36 |
</div> |
32 | 37 |
</div> |
33 | 38 |
<?php include "./view/footer.html" ?> |
application/users.php | ||
---|---|---|
9 | 9 |
|
10 | 10 |
<!-- css --> |
11 | 11 |
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> |
12 |
<link rel="stylesheet" href="view/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
|
|
12 |
<link rel="stylesheet" href="view/style.css"> |
|
13 | 13 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> |
14 | 14 |
|
15 | 15 |
<!-- jQuery library --> |
... | ... | |
26 | 26 |
|
27 | 27 |
<div class="row app-content"> |
28 | 28 |
<div class="col-xs-12 col-sm-12 p-4 content d-flex"> |
29 |
<?php include "./view/userContent.php" ?> |
|
29 |
<?php include "./view/contents/userContent.php" ?>
|
|
30 | 30 |
</div> |
31 | 31 |
</div> |
32 | 32 |
<?php include "./view/footer.html" ?> |
application/view/Index.php | ||
---|---|---|
1 |
<!-- TESTOVACI INDEX--> |
|
2 |
<? |
|
3 |
include "../controller/TableController.php"; |
|
4 |
include "../controller/UpdateController.php"; |
|
5 |
?> |
|
6 |
<script> |
|
7 |
function doSearch () { |
|
8 |
// (A1) GET SEARCH TERM |
|
9 |
var data = new FormData(); |
|
10 |
//data.append("manuscript", "0,3"); //příklad pro filtraci manuscriptů, asi se ještě uprav |
|
11 |
/* data.append("page", "0"); |
|
12 |
data.append("items_per_page", "50"); |
|
13 |
data.append("lemma", "megaultranováLemma"); |
|
14 |
data.append("word", "novéWord2"); |
|
15 |
data.append("context", "novýContext"); |
|
16 |
data.append("description", "novádescription"); |
|
17 |
data.append("description2", "novádescription2"); |
|
18 |
data.append("description3", "novádescription3"); |
|
19 |
data.append("ending", "novéEnding"); |
|
20 |
data.append("finished", false); |
|
21 |
data.append("namedentity",1); |
|
22 |
data.append("position1", "1"); |
|
23 |
data.append("position2", "2"); |
|
24 |
data.append("positiondetail", "posdet"); |
|
25 |
data.append("prefix", "prefix"); |
|
26 |
data.append("suffix", "suffix"); |
|
27 |
data.append("id", 9);*/ |
|
28 |
|
|
29 |
data.append("id", 4); |
|
30 |
data.append("wordform_id", 4); |
|
31 |
//data.append("lemma_id", 3686); |
|
32 |
//data.append("tag_id", 1219); |
|
33 |
/*data.append("pos", 6); |
|
34 |
data.append("manuscript", [1,2,3,4,5]); |
|
35 |
data.append("wordform_id", 9); |
|
36 |
data.append("tag", "A---------");*/ |
|
37 |
//data.append("finished", "false"); |
|
38 |
// data.append("tag_pos", "V"); |
|
39 |
// data.append("tag_verb_aspect", "P"); |
|
40 |
// data.append("tag_number", "S"); |
|
41 |
// data.append("word", "okáza"); |
|
42 |
var xhr = new XMLHttpRequest(); |
|
43 |
xhr.open("POST", "../controller/RemoveController.php"); |
|
44 |
/*xhr.onload = function(){ |
|
45 |
let results = document.getElementById("results"), |
|
46 |
//if anything returned then do this |
|
47 |
search = JSON.parse(this.response); |
|
48 |
results.innerHTML = ""; |
|
49 |
console.log(search); |
|
50 |
};*/ |
|
51 |
xhr.send(data); |
|
52 |
return false; |
|
53 |
} |
|
54 |
</script> |
|
55 |
|
|
56 |
<form onsubmit="return doSearch()"> |
|
57 |
<input type="submit" value="Search"/> |
|
58 |
</form> |
|
59 |
|
|
60 |
<div id="results"></div> |
application/view/changesContent.php | ||
---|---|---|
1 |
<?php |
|
2 |
if (isset($_SESSION['role']) && $_SESSION['role'] == "admin") { |
|
3 |
echo "<script> |
|
4 |
//what to do when page renders |
|
5 |
window.onload = function() { |
|
6 |
fetchChanges(); |
|
7 |
}; |
|
8 |
</script> |
|
9 |
|
|
10 |
<div class=\"search-results my-4\"> |
|
11 |
<table class=\"table table-striped\"> |
|
12 |
<thead> |
|
13 |
<tr> |
|
14 |
<th scope=\"col\">Lemma</th> |
|
15 |
<th scope=\"col\">Slovní tvar</th> |
|
16 |
<th scope=\"col\">Návrh změny</th> |
|
17 |
<th scope=\"col\"></th> |
|
18 |
</tr> |
|
19 |
</thead> |
|
20 |
<tbody id=\"search-table\"> |
|
21 |
<script> |
|
22 |
let changes; |
|
23 |
function fetchChanges () { |
|
24 |
// (A1) GET SEARCH TERM |
|
25 |
const formData = new FormData(); |
|
26 |
|
|
27 |
// (A2) AJAX - USE HTTP:// NOT FILE:/ |
|
28 |
let xhr = new XMLHttpRequest(); |
|
29 |
xhr.open(\"POST\", \"./controller/GetChangeRequests.php\"); |
|
30 |
xhr.onload = function(){ |
|
31 |
let search = this.response; |
|
32 |
let parsedJSON = JSON.parse(search); |
|
33 |
changes = parsedJSON; |
|
34 |
renderChanges(parsedJSON); |
|
35 |
}; |
|
36 |
xhr.send(formData); |
|
37 |
} |
|
38 |
|
|
39 |
|
|
40 |
function renderChanges(changesList) { |
|
41 |
let result = \"\"; |
|
42 |
if(changesList !== null){ |
|
43 |
changesList.forEach((item,id) => { |
|
44 |
result +=\" <tr>\"; |
|
45 |
result += \" <td>\" + item.lemma + \" </td> \"; |
|
46 |
result += \" <td>\" + item.word + \" </td> \"; |
|
47 |
result += \" <td>\" + item.message + \" <td>\"; |
|
48 |
result += \" <td class='action-td'> \" + |
|
49 |
\" <button class='btn ml-1' title = 'Odstranit' data-toggle = 'modal' data-target = '#remove-modal' data-pseudo-id = '\" + id + \"' ><i class='fa fa-trash' ></i ></button > \" + |
|
50 |
\" </td>\"; |
|
51 |
result += \" </tr> \"; |
|
52 |
}); |
|
53 |
document.getElementById(\"search-table\").innerHTML = result; |
|
54 |
document.getElementById(\"no-data-label\").style.display = \"none\"; |
|
55 |
} else { |
|
56 |
document.getElementById(\"search-table\").innerHTML = result; |
|
57 |
document.getElementById(\"no-data-label\").style.display = \"\"; |
|
58 |
} |
|
59 |
} |
|
60 |
</script> |
|
61 |
</tbody> |
|
62 |
</table> |
|
63 |
|
|
64 |
<h3 id=\"no-data-label\" class=\"mx-auto text-center font-italic\">Žádná data nebyla nalezena</h3> |
|
65 |
</div>"; |
|
66 |
} else { |
|
67 |
echo "<h3 class=\"mx-auto text-center\">Pro navštívení stránky nemáte dostatečná oprávnění</h3>"; |
|
68 |
} |
|
69 |
|
|
70 |
|
application/view/contents/changesContent.php | ||
---|---|---|
1 |
<?php |
|
2 |
if (isset($_SESSION['role']) && $_SESSION['role'] == "admin") { |
|
3 |
echo "<script> |
|
4 |
//what to do when page renders |
|
5 |
window.onload = function() { |
|
6 |
fetchChanges(); |
|
7 |
}; |
|
8 |
</script> |
|
9 |
|
|
10 |
<div class=\"search-results my-4\"> |
|
11 |
<table class=\"table table-striped\"> |
|
12 |
<thead> |
|
13 |
<tr> |
|
14 |
<th scope=\"col\">Lemma</th> |
|
15 |
<th scope=\"col\">Slovní tvar</th> |
|
16 |
<th scope=\"col\">Návrh změny</th> |
|
17 |
<th scope=\"col\"></th> |
|
18 |
</tr> |
|
19 |
</thead> |
|
20 |
<tbody id=\"search-table\"> |
|
21 |
<script> |
|
22 |
let changes; |
|
23 |
function fetchChanges () { |
|
24 |
// (A1) GET SEARCH TERM |
|
25 |
const formData = new FormData(); |
|
26 |
|
|
27 |
// (A2) AJAX - USE HTTP:// NOT FILE:/ |
|
28 |
let xhr = new XMLHttpRequest(); |
|
29 |
xhr.open(\"POST\", \"./controller/GetChangeRequests.php\"); |
|
30 |
xhr.onload = function(){ |
|
31 |
let search = this.response; |
|
32 |
let parsedJSON = JSON.parse(search); |
|
33 |
changes = parsedJSON; |
|
34 |
renderChanges(parsedJSON); |
|
35 |
}; |
|
36 |
xhr.send(formData); |
|
37 |
} |
|
38 |
|
|
39 |
|
|
40 |
function renderChanges(changesList) { |
|
41 |
let result = \"\"; |
|
42 |
if(changesList !== null){ |
|
43 |
changesList.forEach((item,id) => { |
|
44 |
result +=\" <tr>\"; |
|
45 |
result += \" <td>\" + item.lemma + \" </td> \"; |
|
46 |
result += \" <td>\" + item.word + \" </td> \"; |
|
47 |
result += \" <td>\" + item.message + \" <td>\"; |
|
48 |
result += \" <td class='action-td'> \" + |
|
49 |
\" <button class='btn ml-1' title = 'Odstranit' data-toggle = 'modal' data-target = '#remove-modal' data-pseudo-id = '\" + id + \"' ><i class='fa fa-trash' ></i ></button > \" + |
|
50 |
\" </td>\"; |
|
51 |
result += \" </tr> \"; |
|
52 |
}); |
|
53 |
document.getElementById(\"search-table\").innerHTML = result; |
|
54 |
document.getElementById(\"no-data-label\").style.display = \"none\"; |
|
55 |
} else { |
|
56 |
document.getElementById(\"search-table\").innerHTML = result; |
|
57 |
document.getElementById(\"no-data-label\").style.display = \"\"; |
|
58 |
} |
|
59 |
} |
|
60 |
</script> |
|
61 |
</tbody> |
|
62 |
</table> |
|
63 |
|
|
64 |
<h3 id=\"no-data-label\" class=\"mx-auto text-center font-italic\">Žádná data nebyla nalezena</h3> |
|
65 |
</div>"; |
|
66 |
} else { |
|
67 |
echo "<h3 class=\"mx-auto text-center\">Pro navštívení stránky nemáte dostatečná oprávnění</h3>"; |
|
68 |
} |
|
69 |
|
|
70 |
|
application/view/contents/indexContent.html | ||
---|---|---|
1 |
<p> |
|
2 |
Dvě existující, už vytvořené samostatné databáze slov a jejich tvarů ze všech pramenů Dalimilovy kroniky (tj. staročeské památky z období 14., 15. století). |
|
3 |
Kronika vypráví ve staročeštině o dějinách naší země, je to první česky psaná kronika. |
|
4 |
Zkoumání jejího jazyka dovoluje popsat hlavní vývojové tendence češtiny v tzv. staročeském období (14., 15. století) |
|
5 |
a pochopit stav češtiny i její vývoj v současnosti. Databáze byly vytvořeny jako podpora pro zpracování tiskové podoby indexu |
|
6 |
všech slov a tvarů doložených v dochovaných pramenech. Index (celkem 3 díly) vyšel postupně v letech 2012–2020 jako výsledek |
|
7 |
řešení tří vědeckých projektů v rámci Fakulty pedagogické. |
|
8 |
</p> |
application/view/contents/manualContent.php | ||
---|---|---|
1 |
<h1>Vyhledávání</h1> |
|
2 |
<h2>Základní možnosti</h2> |
|
3 |
<p>Vyhledávání je možné dle libovolných z níže uvedených parametrů. Je možné vybrat jeden nebo více parametrů a vyhledávání zobrazí poze výsledky, jež splňují všechny podmínky. Při vybrání specifických parametrů se zobrazí rozšiřující možnosti pro bližší upřesnění požadavků. U parametrů, které zobrazí tyto rozšiřující možnosti, bude tato skutečnost zdůrazněna níže v této kapitole.</p> |
|
4 |
<h3>Lemma</h3> |
|
5 |
<p>Toto vyhledávací políčko umožní vyhledávání podle sloupce lemma. Je možné zadat samotné počáteční písmeno, počáteční část slova nebo slovo celé. V případě, že výrazem, který bude zadán, je očekáván právě jeden znak, je možné použít operátor <b>_</b>. Pokud má hledaný výzar předcházet libovolný počet znaků, je možné použít operátor <b>%</b>.</p> |
|
6 |
<h3>Slovní tvar</h3> |
|
7 |
<p>Jedná se opět o otevřené políčko pro zadávání, ovšem s velkým rozdílem oproti vyhledávání lemmy. Toto políčko hledá ve sloupci Slovní tvar pouze přesné shody.</p> |
|
8 |
<h3>Rukopisný pramen</h3> |
|
9 |
<p>Toto kritérium je zadané pomocí rozbalovacího seznamu. V tomto seznamu jsou vyzobrazeny všechny prameny, jež databáze obsahuje. Je možné vybrat libovolné množství pramenů současně, přičemž při nevyplnění tohoto políčka systém automaticky bere v potaz všechny prameny. Po výběru pramenů systém najde všechny záznamy, které se nachází aspoň v jednom z vybraných pramenů. </p> |
|
10 |
<h3>Pozice</h3> |
|
11 |
<p> Toto číselné kritérium určuje pozici záznamu v dokumentu a lze zadat následujícími třemi způsoby. První způsob je zadat pouze číselnou hodnotu. V tomto případě se systém pokusí najít všechny záznamy, jejichž číselná hodnota před lomítkem je stejná. V opačném případě je možné zadat číselnou hodnotu předcházenou znakem <b>/</b>. Výsledek této operace bude vypsání všech záznamů, jež mají zadanou hodnotu na druhé pozici, za lomítkem. Poslední způsob je zadání celé pozice, v jehož případě systém vyhledá pouze danou pozici. Tímto způsobem lze také zadat element na třetí pozici.</p> |
|
12 |
<h3>Poznámka 2</h3> |
|
13 |
<p>Toto kritérium porovná zadaný text s obsahem sloupce Poznámka 2. Pokud je zadán pouze text nebo část textu, systém zaháji hledání této části od začátku slova ve sloupci. Pokud je požadováno, aby text předcházel právě jeden znak lze použít operátor <b>_</b>. V opačném případě kdy vyžadováno, aby text předcházelo nula až neomezeně znaků, lze použít operátor <b>%</b>.</p> |
|
14 |
<h3>Slovní druh</h3> |
|
15 |
<p>Slovní druh lze vybrat z rozbalovacího seznamu. Tato volba nejen ovlivní výsledky vyhledávání, ale také <b>umožňí volbu pokročilých možností</b>. Tyty možnosti jsou popsány v tabulce v kapitole <b>Pokročilé možnosti</b>.</p> |
|
16 |
|
|
17 |
<h2>Pokročilé možnosti</h2> |
|
18 |
<h3>Slovní druh</h3> |
|
19 |
<table> |
|
20 |
<tr> |
|
21 |
<td>Slovní druh</td> |
|
22 |
<td>Pád</td> |
|
23 |
<td>Číslo</td> |
|
24 |
<td>Rod</td> |
|
25 |
<td>Tvar</td> |
|
26 |
<td>Stupeň</td> |
|
27 |
<td>Druh</td> |
|
28 |
<td>Osoba</td> |
|
29 |
<td>Způsob</td> |
|
30 |
<td>Čas</td> |
|
31 |
<td>Slovesný rod</td> |
|
32 |
<td>Vid</td> |
|
33 |
<td>Neurčitý Slovesný Tvar</td> |
|
34 |
<td>Typ</td> |
|
35 |
</tr> |
|
36 |
<tr> |
|
37 |
<td>Substantivum </td> |
|
38 |
<td>Ano</td> |
|
39 |
<td>Ano</td> |
|
40 |
<td>Ano</td> |
|
41 |
<td>Ne</td> |
|
42 |
<td>Ne</td> |
|
43 |
<td>Ne</td> |
|
44 |
<td>Ne</td> |
|
45 |
<td>Ne</td> |
|
46 |
<td>Ne</td> |
|
47 |
<td>Ne</td> |
|
48 |
<td>Ne</td> |
|
49 |
<td>Ne</td> |
|
50 |
<td>Ne</td> |
|
51 |
</tr> |
|
52 |
<tr> |
|
53 |
<td>Adjektivum</td> |
|
54 |
<td>Ano</td> |
|
55 |
<td>Ano</td> |
|
56 |
<td>Ano</td> |
|
57 |
<td>Ano</td> |
|
58 |
<td>Ano</td> |
|
59 |
<td>Ne</td> |
|
60 |
<td>Ne</td> |
|
61 |
<td>Ne</td> |
|
62 |
<td>Ne</td> |
|
63 |
<td>Ne</td> |
|
64 |
<td>Ne</td> |
|
65 |
<td>Ne</td> |
|
66 |
<td>Ne</td> |
|
67 |
</tr> |
|
68 |
<tr> |
|
69 |
<td>Pronomen</td> |
|
70 |
<td>Ano</td> |
|
71 |
<td>Ano</td> |
|
72 |
<td>Ano</td> |
|
73 |
<td>Ne</td> |
|
74 |
<td>Ano</td> |
|
75 |
<td>Ne</td> |
|
76 |
<td>Ne</td> |
|
77 |
<td>Ne</td> |
|
78 |
<td>Ne</td> |
|
79 |
<td>Ne</td> |
|
80 |
<td>Ne</td> |
|
81 |
<td>Ne</td> |
|
82 |
<td>Ne</td> |
|
83 |
</tr> |
|
84 |
<td>Numeralie</td> |
|
85 |
<td>Ano</td> |
|
86 |
<td>Ano</td> |
|
87 |
<td>Ano</td> |
|
88 |
<td>Ne</td> |
|
89 |
<td>Ne</td> |
|
90 |
<td>Ne</td> |
|
91 |
<td>Ne</td> |
|
92 |
<td>Ne</td> |
|
93 |
<td>Ne</td> |
|
94 |
<td>Ne</td> |
|
95 |
<td>Ne</td> |
|
96 |
<td>Ne</td> |
|
97 |
<td>Ne</td> |
|
98 |
<tr> |
|
99 |
<td>Verbum</td> |
|
100 |
<td>Ano</td> |
|
101 |
<td>Ano</td> |
|
102 |
<td>Ano</td> |
|
103 |
<td>Ne</td> |
|
104 |
<td>Ne</td> |
|
105 |
<td>Ne</td> |
|
106 |
<td>Ano</td> |
|
107 |
<td>Ano</td> |
|
108 |
<td>Ano</td> |
|
109 |
<td>Ano</td> |
|
110 |
<td>Ano</td> |
|
111 |
<td>Ano</td> |
|
112 |
<td>Ne</td> |
|
113 |
</tr> |
|
114 |
<tr> |
|
115 |
<td>Adverbium</td> |
|
116 |
<td>Ne</td> |
|
117 |
<td>Ne</td> |
|
118 |
<td>Ne</td> |
|
119 |
<td>Ne</td> |
|
120 |
<td>Ano</td> |
|
121 |
<td>Ne</td> |
|
122 |
<td>Ne</td> |
|
123 |
<td>Ne</td> |
|
124 |
<td>Ne</td> |
|
125 |
<td>Ne</td> |
|
126 |
<td>Ne</td> |
|
127 |
<td>Ne</td> |
|
128 |
<td>Ne</td> |
|
129 |
</tr> |
|
130 |
<tr> |
|
131 |
<td>Prepozice</td> |
|
132 |
<td>Ano</td> |
|
133 |
<td>Ne</td> |
|
134 |
<td>Ne</td> |
|
135 |
<td>Ne</td> |
|
136 |
<td>Ne</td> |
|
137 |
<td>Ne</td> |
|
138 |
<td>Ne</td> |
|
139 |
<td>Ne</td> |
|
140 |
<td>Ne</td> |
|
141 |
<td>Ne</td> |
|
142 |
<td>Ne</td> |
|
143 |
<td>Ne</td> |
|
144 |
<td>Ne</td> |
|
145 |
</tr> |
|
146 |
<tr> |
|
147 |
<td>Konjunkce</td> |
|
148 |
<td>Ne</td> |
|
149 |
<td>Ne</td> |
|
150 |
<td>Ne</td> |
|
151 |
<td>Ne</td> |
|
152 |
<td>Ne</td> |
|
153 |
<td>Ne</td> |
|
154 |
<td>Ne</td> |
|
155 |
<td>Ne</td> |
|
156 |
<td>Ne</td> |
|
157 |
<td>Ne</td> |
|
158 |
<td>Ne</td> |
|
159 |
<td>Ne</td> |
|
160 |
<td>Ano</td> |
|
161 |
</tr> |
|
162 |
</table> |
application/view/contents/searchContent.php | ||
---|---|---|
1 |
<script> |
|
2 |
let pageIndex = 0; |
|
3 |
let itemPerPage = 50; |
|
4 |
let itemCount = 0; |
|
5 |
let pageCount = 0; |
|
6 |
|
|
7 |
//what to do when page renders |
|
8 |
window.onload = function() { |
|
9 |
let sourceSelect = new vanillaSelectBox("#source"); |
|
10 |
filtersChange(); |
|
11 |
fetchData(false); |
|
12 |
|
|
13 |
//page-label listener |
|
14 |
document.getElementById('page-label').addEventListener('keyup',function(e){ |
|
15 |
if (e.key === 'Enter' || e.keyCode === 13) { |
|
16 |
this.blur(); |
|
17 |
} |
|
18 |
}); |
|
19 |
}; |
|
20 |
</script> |
|
21 |
|
|
22 |
<div class="search-filters container" onload="filtersChange()"> |
|
23 |
<div class="row"> |
|
24 |
<div class="mr-3"> |
|
25 |
<label for="lemma" class="mr-2">Lemma</label> |
|
26 |
<input type="text" id="lemma"> |
|
27 |
</div> |
|
28 |
<div class="mr-3"> |
|
29 |
<label for="wordshape" class="mr-2">Slovní tvar</label> |
|
30 |
<input type="text" id="wordshape"> |
|
31 |
</div> |
|
32 |
<div class="mr-3"> |
|
33 |
<label for="source" class="mr-2">Rukopisný pramen</label> |
|
34 |
<select id="source" multiple> |
|
35 |
<option value = "0">rukopis Vídeňský</option> |
|
36 |
<option value = "1">zlomky Hanušovy</option> |
|
37 |
<option value = "2">zlomky Hradecké</option> |
|
38 |
<option value = "3">rukopis Cambridžský</option> |
|
39 |
<option value = "4">rukopis Františkánský</option> |
|
40 |
<option value = "5">zlomek Olomoucký</option> |
|
41 |
<option value = "6">fragment Strahovský</option> |
|
42 |
<option value = "7">zlomky Klementinsko-Křižovnické</option> |
|
43 |
<option value = "8">zlomky Mnichovské</option> |
|
44 |
<option value = "9">rukopis Lobkovický</option> |
|
45 |
<option value = "10">rukopis Pelclův</option> |
|
46 |
<option value = "11">rukopis Cerronský</option> |
|
47 |
<option value = "12">rukopis Fürstenberský</option> |
|
48 |
<option value = "13">rukopis Zebererův</option> |
|
49 |
<option value = "14">vydání Pavla Ješína z Bezdězi, Praha 1620</option> |
|
50 |
<option value = "15">básně připsané při Pulkavově kronice v rukopisu Litoměřickém</option> |
|
51 |
</select> |
|
52 |
</div> |
|
53 |
<div class="mr-3"> |
|
54 |
<label for="location" class="mr-2">Pozice</label> |
|
55 |
<input type="text" id="location"> |
|
56 |
</div> |
|
57 |
<div class="mr-3"> |
|
58 |
<label for="description2" class="mr-2">Poznámka 2</label> |
|
59 |
<input type="text" id="description2" /> |
|
60 |
</div> |
|
61 |
|
|
62 |
<div class="mr-3"> |
|
63 |
<label for="wordclass" class="mr-2">Slovní druh</label> |
|
64 |
<select onchange="filtersChange()" id="wordclass"> |
|
65 |
<option selected="selected" value = "">nevybráno</option> |
|
66 |
<option value = "N">substantivum</option> |
|
67 |
<option value = "A">adjektivum</option> |
|
68 |
<option value = "P">pronomen</option> |
|
69 |
<option value = "C">numeralie</option> |
|
70 |
<option value = "V">verbum</option> |
|
71 |
<option value = "D">adverbium</option> |
|
72 |
<option value = "R">prepozice</option> |
|
73 |
<option value = "J">konjunkce</option> |
|
74 |
<option value = "T">partikule</option> |
|
75 |
<option value = "I">interjekce</option> |
|
76 |
</select> |
|
77 |
</div> |
|
78 |
|
|
79 |
<!-- conditionaly rendered filters--> |
|
80 |
<div class="mr-3" id="filter-person"> |
|
81 |
<label for="person" class="mr-2">Osoba</label> |
|
82 |
<select id="person"> |
|
83 |
<option selected="selected" value = "">nevybráno</option> |
|
84 |
<option value = "1">1.</option> |
|
85 |
<option value = "2">2.</option> |
|
86 |
<option value = "3">3.</option> |
|
87 |
</select> |
|
88 |
</div> |
|
89 |
<div class="mr-3" id="filter-case"> |
|
90 |
<label for="case" class="mr-2">Pád</label> |
|
91 |
<select id="case"> |
|
92 |
<option selected="selected" value = "">nevybráno</option> |
|
93 |
<option value = "1">nominativ</option> |
|
94 |
<option value = "2">genitiv</option> |
|
95 |
<option value = "3">dativ</option> |
|
96 |
<option value = "4">akuzativ</option> |
|
97 |
<option value = "5">vokativ</option> |
|
98 |
<option value = "6">lokál</option> |
|
99 |
<option value = "7">instrumentál</option> |
|
100 |
</select> |
|
101 |
</div> |
|
102 |
<div class="mr-3" id="filter-countability"> |
|
103 |
<label for="countability" class="mr-2">Číslo</label> |
|
104 |
<select id="countability"> |
|
105 |
<option selected="selected" value = "">nevybráno</option> |
|
106 |
<option value = "S">singulár</option> |
|
107 |
<option value = "P">plurál</option> |
|
108 |
<option value = "D">duál</option> |
|
109 |
</select> |
|
110 |
</div> |
|
111 |
<div class="mr-3" id="filter-mood"> |
|
112 |
<label for="mood" class="mr-2">Způsob</label> |
|
113 |
<select id="mood" onchange="moodChange()"> |
|
114 |
<option selected="selected" value = "">nevybráno</option> |
|
115 |
<option value = "d">indikativ</option> |
|
116 |
<option value = "i">imperativ</option> |
|
117 |
<option value = "c">kondicionál</option> |
|
118 |
</select> |
|
119 |
</div> |
|
120 |
<div class="mr-3" id="filter-time"> |
|
121 |
<label for="time" class="mr-2">Čas</label> |
|
122 |
<select id="time"> |
|
123 |
<option selected="selected" value = "">nevybráno</option> |
|
124 |
<option value = "P">prézens</option> |
|
125 |
<option value = "A">aorist</option> |
|
126 |
<option value = "R">préteritum</option> |
|
127 |
<option value = "I">imperfektum</option> |
|
128 |
<option value = "H">plusquamperfektum</option> |
|
129 |
<option value = "F">futurum</option> |
|
130 |
</select> |
|
131 |
</div> |
|
132 |
<div class="mr-3" id="filter-v-type"> |
|
133 |
<label for="v-type" class="mr-2">Slovesný rod</label> |
|
134 |
<select id="v-type"> |
|
135 |
<option selected="selected" value = "">nevybráno</option> |
|
136 |
<option value = "A">aktivum</option> |
|
137 |
<option value = "P">pasivum</option> |
|
138 |
</select> |
|
139 |
</div> |
|
140 |
<div class="mr-3" id="filter-vid"> |
|
141 |
<label for="vid" class="mr-2">Vid</label> |
|
142 |
<select id="vid"> |
|
143 |
<option selected="selected" value = "">nevybráno</option> |
|
144 |
<option value = "P">perfektivum</option> |
|
145 |
<option value = "I">imperfektivum </option> |
|
146 |
</select> |
|
147 |
</div> |
|
148 |
<div class="mr-3" id="filter-irregular"> |
|
149 |
<label for="irregular" class="mr-2">Neurčitý slovesný tvar</label> |
|
150 |
<select id="irregular" onchange="irregularChange()"> |
|
151 |
<option selected="selected" value = "">nevybráno</option> |
|
152 |
<option value = "f">infinitiv</option> |
|
153 |
<option value = "S">supinum</option> |
|
154 |
<option value = "e">přech. přítomný</option> |
|
155 |
<option value = "m">přech. minulý</option> |
|
156 |
<option value = "A">part. perf. akt.</option> |
|
157 |
<option value = "P">part. perf. pas.</option> |
|
158 |
</select> |
|
159 |
</div> |
|
160 |
<div class="mr-3" id="filter-gender"> |
|
161 |
<label for="gender" class="mr-2">Rod</label> |
|
162 |
<select id="gender"> |
|
163 |
<option selected="selected" value = "">nevybráno</option> |
|
164 |
<option value = "M">maskulinum</option> |
|
165 |
<option value = "F">femininum</option> |
|
166 |
<option value = "N">neutrum</option> |
|
167 |
</select> |
|
168 |
</div> |
|
169 |
<div class="mr-3" id="filter-shape"> |
|
170 |
<label for="shape" class="mr-2">Tvar</label> |
|
171 |
<select id="shape"> |
|
172 |
<option selected="selected" value = "">nevybráno</option> |
|
173 |
<option value = "C">složený</option> |
|
174 |
<option value = "N">jmenný</option> |
|
175 |
</select> |
|
176 |
</div> |
|
177 |
<div class="mr-3" id="filter-grade"> |
|
178 |
<label for="grade" class="mr-2">Stupeň</label> |
|
179 |
<select id="grade"> |
|
180 |
<option selected="selected" value = "">nevybráno</option> |
|
181 |
<option value = "1">pozitiv</option> |
|
182 |
<option value = "2">komparativ</option> |
|
183 |
<option value = "3">superlativ</option> |
|
184 |
</select> |
|
185 |
</div> |
|
186 |
<div class="mr-3" id="filter-type"> |
|
187 |
<label for="type" class="mr-2">Druh</label> |
|
188 |
<select id="type"> |
|
189 |
<option selected="selected" value = "">nevybráno</option> |
|
190 |
<option value = "P">personalia</option> |
|
191 |
<option value = "S">posesiva</option> |
|
192 |
<option value = "D">demonstrativa</option> |
|
193 |
<option value = "Q">interogativa</option> |
|
194 |
<option value = "J">relativa</option> |
|
195 |
<option value = "Z">indefinita</option> |
|
196 |
<option value = "L">limitativa</option> |
|
197 |
<option value = "W">negativa</option> |
|
198 |
</select> |
|
199 |
</div> |
|
200 |
<div class="mr-3" id="filter-k-type"> |
|
201 |
<label for="k-type" class="mr-2">Typ</label> |
|
202 |
<select id="k-type"> |
|
203 |
<option selected="selected" value = "">nevybráno</option> |
|
204 |
<option value = "V">větná</option> |
|
205 |
<option value = "C">členská</option> |
|
206 |
<option value = "N">navazovací</option> |
|
207 |
<option value = "P">spojení s přechodníkem</option> |
|
208 |
</select> |
|
209 |
</div> |
|
210 |
|
|
211 |
<!-- send button--> |
|
212 |
<div class="ml-auto" id="filter-control-div"> |
|
213 |
<i class="mr-1 my-auto" id="hit-count">0 záznamů</i> |
|
214 |
<button class="btn" id="filter-but" onclick="callFilter()"> |
|
215 |
Filtrovat |
|
216 |
</button> |
|
217 |
|
|
218 |
<?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?> |
|
219 |
<button class="btn" data-toggle="modal" data-target="#edit-modal" data-title="Nový záznam"> |
|
220 |
<i class="fa fa-plus"></i> |
|
221 |
</button> |
|
222 |
<?php }?> |
|
223 |
</div> |
|
224 |
</div> |
|
225 |
</div> |
|
226 |
|
|
227 |
<div class="search-results mt-4"> |
|
228 |
<table class="table table-striped"> |
|
229 |
<thead> |
|
230 |
<tr> |
|
231 |
<?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?> |
|
232 |
<th scope="col">Vydáno</th> |
|
233 |
<?php }?> |
|
234 |
<th scope="col">Lemma</th> |
|
235 |
<th scope="col">Slovní tvar</th> |
|
236 |
<th scope="col">Morfologie</th> |
|
237 |
<th scope="col">Rukopisy</th> |
|
238 |
<th scope="col">Pozice</th> |
|
239 |
<th scope="col">Poznámka 2</th> |
|
240 |
<th scope="col"></th> |
|
241 |
</tr> |
|
242 |
</thead> |
|
243 |
<tbody id="search-table"> |
|
244 |
<script> |
|
245 |
let data; |
|
246 |
function fetchData (filter = true) { |
|
247 |
// (A1) GET SEARCH TERM |
|
248 |
const formData = new FormData(); |
|
249 |
formData.append("page", ""+pageIndex); |
|
250 |
formData.append("items_per_page", ""+itemPerPage); |
|
251 |
if(filter){ |
|
252 |
filterData(formData); |
|
253 |
} |
|
254 |
|
|
255 |
// (A2) AJAX - USE HTTP:// NOT FILE:/ |
|
256 |
let xhr = new XMLHttpRequest(); |
|
257 |
xhr.open("POST", "./controller/TableController.php"); |
|
258 |
xhr.onload = function(){ |
|
259 |
let search = this.response; |
|
260 |
//console.log(search); |
|
261 |
let parsedJSON = JSON.parse(search); |
|
262 |
if(parsedJSON.count === 0){ |
|
263 |
document.getElementById("no-data-label").style.display = ""; |
|
264 |
document.getElementById("paging-control").style.display = "none"; |
|
265 |
} else { |
|
266 |
document.getElementById("no-data-label").style.display = "none"; |
|
267 |
document.getElementById("paging-control").style.display = ""; |
|
268 |
} |
|
269 |
|
|
270 |
if(parsedJSON.count === 1){ |
|
271 |
document.getElementById("hit-count").innerText = "1 záznamů"; |
|
272 |
} else if(parsedJSON.count < 5){ |
|
273 |
document.getElementById("hit-count").innerText = parsedJSON.count +" záznamů"; |
|
274 |
} else { |
|
275 |
document.getElementById("hit-count").innerText = parsedJSON.count +" záznamů"; |
|
276 |
} |
|
277 |
|
|
278 |
itemCount = parsedJSON.count; |
|
279 |
pageCount = Math.ceil(itemCount / itemPerPage); |
|
280 |
document.getElementById("page-label").value = (pageIndex + 1) + " / " + pageCount; |
|
281 |
data = parsedJSON.data; |
|
282 |
renderData(parsedJSON.data); |
|
283 |
}; |
|
284 |
xhr.send(formData); |
|
285 |
} |
|
286 |
|
|
287 |
function publishItem(id, index){ |
|
288 |
let item = data[index]; |
|
289 |
const finishedChecked = document.getElementById("check-"+id).checked; |
|
290 |
|
|
291 |
const formData = new FormData(); |
|
292 |
formData.append("finished", finishedChecked); |
|
293 |
|
|
294 |
formData.append("id", item.id); |
|
295 |
formData.append("ending", item.ending); |
|
296 |
formData.append("prefix", item.prefix); |
|
297 |
formData.append("suffix", item.suffix); |
|
298 |
|
|
299 |
formData.append("namedentity", item.namedentity); |
|
300 |
formData.append("position1", item.position1); |
|
301 |
formData.append("position2", item.position2); |
|
302 |
formData.append("positiondetail", item.positiondetail); |
|
303 |
formData.append("word", item.word); |
|
304 |
formData.append("lemma", item.lemma.lemma); |
|
305 |
formData.append("manuscript", item.manuscript); |
|
306 |
formData.append("context", item.context); |
|
307 |
formData.append("description", item.description); |
|
308 |
formData.append("description2", item.description2); |
|
309 |
formData.append("description3", item.description3); |
|
310 |
formData.append("tag", item.tag.tag); |
|
311 |
formData.append("pos", item.lemma.pos); |
|
312 |
formData.append("date", item.date); |
|
313 |
|
|
314 |
var xhr = new XMLHttpRequest(); |
|
315 |
xhr.open("POST", "./controller/UpdateController.php"); |
|
316 |
xhr.send(formData); |
|
317 |
setTimeout(function(){ |
|
318 |
location.reload(); |
|
319 |
}, 500); |
|
320 |
} |
|
321 |
|
|
322 |
function renderData(data) { |
|
323 |
let result = ""; |
|
324 |
data.forEach((item,id) => { |
|
325 |
result += "<tr>"; |
|
326 |
<?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) {?> |
|
327 |
result += "<td><input type='checkbox' id='check-"+item.id+"' onchange='publishItem("+item.id+", "+ id+ ")' "+ ((item.finished === true) ? 'checked' : '') +" /></td>"; |
|
328 |
<?php }?> |
|
329 |
result += "<td>" + item.lemma.lemma + "</td>"; |
|
330 |
result += "<td>" + item.word + "</td>"; |
|
331 |
result += "<td>" + item.tag.tag + "</td>"; |
|
332 |
result += "<td>" + renderManuscript(item.manuscript) + "</td>"; |
|
333 |
result += "<td>" + item.position1 + (item.position2 ? ("/" + item.position2 + (item.positiondetail ? "/" + item.positiondetail : "")) : "") + "</td>"; |
|
334 |
result += "<td>" + ((item.description2 !== null) ? item.description2 : "-") + "</td>"; |
|
335 |
result += "<td class=\"action-td\">" + |
|
336 |
"<button class=\"btn mr-1\" title=\"Upravit\" data-toggle=\"modal\" data-target=\"#edit-modal\" data-pseudo-id='" + id + "' data-title=\"Upravit záznam\"><i class=\"fa fa-pencil\"></i></button>" + |
|
337 |
"<button class=\"btn\" title=\"Detail\" data-toggle=\"modal\" data-target=\"#detail-modal\" data-pseudo-id='" + id + "'><i class=\"fa fa-search\"></i></button>"; |
|
338 |
<?php if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] == true) { ?> //show remove only if logged in |
|
339 |
result += "<button class=\"btn ml-1\" title=\"Odstranit\" data-toggle=\"modal\" data-target=\"#remove-modal\" data-pseudo-id='" + id + "'><i class=\"fa fa-trash\"></i></button>"; |
|
340 |
<?php }?> |
|
341 |
result += "</td>"; |
|
342 |
result += "</tr>"; |
|
343 |
}); |
|
344 |
document.getElementById("search-table").innerHTML = result; |
|
345 |
} |
|
346 |
|
|
347 |
function removeSelectedItem(idToDelete){ |
|
348 |
const data = new FormData(); //to pass ids, which we want to delete from DB |
|
349 |
data.append("id", ""+idToDelete); //id to delete from table dd_wordform |
|
350 |
|
|
351 |
let xhr = new XMLHttpRequest(); |
|
352 |
xhr.open("POST", "./controller/RemoveController.php"); |
|
353 |
xhr.send(data); |
|
354 |
fetchData(true); //reload data after item delete |
|
355 |
} |
|
356 |
</script> |
|
357 |
</tbody> |
|
358 |
</table> |
|
359 |
|
|
360 |
<h3 id="no-data-label" class="mx-auto text-center font-italic">Žádná data nebyla nalezena</h3> |
|
361 |
|
|
362 |
<div id="paging-control" class="mx-auto text-center" style="display: none"> |
|
363 |
<button class="border-0 shadow-none bg-transparent" onclick="moveToFirst()"><b><<</b></button> |
|
364 |
<button class="border-0 shadow-none bg-transparent" onclick="moveToPrevious()"><b><</b></button> |
|
365 |
<input class="border-0 shadow-none bg-transparent text-center font-weight-bold" |
|
366 |
id="page-label" |
|
367 |
onfocus="onManualPageStart(this)" |
|
368 |
onblur="onManualPageEnd(this)" |
|
369 |
/> |
|
370 |
<button class="border-0 shadow-none bg-transparent" onclick="moveToNext()"><b>></b></button> |
|
371 |
<button class="border-0 shadow-none bg-transparent" onclick="moveToLast()"><b>>></b></button> |
|
372 |
</div> |
|
373 |
</div> |
application/view/contents/userContent.php | ||
---|---|---|
1 |
<?php |
|
2 |
if (isset($_SESSION['role']) && $_SESSION['role'] == "admin") { |
|
3 |
echo "<script> |
|
4 |
//what to do when page renders |
|
5 |
window.onload = function() { |
|
6 |
fetchUsers(); |
|
7 |
}; |
|
8 |
</script> |
|
9 |
|
|
10 |
<div class=\"search-results my-4\"> |
|
11 |
<table class=\"table table-striped\"> |
|
12 |
<thead> |
|
13 |
<tr> |
|
14 |
<th scope=\"col\">Uživatel</th> |
|
15 |
<th scope=\"col\">Práva</th> |
|
16 |
<th scope=\"col\"><button class=\"btn ml-1\" title=\"Přidat\" data-toggle=\"modal\" data-target=\"#edit-modal\" data-title=\"Nový uživatel\"><i class=\"fa fa-plus\"></i></button></th> |
|
17 |
</tr> |
|
18 |
</thead> |
|
19 |
<tbody id=\"search-table\"> |
|
20 |
<script> |
|
21 |
let users; |
|
22 |
function fetchUsers () { |
|
23 |
// (A1) GET SEARCH TERM |
|
24 |
const formData = new FormData(); |
|
25 |
|
|
26 |
// (A2) AJAX - USE HTTP:// NOT FILE:/ |
|
27 |
let xhr = new XMLHttpRequest(); |
|
28 |
xhr.open(\"POST\", \"./controller/UsersListController.php\"); |
|
29 |
xhr.onload = function(){ |
|
30 |
let search = this.response; |
|
31 |
let parsedJSON = JSON.parse(search); |
|
32 |
users = parsedJSON; |
|
33 |
renderUsers(parsedJSON); |
|
34 |
}; |
|
35 |
xhr.send(formData); |
|
36 |
} |
|
37 |
|
|
38 |
|
|
39 |
function renderUsers(users) { |
|
40 |
let result = \"\"; |
|
41 |
users.forEach((item,id) => { |
|
42 |
result += \"<tr>\"; |
|
43 |
result += \"<td>\" + item.username + \"</td>\"; |
|
44 |
result += \"<td>\" + item.role + \"</td>\"; |
|
45 |
(item.role !== \"admin\") ? (result += \"<td class='action-td'>\" + |
|
46 |
\"<button class='btn ml-1' title='Upravit' data-toggle='modal' data-target='#edit-modal' data-pseudo-id='\" + id + \"' data-title='Upravit uživatele'><i class='fa fa-pencil'></i></button>\" + |
|
47 |
\"<button class='btn ml-1' title='Odstranit' data-toggle='modal' data-target='#remove-modal' data-pseudo-id='\" + id + \"'><i class='fa fa-trash'></i></button>\" + |
|
48 |
\"</td>\") : result += \"<td class='action-td'/>\"; |
|
49 |
result += \"</tr>\"; |
|
50 |
}); |
|
51 |
document.getElementById(\"search-table\").innerHTML = result; |
|
52 |
} |
|
53 |
</script> |
|
54 |
</tbody> |
|
55 |
</table> |
|
56 |
</div>"; |
|
57 |
} else { |
|
58 |
echo "<h3 class=\"mx-auto text-center\">Pro navštívení stránky nemáte dostatečná oprávnění</h3>"; |
|
59 |
} |
|
60 |
|
|
61 |
|
application/view/indexContent.html | ||
---|---|---|
1 |
<p> |
|
2 |
Dvě existující, už vytvořené samostatné databáze slov a jejich tvarů ze všech pramenů Dalimilovy kroniky (tj. staročeské památky z období 14., 15. století). |
|
3 |
Kronika vypráví ve staročeštině o dějinách naší země, je to první česky psaná kronika. |
|
4 |
Zkoumání jejího jazyka dovoluje popsat hlavní vývojové tendence češtiny v tzv. staročeském období (14., 15. století) |
|
5 |
a pochopit stav češtiny i její vývoj v současnosti. Databáze byly vytvořeny jako podpora pro zpracování tiskové podoby indexu |
|
6 |
všech slov a tvarů doložených v dochovaných pramenech. Index (celkem 3 díly) vyšel postupně v letech 2012–2020 jako výsledek |
|
7 |
řešení tří vědeckých projektů v rámci Fakulty pedagogické. |
|
8 |
</p> |
application/view/js-scripts/convertors.js | ||
---|---|---|
1 |
|
|
2 |
const codeToWordclass = { |
|
3 |
"N": "substantivum", |
|
4 |
"A": "adjektivum", |
|
5 |
"P": "pronomen", |
|
6 |
"C": "numeralie", |
|
7 |
"V": "verbum", |
|
8 |
"D": "adverbium", |
|
9 |
"R": "prepozice", |
|
10 |
"J": "konjunkce", |
|
11 |
"I": "interjekce", |
|
12 |
"T": "partikule" |
|
13 |
}; |
|
14 |
|
|
15 |
const wordclassToNum = { |
|
16 |
"N": 0, |
|
17 |
"A": 1, |
|
18 |
"P": 2, |
|
19 |
"C": 3, |
|
20 |
"V": 4, |
|
21 |
"D": 5, |
|
22 |
"R": 6, |
|
23 |
"J": 7, |
|
24 |
"I": 8, |
|
25 |
"T": 9 |
|
26 |
}; |
|
27 |
|
|
28 |
const codeToManuscript = { |
|
29 |
"0": "rukopis Vídeňský", |
|
30 |
"1": "zlomky Hanušovy", |
|
31 |
"2": "zlomky Hradecké", |
|
32 |
"3": "rukopis Cambridžský", |
|
33 |
"4": "rukopis Františkánský", |
|
34 |
"5": "zlomek Olomoucký", |
|
35 |
"6": "fragment Strahovský", |
|
36 |
"7": "zlomky Klementinsko-Křižovnické", |
|
37 |
"8": "zlomky Mnichovské", |
|
38 |
"9": "rukopis Lobkovický", |
|
39 |
"10": "rukopis Pelclův", |
|
40 |
"11": "rukopis Cerronský", |
|
41 |
"12": "rukopis Fürstenberský", |
|
42 |
"13": "rukopis Zebererův", |
|
43 |
"14": "vydání Pavla Ješína z Bezdězi, Praha 1620", |
|
44 |
"15": "básně připsané při Pulkavově kronice v rukopisu Litoměřickém", |
|
45 |
}; |
|
46 |
|
|
47 |
const codeToManuscriptShort = { |
|
48 |
"0": "V", |
|
49 |
"1": "H", |
|
50 |
"2": "Hr", |
|
51 |
"3": "C", |
|
52 |
"4": "F", |
|
53 |
"5": "O", |
|
54 |
"6": "S", |
|
55 |
"7": "K", |
|
56 |
"8": "M", |
|
57 |
"9": "L", |
|
58 |
"10": "P", |
|
59 |
"11": "Cr", |
|
60 |
"12": "Fs", |
|
61 |
"13": "Z", |
|
62 |
"14": "Js", |
|
63 |
"15": "Pl", |
|
64 |
}; |
|
65 |
|
|
66 |
const codeToCase = { |
|
67 |
"1": "nominativ", |
|
68 |
"2": "genitiv", |
|
69 |
"3": "dativ", |
|
70 |
"4": "akuzativ", |
|
71 |
"5": "vokativ", |
|
72 |
"6": "lokál", |
|
73 |
"7": "instrumentál" |
|
74 |
}; |
|
75 |
|
|
76 |
const codeToCountability = { |
|
77 |
"S": "singulár", |
|
78 |
"P": "plurál", |
|
79 |
"D": "duál" |
|
80 |
}; |
|
81 |
|
|
82 |
const codeToGender = { |
|
83 |
"M": "maskulinum", |
|
84 |
"F": "femininum", |
|
85 |
"N": "neutrum" |
|
86 |
}; |
|
87 |
|
|
88 |
const codeToGrade = { |
|
89 |
"1": "pozitiv", |
|
90 |
"2": "komparativ", |
|
91 |
"3": "superlativ" |
|
92 |
}; |
|
93 |
|
|
94 |
const codeToKType = { |
|
95 |
"V": "větná", |
|
96 |
"C": "členská", |
|
97 |
"N": "navazovací", |
|
98 |
"P": "spojení s přechodníkem" |
|
99 |
}; |
|
100 |
|
|
101 |
const codeToShape = { |
|
102 |
"C": "složený", |
|
103 |
"N": "jmenný" |
|
104 |
}; |
|
105 |
|
|
106 |
const codeToVid = { |
|
107 |
"P": "perfektivum", |
|
108 |
"I": "imperfektivum", |
|
109 |
}; |
|
110 |
|
|
111 |
const codeToVType = { |
|
112 |
"A": "aktivum", |
|
113 |
"P": "pasivum", |
|
114 |
}; |
|
115 |
|
|
116 |
const codeToTime= { |
|
117 |
"P": "prézens", |
|
118 |
"A": "aorist", |
|
119 |
"R": "préteritum", |
|
120 |
"I": "imperfektum", |
|
121 |
"H": "plusquamperfektum", |
|
122 |
"F": "futurum" |
|
123 |
}; |
|
124 |
|
|
125 |
const codeToType = { |
|
126 |
"P": "posesivum", |
|
127 |
"S": "personale", |
|
128 |
"D": "demonstrativum", |
|
129 |
"Q": "interogativum", |
|
130 |
"J": "relativum", |
|
131 |
"Z": "indefinitum", |
|
132 |
"L": "limitativum", |
|
133 |
"W": "negativum", |
|
134 |
}; |
|
135 |
|
|
136 |
const codeToMood = { |
|
137 |
"d": "indikativ", |
|
138 |
"i": "imperativ", |
|
139 |
"c": "kondicionál" |
|
140 |
}; |
|
141 |
|
|
142 |
const codeToIrregular = { |
|
143 |
"f": "infinitiv", |
|
144 |
"S": "supinum", |
|
145 |
"e": "přech. přítomný", |
|
146 |
"m": "přech. minulý", |
|
147 |
"A": "part. perf. akt.", |
|
148 |
"P": "part. perf. akt." |
|
149 |
}; |
|
150 |
|
|
151 |
function convertDate(date) { |
|
152 |
let newDate = ""; |
|
153 |
date = date.replace(" 00:00:00", ""); |
|
154 |
let splitDate = date.split("-"); |
|
155 |
|
|
156 |
newDate += splitDate[2] + ". " + splitDate[1] + ". " + splitDate[0]; |
|
157 |
return newDate; |
|
158 |
} |
|
159 |
|
|
160 |
function renderManuscript(manuscripts, shorten=true) { |
|
161 |
let output = ""; |
|
162 |
for(let i = 0; i < manuscripts.length; i++){ |
|
163 |
if(shorten) |
|
164 |
output += ("<span title=\""+ codeToManuscript[manuscripts[i]] +"\">" + codeToManuscriptShort[manuscripts[i]] + "</span>"); |
|
165 |
else |
|
166 |
output += codeToManuscript[manuscripts[i]]; |
|
167 |
|
|
168 |
if(i < manuscripts.length - 1){ |
|
169 |
if(shorten) |
|
170 |
output += ", "; |
|
171 |
else |
|
172 |
output += "; "; |
|
173 |
} |
|
174 |
} |
|
175 |
return output; |
|
176 |
} |
application/view/js-scripts/filterControl.js | ||
---|---|---|
1 |
function moodChange() { |
|
2 |
if(document.getElementById("mood").value !== ""){ |
|
3 |
document.getElementById("irregular").disabled = true; |
|
4 |
document.getElementById("irregular").title = "Neurčitý slovesný tvar smí být nastaven pouze není-li nastaven způsob"; |
|
5 |
} else { |
|
6 |
document.getElementById("irregular").disabled = false; |
|
7 |
document.getElementById("irregular").title = ""; |
|
8 |
} |
|
9 |
} |
|
10 |
|
|
11 |
function irregularChange() { |
|
12 |
if(document.getElementById("irregular").value !== ""){ |
|
13 |
document.getElementById("mood").disabled = true; |
|
14 |
document.getElementById("mood").title = "Způsob smí být nastaven pouze není-li nastaven neurčitý slovesný tvar"; |
|
15 |
} else { |
|
16 |
document.getElementById("mood").disabled = false; |
|
17 |
document.getElementById("mood").title = ""; |
|
18 |
} |
|
19 |
} |
|
20 |
|
|
21 |
function callFilter() { |
|
22 |
pageIndex = 0; |
|
23 |
fetchData(true) |
|
24 |
} |
|
25 |
|
|
26 |
function filterData (formData) { |
|
27 |
//regular |
|
28 |
formData.append("lemma", document.getElementById("lemma").value); |
|
29 |
formData.append("word", document.getElementById("wordshape").value); |
|
30 |
formData.append("description2", document.getElementById("description2").value); |
|
31 |
|
|
32 |
//positions |
|
33 |
const positionSplit = document.getElementById("location").value.split("/"); |
|
34 |
formData.append("position1", positionSplit[0] !== undefined ? positionSplit[0] : ""); |
|
35 |
formData.append("position2", positionSplit[1] !== undefined ? positionSplit[1] : ""); |
|
36 |
formData.append("positiondetail", positionSplit[2] !== undefined ? positionSplit[2] : ""); |
|
37 |
|
|
38 |
//multiselect |
|
39 |
formData.append("manuscript", getValues("source")); |
|
40 |
|
|
41 |
const pos = document.getElementById("wordclass").value; |
|
42 |
formData.append("tag_pos", pos); |
|
43 |
//those upcoming are dynamic based on the previous field |
|
44 |
formData.append("tag_case", document.getElementById("case").value); |
|
45 |
formData.append("tag_number", document.getElementById("countability").value); |
|
46 |
formData.append("tag_gender", document.getElementById("gender").value); |
|
47 |
formData.append("tag_degree", document.getElementById("grade").value); |
|
48 |
formData.append("tag_shape", document.getElementById("shape").value); |
|
49 |
formData.append("tag_num", "");//THIS ONE IS WORTHLESS |
|
50 |
|
|
51 |
if(pos === "P"){ |
|
52 |
formData.append("tag_sentence", document.getElementById("type").value); |
|
53 |
} else if(pos === "V"){ |
|
54 |
const mood = document.getElementById("mood").value; |
|
55 |
if(mood !== ""){ |
|
56 |
formData.append("tag_sentence", mood); |
|
57 |
} else { |
|
58 |
formData.append("tag_sentence", document.getElementById("irregular").value); |
|
59 |
} |
|
60 |
} else if(pos === "J"){ |
|
61 |
formData.append("tag_sentence", document.getElementById("k-type").value); |
|
62 |
} |
|
63 |
|
|
64 |
formData.append("tag_verb_person", document.getElementById("person").value); |
|
65 |
formData.append("tag_verb_time", document.getElementById("time").value); |
|
66 |
formData.append("tag_verb_degree", document.getElementById("vid").value); |
|
67 |
formData.append("tag_verb_aspect", document.getElementById("v-type").value); |
|
68 |
} |
|
69 |
|
|
70 |
function filtersChange() { |
|
71 |
const value = document.getElementById("wordclass").value; |
|
72 |
let movedNode; |
|
73 |
let beforeNode; |
|
74 |
switch (value) { |
|
75 |
case "N": |
|
76 |
setFilerVisibility([ |
|
77 |
true, |
|
78 |
true, |
|
79 |
true, |
|
80 |
false, |
|
81 |
false, |
|
82 |
false, |
|
83 |
false, |
|
84 |
false, |
|
85 |
false, |
|
86 |
false, |
|
87 |
false, |
|
88 |
false, |
|
89 |
false |
|
90 |
]); |
|
91 |
movedNode = document.getElementById("filter-case"); |
|
92 |
beforeNode = document.getElementById("filter-countability"); |
|
93 |
movedNode.parentNode.insertBefore(movedNode, beforeNode); |
|
94 |
break; |
|
95 |
case "A": |
|
96 |
setFilerVisibility([ |
|
97 |
true, |
|
98 |
true, |
|
99 |
true, |
|
100 |
true, |
|
101 |
true, |
|
102 |
false, |
|
103 |
false, |
|
104 |
false, |
|
105 |
false, |
|
106 |
false, |
|
107 |
false, |
|
108 |
false, |
|
109 |
false |
|
110 |
]); |
|
111 |
movedNode = document.getElementById("filter-case"); |
|
112 |
beforeNode = document.getElementById("filter-countability"); |
|
113 |
movedNode.parentNode.insertBefore(movedNode, beforeNode); |
|
114 |
break; |
|
115 |
case "P": |
|
116 |
setFilerVisibility([ |
|
117 |
true, |
|
118 |
true, |
|
119 |
true, |
|
120 |
false, |
|
121 |
false, |
|
122 |
true, |
|
123 |
false, |
|
124 |
false, |
|
125 |
false, |
|
126 |
false, |
|
127 |
false, |
|
128 |
false, |
|
129 |
false |
|
130 |
]); |
|
131 |
movedNode = document.getElementById("filter-case"); |
|
132 |
beforeNode = document.getElementById("filter-countability"); |
|
133 |
movedNode.parentNode.insertBefore(movedNode, beforeNode); |
|
134 |
break; |
|
135 |
case "C": |
|
136 |
setFilerVisibility([ |
|
137 |
true, |
|
138 |
true, |
|
139 |
true, |
|
140 |
false, |
|
141 |
false, |
|
142 |
false, |
|
143 |
false, |
|
144 |
false, |
|
145 |
false, |
|
146 |
false, |
|
147 |
false, |
|
148 |
false, |
|
149 |
false |
|
150 |
]); |
|
151 |
movedNode = document.getElementById("filter-case"); |
|
152 |
beforeNode = document.getElementById("filter-countability"); |
|
153 |
movedNode.parentNode.insertBefore(movedNode, beforeNode); |
|
154 |
break; |
|
155 |
case "V": |
|
156 |
setFilerVisibility([ |
|
157 |
true, |
|
158 |
true, |
|
159 |
true, |
|
160 |
false, |
|
161 |
false, |
|
162 |
false, |
|
163 |
true, |
|
164 |
true, |
|
165 |
true, |
|
166 |
true, |
|
167 |
true, |
|
168 |
true, |
|
169 |
false |
|
170 |
]); |
|
171 |
movedNode = document.getElementById("filter-case"); |
|
172 |
beforeNode = document.getElementById("filter-control-div"); |
|
173 |
movedNode.parentNode.insertBefore(movedNode, beforeNode); |
|
174 |
break; |
|
175 |
case "D": |
|
176 |
setFilerVisibility([ |
|
177 |
false, |
|
178 |
false, |
|
179 |
false, |
|
180 |
false, |
|
181 |
true, |
|
182 |
false, |
|
183 |
false, |
|
184 |
false, |
|
185 |
false, |
|
186 |
false, |
|
187 |
false, |
|
188 |
false, |
|
189 |
false |
|
190 |
]); |
|
191 |
break; |
|
192 |
case "R": |
|
193 |
setFilerVisibility([ |
|
194 |
true, |
|
195 |
false, |
|
196 |
false, |
|
197 |
false, |
|
198 |
false, |
|
199 |
false, |
|
200 |
false, |
|
201 |
false, |
|
202 |
false, |
|
203 |
false, |
|
204 |
false, |
|
205 |
false, |
|
206 |
false |
|
207 |
]); |
|
208 |
break; |
|
209 |
case "J": |
|
210 |
setFilerVisibility([ |
|
211 |
false, |
|
212 |
false, |
|
213 |
false, |
|
214 |
false, |
|
215 |
false, |
|
216 |
false, |
|
217 |
false, |
|
218 |
false, |
|
219 |
false, |
|
220 |
false, |
|
221 |
false, |
|
222 |
false, |
|
223 |
true |
|
224 |
]); |
|
225 |
break; |
|
226 |
case "I": |
|
227 |
setFilerVisibility([ |
|
228 |
false, |
|
229 |
false, |
|
230 |
false, |
|
231 |
false, |
|
232 |
false, |
|
233 |
false, |
|
234 |
false, |
|
235 |
false, |
|
236 |
false, |
|
237 |
false, |
|
238 |
false, |
|
239 |
false, |
|
240 |
false |
|
241 |
]); |
|
242 |
break; |
|
243 |
case "T": |
|
244 |
setFilerVisibility([ |
|
245 |
false, |
|
246 |
false, |
|
247 |
false, |
|
248 |
false, |
|
249 |
false, |
|
250 |
false, |
|
251 |
false, |
|
252 |
false, |
|
253 |
false, |
|
254 |
false, |
|
255 |
false, |
|
256 |
false, |
|
257 |
false |
|
258 |
]); |
|
259 |
break; |
|
260 |
default: |
|
261 |
setFilerVisibility([ |
|
262 |
false, |
|
263 |
false, |
|
264 |
false, |
|
265 |
false, |
|
266 |
false, |
|
267 |
false, |
|
268 |
false, |
|
269 |
false, |
|
270 |
false, |
|
271 |
false, |
|
272 |
false, |
|
273 |
false, |
|
274 |
false |
|
275 |
]); |
|
276 |
break; |
|
277 |
} |
|
278 |
} |
|
279 |
|
|
280 |
function setFilerVisibility(visibility) { |
|
281 |
const id = [ |
|
282 |
"filter-case", |
|
283 |
"filter-countability", |
|
284 |
"filter-gender", |
|
285 |
"filter-shape", |
|
286 |
"filter-grade", |
|
287 |
"filter-type", |
|
288 |
"filter-mood", |
|
289 |
"filter-irregular", |
|
290 |
"filter-person", |
|
291 |
"filter-time", |
|
292 |
"filter-vid", |
|
293 |
"filter-v-type", |
|
294 |
"filter-k-type" |
|
295 |
]; |
|
296 |
|
|
297 |
for(let i = 0; i < id.length && i < visibility.length; i++){ |
|
298 |
document.getElementById(id[i]).style.display = visibility[i] === true ? "" : "none"; |
|
299 |
document.getElementById(id[i].replace("filter-", "")).value = ""; |
|
300 |
} |
|
301 |
} |
application/view/js-scripts/paging.js | ||
---|---|---|
1 |
function checkValidItemsPerPage(){ |
|
2 |
var visibleItemCount = document.getElementById("itemsPerPage"); |
|
3 |
if(!isNaN(visibleItemCount.value) && visibleItemCount.value % 1 === 0 && parseInt(visibleItemCount.value) >= 1 && parseInt(visibleItemCount.value) <= 500){ |
|
4 |
return true; |
|
5 |
}else{ |
|
6 |
alert("Zadaný počet není validní, zkuste to znovu.\nPlatný rozsah: 1 - 500 položek na stránku."); |
|
7 |
visibleItemCount.value = itemPerPage; |
Také k dispozici: Unified diff
Enhancement #8756: Refactoring, klient-side