PswdInput – rozsireny Password Input
- Lopo
- Člen | 277
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)
- Lopo
- Člen | 277
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
- Lopo
- Člen | 277
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
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
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
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
- redhead
- Člen | 1313
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
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.
- romiix.org
- Člen | 343
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
- romiix.org
- Člen | 343
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 AppForm
u 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);
}
}
- Lopo
- Člen | 277
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
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
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
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
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
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
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?