# HG changeset patch # User František Kučera # Date 1243903667 -7200 # Node ID 47551a5068509cf6f2c8a8ae31d68cdaded762e7 # Parent 0a865a66569880dc4ef22ef9d09e3bbc15220b60 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. diff -r 0a865a665698 -r 47551a506850 java/sql-vyuka/web/hlavni.js --- a/java/sql-vyuka/web/hlavni.js Tue Jun 02 01:36:17 2009 +0200 +++ b/java/sql-vyuka/web/hlavni.js Tue Jun 02 02:47:47 2009 +0200 @@ -63,6 +63,7 @@ }; ajax.send(null); } + ulozURL(); } @@ -82,6 +83,8 @@ } var pruvodceAktualniId = 0; +var urlOdkaz = new Array(); +urlOdkaz['pruvodce'] = null; function ajaxPruvodcePredchozi() { ajaxPruvodceNaviguj('predchozi', pruvodceAktualniId, null); @@ -116,14 +119,57 @@ ajax.onreadystatechange = function() { if (ajax.readyState == 4) { zobraz(ajax.responseText, napovedniPole); + /** Uložíme si do paměti ID aktuální stránky */ if (document.pruvodceData) { pruvodceAktualniId = document.pruvodceData.id.value } else { pruvodceAktualniId = 0; } + /** Změníme URL v prohlížeči */ + urlOdkaz['pruvodce'] = 'pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod); + ulozURL(); } }; ajax.send(null); } -// TODO: změnit URL } + +/** + * @param parametr jméno parametru, který hledáme + * @return hodnota parametr + */ +function getParametr(parametr) { + parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + //var regexS = "[\\?&]"+parametr+"=([^&#]*)"; + var regexS = "[\\#&]"+parametr+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec(window.location.hash); + if( results == null ) + return ""; + else + return decodeURIComponent(results[1]); +} + +/** + * Uloží parametry (jako je SQL příkaz a stránka průvodce) do URL (za #), + * aby si uživatel mohl URL zkopírovat a příště si obnovit stav aplikace. + */ +function ulozURL() { + if (urlOdkaz['pruvodce']) { + window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL()); + } else { + window.location.hash = 'sql=' + encodeURIComponent(getSQL()); + } +} +/** + * Načte uložený stav aplikace z URL (SQL příkaz, průvodce). + */ +function nactiURL() { + if (getParametr('sql')) { + zobraz(getParametr('sql'), vstupniPole); + } +} + +window.onload = function() { + nactiURL(); +} \ No newline at end of file