Changeset 39:47551a506850

Show
Ignore:
Timestamp:
06/02/09 02:47:47 (15 years ago)
Author:
František Kučera <franta-hg@…>
Branch:
default
Message:

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.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • java/sql-vyuka/web/hlavni.js

    r38 r39  
    6464        ajax.send(null); 
    6565    } 
     66    ulozURL(); 
    6667} 
    6768 
     
    8384 
    8485var pruvodceAktualniId = 0; 
     86var urlOdkaz = new Array(); 
     87urlOdkaz['pruvodce'] = null; 
    8588 
    8689function ajaxPruvodcePredchozi() { 
     
    117120            if (ajax.readyState == 4) { 
    118121                zobraz(ajax.responseText, napovedniPole); 
     122                /** Uložíme si do paměti ID aktuální stránky */ 
    119123                if (document.pruvodceData) { 
    120124                    pruvodceAktualniId = document.pruvodceData.id.value 
     
    122126                    pruvodceAktualniId = 0; 
    123127                } 
     128                /** Změníme URL v prohlížeči */ 
     129                urlOdkaz['pruvodce']  = 'pruvodce=' + encodeURIComponent(akcePruvodce) + '&idPruvodce=' + encodeURIComponent(id) + '&kodPruvodce=' + encodeURIComponent(kod); 
     130                ulozURL(); 
    124131            } 
    125132        }; 
    126133        ajax.send(null); 
    127134    } 
    128 // TODO: změnit URL 
    129135} 
     136 
     137/** 
     138 * @param parametr jméno parametru, který hledáme 
     139 * @return hodnota parametr 
     140 */ 
     141function getParametr(parametr) { 
     142    parametr = parametr.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
     143    //var regexS = "[\\?&]"+parametr+"=([^&#]*)"; 
     144    var regexS = "[\\#&]"+parametr+"=([^&#]*)"; 
     145    var regex = new RegExp( regexS ); 
     146    var results = regex.exec(window.location.hash); 
     147    if( results == null ) 
     148        return ""; 
     149    else 
     150        return decodeURIComponent(results[1]); 
     151} 
     152 
     153/** 
     154 * Uloží parametry (jako je SQL příkaz a stránka průvodce) do URL (za #), 
     155 * aby si uživatel mohl URL zkopírovat a příště si obnovit stav aplikace. 
     156 */ 
     157function ulozURL() { 
     158    if (urlOdkaz['pruvodce']) { 
     159        window.location.hash = urlOdkaz['pruvodce'] + '&sql=' + encodeURIComponent(getSQL()); 
     160    } else { 
     161        window.location.hash = 'sql=' + encodeURIComponent(getSQL()); 
     162    } 
     163} 
     164/** 
     165 * Načte uložený stav aplikace z URL (SQL příkaz, průvodce). 
     166 */ 
     167function nactiURL() { 
     168    if (getParametr('sql')) { 
     169        zobraz(getParametr('sql'), vstupniPole); 
     170    } 
     171} 
     172 
     173window.onload = function() { 
     174    nactiURL(); 
     175}