PswdInput – rozsireny Password Input

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lopo
Člen | 277
+
0
-

zapacili sa mi veci popisane tu

tak som vsetky 3 rozsirenia zobral a implementoval do jedneho celku

https://componette.org/search/?…

oproti originalu je to prepisane na pouzitie jQuery a teoreticky by pri vypnutom JS mal stale byt funkcny klasicky Password Input – nemam otestovane

som zvedavy na odozvy …

Editoval Lopo (9. 8. 2010 11:19)

hrach
Člen | 1838
+
0
-

tak předně by to chtělo demo a otestovat, ne? :)

Lopata
Člen | 139
+
0
-

Ale no tak … chce to šablonu :-o

Lopo
Člen | 277
+
0
-

dema si mozete pozret na linkoch ktore su v hlavicke zdrojakov …
a sablonu ? naco ? miesto addPassword() sa v tovarnicke pouzije addPswdInput() – ak treba nejake donastavenia tak podla public premennych v triede neni problem uhadnut co je k comu

ale zbadal som ze mi tam nefunguje jedna vec, takze robim opravu a este dnes nahodim

Lopata
Člen | 139
+
0
-

Měl jsem na mysli šablonu pro tu třídu jako takovou. Tobě se snad líbí ten javascript jen tak ve stringu…?!?

Lopo
Člen | 277
+
0
-

Lopata napsal(a):

Měl jsem na mysli šablonu pro tu třídu jako takovou. Tobě se snad líbí ten javascript jen tak ve stringu…?!?

mno neviem co si pod tou sablonou predstavujes … ale ten JS je parametrizovany pomocou ID jednotlivych komponentov a povolenych vlastnosti celeho kontrolu a tym padom je napevno integrovany v getControl()

cez public vlastnosti je mozne nastavit dizajn a povolit/zakazat casti funkcnosti

a ze je ten JS v stringu ? na tom podla mna nezalezi – nebudes sa v tom predsa hrabat kazdy den, nehovoriac o tom ze cele to stoji prave na tom JS

ale kludne sa neham poucit, netvrdim ze som genialny a je to dokonale nakodene

mkoubik
Člen | 728
+
0
-

cez public vlastnosti je mozne nastavit dizajn a povolit/zakazat casti funkcnosti

Neni lepší měnit dizajn změnou šablony? Navíc v šabloně je hned vidět co bude ve výsledném HTML (nemusim si představovat jak se ty proměnné poslepujou), dají se tam používat proměnné, makra apod.

Až budu mít víc času (zítra?), tak to skusim přepsat, abys viděl jak to myslíme.

redhead
Člen | 1313
+
0
-

Nijak jsem ten tvůj PswdInput nezkoumal, ale zdá se mi, že to děláš až moc složitě. Nebylo by lepší si označit normální PasswordInput nějakou CSS třídou a dělat to vše unobstrusive-way někde v externím souboru? Pak by stačilo si udělat extension method jen na to – přidat normalní PasswordInput a nastavit mu třídu navíc..

Editoval redhead (9. 8. 2010 14:49)

Lopo
Člen | 277
+
0
-

redhead napsal(a):

Nijak jsem ten tvůj PswdInput nezkoumal, ale zdá se mi, že to děláš až moc složitě. Nebylo by lepší si označit normální PasswordInput nějakou CSS třídou a dělat to vše unobstrusive-way někde v externím souboru? Pak by stačilo si udělat extension method jen na to – přidat normalní PasswordInput a nastavit mu třídu navíc..

ak to budes robit cez stylovanie tak mas nasledne bud problem v pripade viacerych tychto inputov na jednej stranke alebo musis ku kazdemu addPassword nasledne este rucne definovat jedinecnu css triedu, pouzivanim id tento problem odpada kedze ten generovany skript ma priamo v sebe (Nette generovanych) ID prvkov ku ktorym sa viaze

krom toho takto je to vsetko pokope prednastavene a nejsu pouzite ziadne megalomanske grafiky – dizajnovo to riesi len vzajomne pozicie prvkov (CLwarning ikona v inpute, checkbox), ziadne extra ozdoby (oramovanie bloku, pozadie a pod.)

v pripade ze to niekto chce predizajnovat, tak jednotlive relevantne CSS su dostupne cez public css_… vlastnosti, takze staci ich nastavit na prazdne retazce a v sablone si nadefinovat vlastny dizajn

