Nápady na rozšíření : phpRS Fórum
Napadlo vás zajímavé rozšíření? Myslíte si, že phpRS systému chybí nějaká důležitá funkce? Pokud ano, tak neváhejte a napište nám!
phpRS - redakční a informační systém
Jít na stránku:  12Další
Aktuální stránka:1 z 2
Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-08-20, 01:17

Jelikož jsem si nedávno několikrát po sobě včas neuložil svoji práci na jednom webu (a pak jsem pochopitelně nadával jako špaček, když mi to zmizelo před očima), zabudoval jsem si do administrace javascriptové stopky, abych měl přehled, kolik času zbývá.
Návod jsem sepsal do tohohle článku.

Má to jednu chybku, na kterou nemůžu přijít. V IE se mi administrace zobrazí až po reloadu (F5), a pak už ale vše funguje OK. Moc se v javascriptu nevyznám a nepřišel jsme na to proč tomu tak je.

Je to jen taková blbinka, ale mě přijde užitečná. Ty stopky jsou z netu, nedělal jsem je já. Kdyžtak to můžete otestovat a pokud na tu chybu přijdete, dejte mi vědět.

Myslím, že by měla být nějaká možnost, jak nepřijít o svoji práci, když se člověk zapomene přihlásit. Ale netuším, jak moc by tohle bylo obtížné. Ale zatím to prostě není, tak tu jsou alespoň tyhle stopky. Hezký den všem, třeba to někdo využije.


Hepbegclub | Čáslavsko | MN Čáslav

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-08-20, 09:52

načítanie externého JavaScriptu je v tvojom kóde až za samotným volaním inicializície funkciou CutdownTime() a to je IMHO problém. Skús to prehodiť, prípadne hoď to prlinkovanie externého JS súboru do <head>
echo"
   <center><div style=\"font-family:verdana;font-size:12px;margin-top:2px;\">
<script language=\"JavaScript\" src=\"script/cutdown.js\"></script>
<script language=\"JavaScript\">
TargetDate = \"";
echo CutdownTime();
echo "\";
</script>

</div></center>

";

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-08-20, 13:26

Tohle nevím jestli půjde, jelikož myslím, že inicializace je tenhle řádek
<script language=\"JavaScript\" src=\"script/cutdown.js\"></script>
ta druhá část je nastavení toho času, do kterého se odečítá... a ta musí být nastavena před tím, nežli se stopky rozběhnou...
ale vyzkouším to

Hepbegclub | Čáslavsko | MN Čáslav

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-08-21, 22:09

Tak jsem použil trochu jiný, jednodušší javascript a výsledkem je ještě podivnější chyba: Výše popsané nežádoucí chování v IE nyní je pouze, když se přihlásí čtenář, když se přihlásí admin, tak to funguje OK. To je IMHO už trochu nesmyslná chyba - čím se to liší, jen tou tabulkou, že u autora je ta tabulka menší...
Pokud je tu nějaký expert na javascript, fakt bych to velmi uvítal. Jdu testovat ještě dál.

Jo, další věc, kterou nechápu. Když autorovi povolím hodně možností (a tedy ta modrá tabulka v administraci je větší) tak to funguje... :-D
No,zatím se zdá, že to byl nějaký problém na lokálním serveru, po přenesení na web to funguje i v IE a Opeře. Ale použil jsme nakonec trochu jiný skript, takže ten článek v příštím týdnu doplním.

Hepbegclub | Čáslavsko | MN Čáslav



Celkem upraveno 2×. Poslední úprava Kryšpín v 22.08.2007 01:25.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-08-21, 23:20

U.F.O. Nie je to viazané na server? Vyzerá to skôr na chybu IIS pri posielaní HTTP hlavičiek. Skúšal si tú chybu nasimulovať na rovnajek distribúcii phpRS ale na inom serveri? Čumel som do toho prvého JS kódu a žiadnu chybu som tam nenašiel.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Wojt@ (IP adresa zaznamenána)
Datum: 2007-08-24, 10:09

Velmi dobrá úprava. Jen jsem si zabudoval do loginproužku nahoře.

PS: jde nějak upravit doba jednoho přihlášení?

