Proponuję, aby przy komunikacie błędu "za długa sygnaturka" pisał zdanie:
Wpisana sygnaturka jest za długa - ma N znaków. Powinna być krótsza niż 256 znaków.
Zamiast:
Sygnaturka jest za długa. Prawidłowa długość to <=255 znaków
Co wy na to?
Proponuję, aby przy komunikacie błędu "za długa sygnaturka" pisał zdanie:
Wpisana sygnaturka jest za długa - ma N znaków. Powinna być krótsza niż 256 znaków.
Zamiast:
Sygnaturka jest za długa. Prawidłowa długość to <=255 znaków
Co wy na to?
za
chce Ci się zmienić źródełka? ;-)
Może by tak w JS dorobić pod sygnaturką "Pozostało N z 256 znaków" ?
jak na bramce eraomnix? good idea
OK. Zmiany biorę na siebie.
Mozesz przy okazji poprawic http://4programmers.net/coyote/bug.php?id=388 i http://4programmers.net/coyote/bug.php?id=386 ?
Jest tam rozwiazanie. Ja poki co nie mam dostepu do cvs.
Myślę, że mogę ;)
DOPISANE:
Zrobione: zarówno pokazuje podczas pisania (JavaScript; blokuje też klawisz zatwierdzenia przy zbyt długiej), jak i podczas wysyłania, gdyby ktoś miał wyłączone skrypty.
Bug #386 i #388 poprawione.
Wszystko już na CVS. Powinno być OK. Jak ktoś przetestuje (mi wszystko wydaje się działać poprawnie - tak na FF jak i IE, nie ma w tym wielkiej filozofii chyba), dać znać.
Przypomnę o temacie, bo zrealizowałem, wysłałem na CVS, minęły 3 miesiące (co do dnia), a wprowadzonych zmian jak nie było, tak nie ma.
hm, myślałem, że wrzucałem na ftp... ale kurczę - jest paru ludzi z dostępem do ftp - mogliby czasem pomóc...
hmm, a które to pliki? bo templates/, lang/ i include/* są uaktualnione
Opis zmiany z tamtego dnia jest ChangeLog na CVS:
10.02.2007 <[email protected]>
* include/parser.php: Bug #388: ochrona przed SQL Injection/XSS przez sql_escape, htmlspecialchars.
* include/ucp/ucp_main.php: Bug #386: ochrona przed XSS przez htmlspecialchars.
* install/install.php: w kwerendzie SQL argument AUTO_INCREMENT z "" zmieniono na DEFAULT.
* templates/NewAge/ucp_main.tpl: przy wpisywaniu sygnaturki JavaScript (jesli obslugiwana) pokazuje aktualna dlugosc.
* lang/pl/lang.php, account/account_edit.php, include/ucp/ucp_main.php, include/ucp/ucp_sig.php: komunikat o zbyt dlugiej sygnaturce uzupelniono o aktualna, wpisana dlugosc.
Wszystkie wymienione pliki na CVS i FTP są takie same.
w ucp_main.tpl jest taki kod w komentarzu:
//setTimeout("CheckSigLength();", 250);
ale nie sądzę, że timer to dobry pomysł - pewnie stąd komentarz. Lepiej skorzystać ze zdarzeń onkey*
Chodzi o to, że nie da się w OnKey - spędziłem wtedy na tym chyba ze 2 godziny, by dojść do wniosku, że OnKey nie zareaguje na przeciąganie tekstu z innych okien, wklejanie z menu myszy itp.
Jedynym działającym na wszystkich przeglądarkach rozwiązaniem, bez względu na to, jak wstawiany jest tekst, jest właśnie timer.
Rzeczywiście zmiany są, ale zakomentowane przez nav'a :/
Temat zamykam na razie - do czasu konsultacji z nav'em
Hm, chyba zakomentowałem tymczasowo jak robiłem podgląd stopki, coś się psuło gdy współdziałały oba skrypty, musiałem zapomnieć odkomentować [wstyd]
A też się zastanawiałem, czemu wcięło tą opcję.
A czy zdarzenie OnChange by nie pasowało?
najlepiej przypisać do kilku zdarzeń
a nic się nie stanie jak stan licznika będzie chwile nie aktualny, przecież to nie jest zabezpieczenie przed za długą sygnaturką tylko informacja dla użytkownika że to i tak nie przejdzie
OnChange nie zmienia się w trakcie pisania. Łatwo to przetestować:
<html><body><textarea onChange="alert('!');"></textarea></body></html>
Niestety nie działa to jak byśmy chcieli.
@Adamo - właśnie w tym problem, że są sposoby dodania tekstu, które nie posiadają stosownych zdarzeń - w ogóle.
Timer 4 razy na sekundę jest prosty, i tak nic nie obciąża, jest skuteczny. Więc czemu nie?
Dobra, dajcie ten timer na CVS i tyle :)