celkovo je to robene s ohladom na co najjednoduchsie a najrychlejsie pouzitie (vacsinu som totiz kodil vo worku kde na taketo veci neni takmer vobec cas), takze pouzitie je fakt jednoduche – regne sa to ako rozsirenie formu a miesto addPassword sa pouzije addPswdInput, co v konecnom dosledku pri opakovanom pouziti znamena len zmenu nazvu jednej metody v tovarnicke

ale som zvedavy na konkretne ukazky ako to prepisat – rad sa neham poucit

Lopo
Člen | 277
+
0
-

tak 0.1.1 vonku, fix timer + par kozmetickych veci

redhead
Člen | 1313
+
0
-

Hmm, mno jak myslíš. Ale zase budeš mít hnusný javascript uvnitř HTML (v případě více inputů se bude opakovat naprosto stejný kód u každého prvku). A argument, že to nebude fungovat přes CSS třídu na více inputech na stránce, je hloupost, přes handlování eventů nevidím důvod, proč by to nemělo jít. A jak jsem psal před tím, můžeš si vytvořit extension method na přidání normálního pass. inputu a rovnou (v té metodě) mu dát tu třídu. Navíc budeš mít JS centralizovaný pro všechny ve složce doc_root/js (kam patří – žádná dynamika tam nebude).

Editoval redhead (9. 8. 2010 17:48)

Lopo
Člen | 277
+
0
-

tak je vonku v0.2.0

  • obsluzny JS vytiahnuty do samostatneho suboru
  • maly fix
  • vyhodenie nepotrebnych premennych
Lopo
Člen | 277
+
0
-

v0.3.0

  • refaktoring pre PHP5.3/Nette1.0dev
  • funkcnost pri vypnutom JS

Kedze komponenta bola komplet prepisana pre PHP5.3/Nette1.0dev, nebude uz bez uprav fungovat v Nette 0.9.x. Je to z dovodu identifikacie Form-ov. V 0.9 sa pouziva name, v 1.0 ID (ako je odporucane aj W3C). V pripade potreby pouzit v 0.9.x je nutne upravit prenos identifikatora formu z php do JS a ziskania objektu formu v JS podla verzie 0.2 na pouzitie mena. V pripade problemov sa staci ozvat a ja dorobim a zverejnim nejaku univerzalnu verziu.

Funkcnost pri vypnutom JS bola zaistena presunom tvorby doplnkovych inputov z php do JS, tj pri vypnutom JS by mal ostat len klasicky password input obaleny v SPAN-e, pri zapnutom JS sa vsetky potrebne veci vytvoria dynamicky pomocou JS.

Lopo
Člen | 277
+
0
-

v 0.3.1:

  • nezavyslost na verzii Nette (Form name/ID)
  • par malych fixov a uprav
romiix.org
Člen | 343
+
0
-

Zdravím,

ako mám pridať addPswdInput?

V BasePresenter.php mám:

public function startup()
{
	parent::startup();
	\Nette\Forms\Form::extensionMethod('\\Nette\\Forms\\Form::addPswdInput', array('\\BailIff\\Forms\\PswdInput', 'addPswdInput'));
}

a pridal som súbor https://github.com/…swdInput.php do libs.

Ale stále mi vyskakuje ladenka „Call to undefined static method BailIff\Forms\PswdInput::addPswdInput().“

Prosím o radu.

Ďakujem

voda
Člen | 561
+
0
-

Zkus jen:

\Nette\Forms\Form::extensionMethod('addPswdInput', array('\\BailIff\\Forms\\PswdInput', 'addPswdInput'));
romiix.org
Člen | 343
+
0
-

voda

To mi žiaľ nepomohlo.

Podarilo sa mi to „rozchodiť“ tak, že som pri vytváraní formulára použil miesto Nette\Application\AppForm NRomiix\Application\AppForm.
Do vlastného AppFormu som dal:

namespace NRomiix\Application;

class AppForm extends \Nette\Application\AppForm
{
	public function addPswdInput($name, $label = NULL, $cols = NULL, $maxLength = NULL)
	{
		return $this[$name] = new \BailIff\Forms\PswdInput($label, $cols, $maxLength);
	}
}
Jan Endel
Člen | 1016
+
0
-

Bohužel současné umístění na githubu mi vrací 404, šel by tento doplněk zpět někam nahrát?

Lopo
Člen | 277
+
0
-

pilec napsal(a):