Wojt@: | [http://sedma-ce.ic.cz] | [http://sedma-ce.ic.cz/blog] |



Celkem upraveno 1×. Poslední úprava Wojt@ v 24.08.2007 10:21.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-08-24, 13:10

> jde nějak upravit doba jednoho přihlášení?

samozrejme - config.php

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Wojt@ (IP adresa zaznamenána)
Datum: 2007-08-24, 13:50

já myslel že to je doba přihlášení registrovaného čtenáře...

Wojt@: | [http://sedma-ce.ic.cz] | [http://sedma-ce.ic.cz/blog] |

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-08-24, 16:49

nene, to má za úkol dán adminovi (redaktorovi, autorovi) najevo, kolik mu ještě zbývá do doby, nežli se celá ta legrace (==administrace) automaticky odhlásí. takže to tu dobu bere z configu, kde je nastavená napevno. Nicnémě i tak to má význam, pokud například vidím, že se za 10 minut vše odhlásí, mám dost času si rozdělanou práci uložit.

Hepbegclub | Čáslavsko | MN Čáslav

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: JiHo (IP adresa zaznamenána)
Datum: 2007-10-17, 21:44

Docela mi ty stopky blbnou - fungují perfektně při prvním přihlášení (i bez reloadu). Pokud se ale odhlásím a za chvíli přihlásím znovu, obvykle pokračují v počítání tam, kde přestaly (neinicializuje se počáteční stav čítač). Netušíte jak to?

=== JiHo === WEB: Jitřní země ===

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-10-18, 23:45

No, nakonec jsem změnil ten skript, který mi blbnul za jiný, simplexnější. Už si nevzpomínám, co přesně mi na tom vadilo, ale zkusím do toho článku výhledově dopsat svůj poslední postup. Protože to, co uvádíš mi to nedělá. Normálně mi to po každém příhlášení počítá hezky od začátku.

Hepbegclub | Čáslavsko | MN Čáslav

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: JiHo (IP adresa zaznamenána)
Datum: 2007-10-19, 07:20

Díky, začínám mít podezření, že problém je v nekorektně ošetřené funkci CutdownTime(), protože v rs_guard může ze určitých podmínek zůstat víc záznamů stejného uživatele (kdo). Stačí, když se někdo neodhlásí (ukončí prohlížeč) a pak se přihlašuje znovu, případně ješte z jiného PC. Chtělo by to kontrolovat i pole password v této tabulce (nepátral jsem jak je generovné, ale heslo uživatele to není), protože ty záznamy se liší právě v něm.

=== JiHo === WEB: Jitřní země ===

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-10-19, 09:02

jo, to máš možná pravdu člověče. Kouknu se na to, možná by stačilo, vybírat z databáze poslední záznam o tom daném uživateli.... jo, asi budeš mít pravdu. Teď nemám kdy to zkoumat, ale podívám se na to a myslím, že máš asi pravdu... :-)

Hepbegclub | Čáslavsko | MN Čáslav

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-10-19, 09:48

V password bude asi session_key ktory by sa mohol porovnat s cookie... ALE naco to vobec robit ze? :) Naco sa hrabat v databaze? Ved pri vygenerovani stranky v admine vyratame cas platnosti jednoducho pripocitanim $GLOBALS['rsconfig']['platnost_auth'] k aktualnemu casu ;-)

Resp. pri odpocte v sekundach priamo nastavime vzdy hodnotu: $GLOBALS['rsconfig']['platnost_auth']



Celkem upraveno 1×. Poslední úprava pa3k v 19.10.2007 09:49.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-10-19, 09:57

v jednom systéme (nie phpRS) to mám takto:

v konfigu je definovany cas v sekundach pre auto logout ako konstanta:
define('WEB_AUTO_LOGOUT',       900);


do kodu sablony vypisem JavaScript ak je user nalogovany
if (isset($GLOBALS['session_data'])) {
                        echo '
                        <script language="JavaScript" type="text/javascript">
                            var timeLimitCounter = '.WEB_AUTO_LOGOUT.';
                            var opacity_state = 1;
                            var blinking = false;
                            var logout_url = "'.WEB_ROOT.'?logout";
                            timerControlTimeLimit = setInterval("controlTimeLimit()",1000);
                        </script>
                        ';
                    }


a nakoniec JavaScript:
/*
//      funkcia pre upozornenie pred automatickym odhlasenim
*/
function controlTimeLimit() {
    timeLimitCounter--;
    if (timeLimitCounter < 1) {
        window.location.href = logout_url;
    }
    if (timeLimitCounter < 300) {
        if (blinking == false) {
            blinking = setInterval("blinkElement('logout-timer',8,9)",600);
        }
        document.getElementById('logout-timer').style.display = 'inline';
        document.getElementById('logout-timer').innerHTML = ('<img id="warning-icon" src="layout/icons/msg-alert.gif"> &nbsp;za <b>'+timeLimitCounter+'</b> sekúnd Vás systém automaticky odhlási <a href="javascript:void()" onclick="javascript:document.location.reload(true)">STOP</a>');
    }
}

