franta-hg@3
|
1 |
/** ID html prvků */
|
franta-hg@84
|
2 |
var vstupniPole = 'vstupniPole';
|
franta-hg@84
|
3 |
var vystupniPole = 'vystupniPole';
|
franta-hg@84
|
4 |
var napovedniPole = 'napovedniPole';
|
franta-hg@84
|
5 |
var stavovePole = 'stavovePole';
|
franta-hg@3
|
6 |
|
franta-hg@3
|
7 |
|
franta-hg@2
|
8 |
/**
|
franta-hg@2
|
9 |
* Aby to fungovalo i v MSIE 6.
|
franta-hg@2
|
10 |
* @return AJAXový objekt.
|
franta-hg@2
|
11 |
*/
|
franta-hg@2
|
12 |
function getXmlHttpRequestObject() {
|
franta-hg@80
|
13 |
if (window.XMLHttpRequest) {
|
franta-hg@80
|
14 |
return new XMLHttpRequest();
|
franta-hg@80
|
15 |
} else if(window.ActiveXObject) {
|
franta-hg@80
|
16 |
return new ActiveXObject("Microsoft.XMLHTTP");
|
franta-hg@80
|
17 |
} else {
|
franta-hg@80
|
18 |
alert(document.getElementById('lokalizace').nepodporovany.value);
|
franta-hg@80
|
19 |
return null;
|
franta-hg@80
|
20 |
}
|
franta-hg@2
|
21 |
}
|
franta-hg@2
|
22 |
|
franta-hg@22
|
23 |
|
franta-hg@2
|
24 |
/** Náš AJAXový objekt. */
|
franta-hg@2
|
25 |
var ajax = getXmlHttpRequestObject();
|
franta-hg@2
|
26 |
|
franta-hg@22
|
27 |
|
franta-hg@2
|
28 |
/**
|
franta-hg@3
|
29 |
* Vrací vstup od uživatele.
|
franta-hg@3
|
30 |
* @return SQL příkaz zadaný uživatelem.
|
franta-hg@3
|
31 |
**/
|
franta-hg@3
|
32 |
function getSQL() {
|
franta-hg@80
|
33 |
return document.getElementById('aplikace').vstupniPole.value;
|
franta-hg@3
|
34 |
}
|
franta-hg@3
|
35 |
|
franta-hg@22
|
36 |
|
franta-hg@3
|
37 |
/**
|
franta-hg@2
|
38 |
* Zobrazí text na požadovaném místě.
|
franta-hg@22
|
39 |
* @param text text k zobrazení. V případě formulářů prostý text, v ostatních případech HTML text.
|
franta-hg@22
|
40 |
* @param kde id prvku, do kterého se má text vypsat.
|
franta-hg@2
|
41 |
**/
|
franta-hg@2
|
42 |
function zobraz(text, kde) {
|
franta-hg@80
|
43 |
if (kde == vstupniPole) {
|
franta-hg@80
|
44 |
document.getElementById('aplikace').vstupniPole.value = vratEntity(text);
|
franta-hg@80
|
45 |
} else if (kde == stavovePole) {
|
franta-hg@80
|
46 |
document.getElementById('aplikace').stavovePole.value = vratEntity(text);
|
franta-hg@80
|
47 |
} else {
|
franta-hg@80
|
48 |
document.getElementById(kde).innerHTML = text + '<p> <!-- Šťastné hackování ;-) --></p>';
|
franta-hg@80
|
49 |
}
|
franta-hg@2
|
50 |
}
|
franta-hg@2
|
51 |
|
franta-hg@2
|
52 |
|
franta-hg@2
|
53 |
/** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */
|
franta-hg@5
|
54 |
function ajaxVykonatSQL() {
|
franta-hg@80
|
55 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@80
|
56 |
zobraz(document.getElementById('lokalizace').probihaSQL.value, stavovePole);
|
franta-hg@80
|
57 |
ajax.open("POST", 'ajax.jspx?akce=vykonat&sql=' + encodeURIComponent(getSQL()), true);
|
franta-hg@80
|
58 |
ajax.onreadystatechange = function() {
|
franta-hg@80
|
59 |
if (ajax.readyState == 4) {
|
franta-hg@80
|
60 |
zobraz(ajax.responseText, vystupniPole);
|
franta-hg@80
|
61 |
zobraz('', stavovePole);
|
franta-hg@80
|
62 |
}
|
franta-hg@80
|
63 |
};
|
franta-hg@80
|
64 |
ajax.send(null);
|
franta-hg@80
|
65 |
}
|
franta-hg@80
|
66 |
ulozURL();
|
franta-hg@2
|
67 |
}
|
franta-hg@5
|
68 |
|
franta-hg@5
|
69 |
|
franta-hg@5
|
70 |
/** Jednoduchá AJAXová funkce, načte obsah souboru a zobrazí ho ve výstupním okně. */
|
franta-hg@5
|
71 |
function ajaxZobrazitHistorii() {
|
franta-hg@80
|
72 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@80
|
73 |
zobraz(document.getElementById('lokalizace').probihaHistorie.value, stavovePole);
|
franta-hg@80
|
74 |
ajax.open("POST", 'ajax.jspx?akce=historie', true);
|
franta-hg@80
|
75 |
ajax.onreadystatechange = function() {
|
franta-hg@80
|
76 |
if (ajax.readyState == 4) {
|
franta-hg@80
|
77 |
zobraz(ajax.responseText, vystupniPole);
|
franta-hg@80
|
78 |
zobraz('', stavovePole);
|
franta-hg@80
|
79 |
aktivujHistorii();
|
franta-hg@80
|
80 |
}
|
franta-hg@80
|
81 |
};
|
franta-hg@70
|
82 |
ajax.send(null);
|
franta-hg@80
|
83 |
}
|
franta-hg@5
|
84 |
}
|
franta-hg@38
|
85 |
|
franta-hg@38
|
86 |
var pruvodceAktualniId = 0;
|
franta-hg@39
|
87 |
var urlOdkaz = new Array();
|
franta-hg@39
|
88 |
urlOdkaz['pruvodce'] = null;
|
franta-hg@38
|
89 |
|
franta-hg@38
|
90 |
function ajaxPruvodcePredchozi() {
|
franta-hg@80
|
91 |
ajaxPruvodceNaviguj('predchozi', pruvodceAktualniId, null);
|
franta-hg@38
|
92 |
}
|
franta-hg@38
|
93 |
|
franta-hg@38
|
94 |
function ajaxPruvodceZpet() {
|
franta-hg@80
|
95 |
try {
|
franta-hg@80
|
96 |
history.back();
|
franta-hg@80
|
97 |
//window.back();
|
franta-hg@80
|
98 |
nactiURL();
|
franta-hg@80
|
99 |
} catch (e) {
|
franta-hg@80
|
100 |
alert(e);
|
franta-hg@80
|
101 |
// není historie
|
franta-hg@80
|
102 |
}
|
franta-hg@38
|
103 |
}
|
franta-hg@38
|
104 |
|
franta-hg@38
|
105 |
function ajaxPruvodceVpred() {
|
franta-hg@80
|
106 |
try {
|
franta-hg@80
|
107 |
history.forward();
|
franta-hg@80
|
108 |
//window.forward();
|
franta-hg@80
|
109 |
nactiURL();
|
franta-hg@80
|
110 |
} catch (e) {
|
franta-hg@80
|
111 |
alert(e);
|
franta-hg@80
|
112 |
// není historie
|
franta-hg@80
|
113 |
}
|
franta-hg@38
|
114 |
}
|
franta-hg@38
|
115 |
|
franta-hg@38
|
116 |
function ajaxPruvodceNasledujici() {
|
franta-hg@80
|
117 |
ajaxPruvodceNaviguj('nasledujici', pruvodceAktualniId, null);
|
franta-hg@38
|
118 |
}
|
franta-hg@38
|
119 |
|
franta-hg@38
|
120 |
function ajaxPruvodceKod(kod) {
|
franta-hg@80
|
121 |
ajaxPruvodceNaviguj('podleKodu', 0, kod);
|
franta-hg@38
|
122 |
}
|
franta-hg@38
|
123 |
|
franta-hg@38
|
124 |
function ajaxPruvodceId(id) {
|
franta-hg@80
|
125 |
ajaxPruvodceNaviguj('podleId', id, null);
|
franta-hg@38
|
126 |
|
franta-hg@38
|
127 |
}
|
franta-hg@38
|
128 |
|
franta-hg@50
|
129 |
function ajaxPruvodceNaviguj(akcePruvodce, id, kod) {
|
franta-hg@80
|
130 |
if (ajax.readyState == 4 || ajax.readyState == 0) {
|
franta-hg@80
|
131 |
ajax.open("POST", 'ajax.jspx?akce=napoveda&pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod), true);
|
franta-hg@80
|
132 |
ajax.onreadystatechange = function() {
|
franta-hg@80
|
133 |
if (ajax.readyState == 4) {
|
franta-hg@80
|
134 |
zobraz(ajax.responseText, napovedniPole);
|
franta-hg@80
|
135 |
/** Uložíme si do paměti ID aktuální stránky */
|
franta-hg@80
|
136 |
if (document.getElementById('pruvodceData')) {
|
franta-hg@80
|
137 |
pruvodceAktualniId = document.getElementById('pruvodceData').id.value;
|
franta-hg@80
|
138 |
} else {
|
franta-hg@80
|
139 |
pruvodceAktualniId = 0;
|
franta-hg@80
|
140 |
}
|
franta-hg@80
|
141 |
/** Změníme URL v prohlížeči */
|
franta-hg@80
|
142 |
urlOdkaz['pruvodce'] = 'pruvodce=' + encodeURIComponent(pruvodceAktualniId);
|
franta-hg@80
|
143 |
ulozURL();
|
franta-hg@80
|
144 |
sestavStromy();
|
franta-hg@80
|
145 |
aktivujPruvodce();
|
franta-hg@80
|
146 |
}
|
franta-hg@80
|
147 |
};
|
franta-hg@70
|
148 |
ajax.send(null);
|
franta-hg@80
|
149 |
}
|
franta-hg@38
|
150 |
}
|
franta-hg@39
|
151 |
|
franta-hg@39
|
152 |
/**
|
franta-hg@40
|
153 |
* Parametry si ukládáme za # do URL (window.location.hash)
|
franta-hg@40
|
154 |
* Můžeme měnit URL, aniž by prohlížeč obnovoval stránku.
|
franta-hg@40
|
155 |
* Uživatel si může URL zkopírovat a obnovit si příště stav aplikace.
|
franta-hg@39
|
156 |
* @param parametr jméno parametru, který hledáme
|
franta-hg@39
|
157 |
* @return hodnota parametr
|
franta-hg@39
|
158 |
*/
|
franta-hg@39
|
159 |
function getParametr(parametr) {
|
franta-hg@80
|
160 |
parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
franta-hg@80
|
161 |
//var regexS = "[\\?&]"+parametr+"=([^&#]*)";
|
franta-hg@80
|
162 |
var regexS = "[\\#&]"+parametr+"=([^&]*)";
|
franta-hg@80
|
163 |
var regex = new RegExp( regexS );
|
franta-hg@80
|
164 |
var results = regex.exec(window.location.hash);
|
franta-hg@80
|
165 |
if ( results == null ) {
|
franta-hg@80
|
166 |
return "";
|
franta-hg@80
|
167 |
} else {
|
franta-hg@80
|
168 |
return decodeURIComponent(results[1]);
|
franta-hg@80
|
169 |
}
|
franta-hg@39
|
170 |
}
|
franta-hg@39
|
171 |
|
franta-hg@39
|
172 |
/**
|
franta-hg@39
|
173 |
* Uloží parametry (jako je SQL příkaz a stránka průvodce) do URL (za #),
|
franta-hg@39
|
174 |
* aby si uživatel mohl URL zkopírovat a příště si obnovit stav aplikace.
|
franta-hg@39
|
175 |
*/
|
franta-hg@39
|
176 |
function ulozURL() {
|
franta-hg@80
|
177 |
if (urlOdkaz['pruvodce']) {
|
franta-hg@80
|
178 |
window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL());
|
franta-hg@80
|
179 |
} else {
|
franta-hg@80
|
180 |
window.location.hash = 'sql=' + encodeURIComponent(getSQL());
|
franta-hg@80
|
181 |
}
|
franta-hg@39
|
182 |
}
|
franta-hg@39
|
183 |
/**
|
franta-hg@39
|
184 |
* Načte uložený stav aplikace z URL (SQL příkaz, průvodce).
|
franta-hg@39
|
185 |
*/
|
franta-hg@42
|
186 |
function nactiURL() {
|
franta-hg@80
|
187 |
/** Načteme uživatelův SQL příkaz z URL do vstupního pole */
|
franta-hg@80
|
188 |
if (getParametr('sql')) {
|
franta-hg@80
|
189 |
zobraz(getParametr('sql'), vstupniPole);
|
franta-hg@80
|
190 |
}
|
franta-hg@80
|
191 |
|
franta-hg@80
|
192 |
/** Načteme pozici v nápovědě */
|
franta-hg@80
|
193 |
if (getParametr('pruvodce')) {
|
franta-hg@80
|
194 |
ajaxPruvodceId(getParametr('pruvodce'));
|
franta-hg@80
|
195 |
} else {
|
franta-hg@80
|
196 |
ajaxPruvodceKod('vitejte');
|
franta-hg@80
|
197 |
}
|
franta-hg@39
|
198 |
}
|
franta-hg@39
|
199 |
|
franta-hg@39
|
200 |
window.onload = function() {
|
franta-hg@80
|
201 |
nactiURL();
|
franta-hg@80
|
202 |
document.getElementById("zahlavi").addEventListener('click', function () {
|
franta-hg@80
|
203 |
ajaxPruvodceKod('vitejte');
|
franta-hg@80
|
204 |
}, false);
|
franta-hg@60
|
205 |
}
|
franta-hg@60
|
206 |
|
franta-hg@60
|
207 |
/**
|
franta-hg@60
|
208 |
* Přidá <pre> elementům v průvodci akci onclick,
|
franta-hg@60
|
209 |
* která se postará o načtení obsahu daného elementu do vstupního pole,
|
franta-hg@60
|
210 |
* aby uživatel tento kód nemusel opisovat.
|
franta-hg@61
|
211 |
*
|
franta-hg@61
|
212 |
* Zpracuje odkazy na průvodce:
|
franta-hg@61
|
213 |
* převede href="@klíč" na správný javascriptový odkaz.
|
franta-hg@60
|
214 |
*/
|
franta-hg@60
|
215 |
function aktivujPruvodce() {
|
franta-hg@80
|
216 |
/** Ukázky SQL kódu */
|
franta-hg@80
|
217 |
elementy = document.getElementsByTagName("pre");
|
franta-hg@80
|
218 |
for (var i = 0; i < elementy.length; i++) {
|
franta-hg@80
|
219 |
if (elementy[i].parentNode.id == napovedniPole) {
|
franta-hg@80
|
220 |
elementy[i].title = document.getElementById('lokalizace').klikniProNacteniPrikladu.value;
|
franta-hg@80
|
221 |
elementy[i].onclick = function() {
|
franta-hg@80
|
222 |
zobraz(this.innerHTML, 'vstupniPole');
|
franta-hg@80
|
223 |
return true;
|
franta-hg@80
|
224 |
};
|
franta-hg@80
|
225 |
}
|
franta-hg@70
|
226 |
}
|
franta-hg@61
|
227 |
|
franta-hg@80
|
228 |
/** Aktivace interních odkazů na průvodce */
|
franta-hg@80
|
229 |
elementy = document.getElementsByTagName("a");
|
franta-hg@80
|
230 |
for (var j = 0; j < elementy.length; j++) {
|
franta-hg@80
|
231 |
var odkaz = elementy[j].getAttribute("href");
|
franta-hg@80
|
232 |
if (odkaz.substring(0, 1) == '@') {
|
franta-hg@80
|
233 |
elementy[j].href = "javascript:ajaxPruvodceKod('" + odkaz.substring(1, odkaz.length) + "');";
|
franta-hg@80
|
234 |
}
|
franta-hg@70
|
235 |
}
|
franta-hg@60
|
236 |
}
|
franta-hg@60
|
237 |
|
franta-hg@60
|
238 |
/**
|
franta-hg@64
|
239 |
* Přidá <td> elementům v historii akci onclick,
|
franta-hg@64
|
240 |
* která se postará o načtení obsahu daného elementu do vstupního pole,
|
franta-hg@64
|
241 |
* aby uživatel tento kód nemusel opisovat.
|
franta-hg@64
|
242 |
*/
|
franta-hg@64
|
243 |
function aktivujHistorii() {
|
franta-hg@80
|
244 |
radky = document.getElementsByTagName("tr");
|
franta-hg@80
|
245 |
for (var i = 1; i < radky.length; i++) {
|
franta-hg@80
|
246 |
if (radky[i].parentNode.parentNode.parentNode.id == vystupniPole) {
|
franta-hg@80
|
247 |
radky[i].childNodes[1].title = document.getElementById('lokalizace').klikniProNacteniHistorie.value;
|
franta-hg@80
|
248 |
radky[i].childNodes[1].style.cursor = 'pointer';
|
franta-hg@80
|
249 |
radky[i].childNodes[1].onclick = function() {
|
franta-hg@80
|
250 |
zobraz(this.innerHTML, 'vstupniPole');
|
franta-hg@80
|
251 |
return true;
|
franta-hg@80
|
252 |
};
|
franta-hg@80
|
253 |
}
|
franta-hg@70
|
254 |
}
|
franta-hg@64
|
255 |
}
|
franta-hg@64
|
256 |
|
franta-hg@64
|
257 |
/**
|
franta-hg@60
|
258 |
* Převede HTML entity zpět na znaky,
|
franta-hg@60
|
259 |
* aby se správně zobrazily ve vstupním nebo stavovém poli.
|
franta-hg@60
|
260 |
*/
|
franta-hg@60
|
261 |
function vratEntity (text) {
|
franta-hg@80
|
262 |
var vysledek = text;
|
franta-hg@81
|
263 |
vysledek = vysledek.replace(new RegExp('<', 'g'), '<');
|
franta-hg@81
|
264 |
vysledek = vysledek.replace(new RegExp('>', 'g'), '>');
|
franta-hg@81
|
265 |
vysledek = vysledek.replace(new RegExp('&', 'g'), '&');
|
franta-hg@81
|
266 |
vysledek = vysledek.replace(new RegExp(' ', 'g'), ' ');
|
franta-hg@81
|
267 |
vysledek = vysledek.replace(new RegExp(' ', 'g'), ' ');
|
franta-hg@80
|
268 |
return vysledek;
|
franta-hg@60
|
269 |
}
|
franta-hg@72
|
270 |
|
franta-hg@72
|
271 |
/**
|
franta-hg@72
|
272 |
* Načte dynamicky soubor se skriptem.
|
franta-hg@72
|
273 |
* url = název souboru.js
|
franta-hg@72
|
274 |
*/
|
franta-hg@72
|
275 |
function nactiJavaScript (url) {
|
franta-hg@80
|
276 |
var element = document.createElement("script");
|
franta-hg@80
|
277 |
element.src = url;
|
franta-hg@80
|
278 |
element.type = "text/javascript";
|
franta-hg@80
|
279 |
document.getElementsByTagName("head")[0].appendChild(element);
|
franta-hg@72
|
280 |
}
|
franta-hg@80
|
281 |
|