Bohužel současné umístění na githubu mi vrací 404, šel by tento doplněk zpět někam nahrát?

neviem teda ktore umiestnenie presne si skusal, ale samotne php je na https://github.com/…swdInput.php a podobne je aj prislusny JS – je to sucast Lohini

Jan Endel
Člen | 1016
+
0
-

Pokud tento doplněk bude někdo implementovat, mám dva postřehy,
\Nette\Templating\DefaultHelpers se přejmenovalo na \Nette\Templating\Helpers a pokud chcete aby vám IDE napovídalo i přes extension vytvořené addPswd stačí do třídy do PHPDocu dopsat:

@method Carten\Forms\Controls\PasswordInput addPswd() addPswd(string $name, string $label = NULL, int $cols = NULL, int $maxLength = NULL) Add special input for password

popřípadě by možná stálo za promyšlení nepřidávat metodu formuláři ale kontejneru, poněvadž takhle není možné PswdInput ve vnořených kontejnerech používat.

Jan Endel
Člen | 1016
+
0
-

Tak při implementaci jsem se dostal do zajímavé fáze. Nedostávám error ani od laděnky ani od javascriptu, původní psswdInput jsem byl nucen trošku poupravit a to v metodě getControl na:

$container->add(
	Html::el(
		'script',
		array('type' => 'text/javascript')
	)
	->add("jQuery(document).ready(function() {head.js(
		'/js/PswdInput.js',
		function() {
			PswdInput('{$control->id}', ".\Nette\Templating\Helpers::escapeJs($data).');
			}
		);});')
	);

bohužel jednak nefunguje žádná feature a při pokusu napsat znak do formulářového pole se js zacyklí a začně do něj divoce vypisovat paznaky. Neměl někdo podobné potíže?

Editoval pilec (28. 2. 2012 1:12)

Lopo
Člen | 277
+
0
-

ja som to teraz testoval a nemal som ziadny problem …

pouzil som pritom verziu co mam v ramci Lohini – bez nejakych uprav v projekte ktory z Lohini pouziva len par samostatne vytiahnutych drobnosti lebo Lohini nemam este updatnute a pritom projekt ide na Nette2final

fakt netuim kde moze byt problem – uprava co si urobil (tvrda cesta k JS a .ready z jQuery miesto headjs) by to podla mna nemali sposobovat

rovnako som bol pri vypustani testoval aj vsetky mozne kombinacie nastaveni co ma napadli a nebol problem …

ak mozes posli mi link kde mozem videt to haluzne chovanie aby som sa na to pozrel a ked tak sa to pokusil fixnut

sabrx
Člen | 47
+
0
-

Ahoj, doplnok mi nefunguje s Nette 2.0.5. Vypisuje sa chyba:

Lohini\MemberAccessException

Cannot read an undeclared property Lohini\Forms\Controls\PswdInput::$sanitize.

V rodicovskej triede sa v konstruktore predava metodoe addFilter premenna sanitize, co je v skutocnosti dalej definovana metoda sanitize, ale kedze mas v definicii vlastnu metodu get, tak sa vyhodi vynimka, lebo sanitize nemas v poli premennych, ktore get vracia. To som si opravil, ale aj tak mi to vobec nefunguje, Javascript sa nikde nenacita.

Ak to niekomu bezi, poprosil by som o pomoc, vdaka.

Lopo
Člen | 277
+
0
-

sabrx napsal(a):

  • JS → ktoru verziu si skusal ? pretoze nedavno som to cele trosku dost prekopal – JS je teraz rieseny formou pluginu do nette.ajax.js, predtym to bolo samostatne ale zase nacitavane cez head.js

teraz som pozeral to sanitize a nemalo by robit ziadny problem kedze to sa vola pri getValue() a ja mam tu metodu prepisanu takze by sa sanitize nemalo vobec volat

Editoval Lopo (22. 10. 2012 9:23)

akadlec
Člen | 1326
+
0
-

Ahoj, nevím zda tento doplněk někdo využíva, chtěl jsem jej nahodit do appky a bohužel jak se píše výše v nette v2.1.0 to nefachčí. Právě kvůli problému sanitize a volání dalších metod. Vyhazuje to Exception v get metodě. No toto sem si fixnul a input se již zobrazuje, ale nedaří se mi nikde najít JS co má být upravené pro nette.ajax.js. Má někdo z vás ten js k dispozici?