function setOpacity(element,value) {
	element.style.opacity = value/10;
	element.style.filter = 'alpha(opacity=' + value*10 + ')';
}

function blinkElement(elementName, op1, op2) {
    if ((opacity_state % 2) == 0) {
        setOpacity(document.getElementById(elementName),op1);
    } else {
        setOpacity(document.getElementById(elementName),op2);
    }
    opacity_state++;
}

if (timeLimitCounter < 300) {
ak pocitadlo dosiahne nizsiu hodnotu ako 300 sec, zacne blikat upozornenie, su v tom aj funkcie pre preblikavanie upozornenia cez CSS opacity. Myslim, ze jednoduchsie sa to spravit neda ;-)



Celkem upraveno 2×. Poslední úprava pa3k v 19.10.2007 10:38.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-10-19, 10:00

este som zabudol, v CSS je element s id logout-timer nastaveny aby sa nezobrazoval: display:none; zapne sa az pri starte odpocitavania.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2007-10-19, 10:17

Aha, podstatna vec - zabudol som, ze phpRS ma spravenu administraciu a jej session manager celkovo dost blbo, pretoze sa odhlasenie nepocita od casu poslednej aktivity, ale od prihlasenia. Brrrrr. Takze horeuvedeny kod berte len ako ukazku, ake by to mohlo byt jednoduche a cool, keby... ;) V phpRS je to spravené velmi divne, pretoze odhlasenie by malo nastat pri neaktivite a nie ked user pracuje, tak ako je to teraz. Samozrejme session manager v admine sa da prerobit aj v phpRS tak aby ratal cas od poslednej aktivity... niekde som to tak uz aj prerabal... no ten kod uz asi nenajdem a pisat sa mi to nechce. Takze ak ma niekto chut... ;) myslim, ze by takuto upravu uvitalo viac nas*atych userov, ktory vdaka tomu prisli o pracu ;-D


To odpocitavanie IMHO nema moc zmysel ak sa neda nijakym sposobom "zastavit", resp. zmysel ma, ale je to celkovo dost uchylne (sorry Jirko ;) ked jedina moznost ako pokracovat v praci je znova sa prihlasit.


Koniec monologu ;)



Celkem upraveno 1×. Poslední úprava pa3k v 19.10.2007 10:21.

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: JiHo (IP adresa zaznamenána)
Datum: 2007-10-19, 12:47

Prozatím jsem to vyřešil tak, že místo
$dotaz.="WHERE kdo=".$GLOBALS['Uzivatel']->Ukaz('id')."";
používám
$dotaz.="WHERE idg=".$GLOBALS['Uzivatel']->IdSession."";
protože idg identifikuje přímo session a nepoplete jej víc výskytů stejného uživatele v tabulce. Funguje to korektně dokonce i když mám jednu session v IE a druhou ve Firefoxu. :-)

Nepovedlo se mi najít, jak to udělat přes $GLOBALS['Uzivatel']->Ukaz('...'), ale zatím to funguje i takhle (než Jirka něco změní v phpRS). Vážně by to chtělo nějakou podrobnější dokumentaci k systému.

=== JiHo === WEB: Jitřní země ===

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: JiHo (IP adresa zaznamenána)
Datum: 2007-10-19, 13:11

pa3k napsal/a:
-------------------------------------------------------
> To odpocitavanie IMHO nema moc zmysel ak sa neda
> nijakym sposobom "zastavit", resp. zmysel ma, ale
> je to celkovo dost uchylne (sorry Jirko ;) ked
> jedina moznost ako pokracovat v praci je znova sa
> prihlasit.

No jedna "možnost" tu je, zvlášť s tímhle počítadlem. Když neukončím session a v druhém okně se znovu přihlásím, pokračuji v tom prvním okně v nové sesion a rozdělaná práce se mi neztratí. Ale kdybys náhodou tu úpravu phpRS na počítání času od poslední aktivity našel, určitě bych tím nepohrdl.

=== JiHo === WEB: Jitřní země ===

Re: Javascriptové stopky do administrace
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2007-10-19, 13:38

Ad JIHO
no, právě poté, co jsem si jednou natrvalo vymazal článek, na kterém jsme pracoval s přestávkami asi tři dny jsem si tohle vytvořil... alespoň se můžu kouknout a když už čas kvačí, tak to udělat, jak popisuješ.

Hepbegclub | Čáslavsko | MN Čáslav

Jít na stránku:  12Další
Aktuální stránka:1 z 2


Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.