Do URL (za #) ukládáme aktuální SQL příkaz → uživatel si může zkopírovat URL a obnovit si jinde stav aplikace.
Nefunguje pro prohlížeči Konqueror.
1.1 --- a/java/sql-vyuka/web/hlavni.js Tue Jun 02 01:36:17 2009 +0200
1.2 +++ b/java/sql-vyuka/web/hlavni.js Tue Jun 02 02:47:47 2009 +0200
1.3 @@ -63,6 +63,7 @@
1.4 };
1.5 ajax.send(null);
1.6 }
1.7 + ulozURL();
1.8 }
1.9
1.10
1.11 @@ -82,6 +83,8 @@
1.12 }
1.13
1.14 var pruvodceAktualniId = 0;
1.15 +var urlOdkaz = new Array();
1.16 +urlOdkaz['pruvodce'] = null;
1.17
1.18 function ajaxPruvodcePredchozi() {
1.19 ajaxPruvodceNaviguj('predchozi', pruvodceAktualniId, null);
1.20 @@ -116,14 +119,57 @@
1.21 ajax.onreadystatechange = function() {
1.22 if (ajax.readyState == 4) {
1.23 zobraz(ajax.responseText, napovedniPole);
1.24 + /** Uložíme si do paměti ID aktuální stránky */
1.25 if (document.pruvodceData) {
1.26 pruvodceAktualniId = document.pruvodceData.id.value
1.27 } else {
1.28 pruvodceAktualniId = 0;
1.29 }
1.30 + /** Změníme URL v prohlížeči */
1.31 + urlOdkaz['pruvodce'] = 'pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod);
1.32 + ulozURL();
1.33 }
1.34 };
1.35 ajax.send(null);
1.36 }
1.37 -// TODO: změnit URL
1.38 }
1.39 +
1.40 +/**
1.41 + * @param parametr jméno parametru, který hledáme
1.42 + * @return hodnota parametr
1.43 + */
1.44 +function getParametr(parametr) {
1.45 + parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
1.46 + //var regexS = "[\\?&]"+parametr+"=([^&#]*)";
1.47 + var regexS = "[\\#&]"+parametr+"=([^&#]*)";
1.48 + var regex = new RegExp( regexS );
1.49 + var results = regex.exec(window.location.hash);
1.50 + if( results == null )
1.51 + return "";
1.52 + else
1.53 + return decodeURIComponent(results[1]);
1.54 +}
1.55 +
1.56 +/**
1.57 + * Uloží parametry (jako je SQL příkaz a stránka průvodce) do URL (za #),
1.58 + * aby si uživatel mohl URL zkopírovat a příště si obnovit stav aplikace.
1.59 + */
1.60 +function ulozURL() {
1.61 + if (urlOdkaz['pruvodce']) {
1.62 + window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL());
1.63 + } else {
1.64 + window.location.hash = 'sql=' + encodeURIComponent(getSQL());
1.65 + }
1.66 +}
1.67 +/**
1.68 + * Načte uložený stav aplikace z URL (SQL příkaz, průvodce).
1.69 + */
1.70 +function nactiURL() {
1.71 + if (getParametr('sql')) {
1.72 + zobraz(getParametr('sql'), vstupniPole);
1.73 + }
1.74 +}
1.75 +
1.76 +window.onload = function() {
1.77 + nactiURL();
1.78 +}
1.79 \ No newline at end of file