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.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 02 Jun 2009 02:47:47 +0200
changeset 3947551a506850
parent 38 0a865a665698
child 40 cc77526f46cf
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.
java/sql-vyuka/web/hlavni.js
     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