[addon live-form-validation] Live Form Validation
- Jan Tvrdík
- Nette guru | 2595
Diskuse ke stránce Live Form Validation
Pěkná komponenta. Škoda ale, že je pod GPL, takže se v praxi moc použít nedá.
- Ondřej Brejla
- Člen | 746
Proč by nešla použít? Snad pokud budu s touto komponentou vyvíjet a distribuovat, tak dám k dispozici zdrojáky komponenty a je to ne? Nebo jsem jen nechápavec nechápavý a prosím vysvětlit :-)
- Jan Tvrdík
- Nette guru | 2595
Pokud budu na nějakém webu používat komponentu pod GPL licencí, tak
musím celý web vydat jako open-source projekt taktéž pod GPL
licencí.
Pokud budu tvořit normální komerční web a budu tam chtít použít komponentu pod GPL licencí, tak musím celý web vydat jako open-source projekt taktéž pod GPL licencí.
Pokud tvořím komponetu a chci, aby mohla být použita i v close-source projektech, tak je ideální ji vydat pod New BSD license/MIT, případně alespoň pod LGPL.
Viz také:
Editoval Jan Tvrdík (28. 8. 2009 14:32)
- Ondřej Brejla
- Člen | 746
Pouze pokud ten web poskytuji třetí straně ne? Když si to plácnu na nějaký svůj projekt, tak ho snad nikde vystavovat nemusím? Ale dost možná je to jiná licence…
- Jan Tvrdík
- Nette guru | 2595
OT: Pořád čekám, až někdo udělá web zabývající se polopolatickým vysvětlováním licencí.
- buff
- Člen | 63
Nemusíš, pouze pokud bys ten web distribuoval, musíš přibalit zdrojové kódy (upřímně ani nevím, jak ho jinak distribuovat).
Citace z Wikipedie, poslední odstavec zde: https://en.wikipedia.org/…blic_License#…
Copyleft applies only when a person seeks to redistribute the program. One is allowed to make private modified versions, without any obligation to divulge the modifications as long as the modified software is not distributed to anyone else. Note that the copyleft applies only to the software and not to its output (unless that output is itself a derivative work of the program). For example, a public web portal running a modified derivative of a GPL'ed content management system is not required to distribute its changes to the underlying software because its output is not a derivative.
//Edit: vidím, že jdu trochu pozdě, pardon :-)
Editoval buff (28. 8. 2009 14:36)
- Jan Tvrdík
- Nette guru | 2595
Warden napsal(a):
Pouze pokud ten web poskytuji třetí straně ne? Když si to plácnu na nějaký svůj projekt, tak ho snad nikde vystavovat nemusím? Ale dost možná je to jiná licence…
Ano, je to tak, svůj předchozí výrok jsem upřesnil. Bohužel to nic nemění na tom, že pakliže je komponenta pod GPL licencí a neexistuje k ní komerční licence, tak je její použití velmi omezené, protože většinu webů, které dělám jsou zakázky a tam tu komponentu využít nemůžu.
Proto např. Texy! pod GPL licencí nelze použít v komerčních projektech a je potřeba pro ně zakoupit komerční licenci.
Editoval Jan Tvrdík (28. 8. 2009 14:37)
- buff
- Člen | 63
Jan Tvrdík napsal(a):
Ano, je to tak, svůj předchozí výrok jsem upřesnil. Bohužel to nic nemění na tom, že pakliže je komponenta pod GPL licencí a neexistuje k ní komerční licence, tak je její použití velmi omezené, protože většinu webů, které dělám jsou zakázky a tam tu komponentu využít nemůžu.
Podle mě můžeš, jen prostě musíš dát zdrojáky tomu, pro koho ten web děláš.
- Ondřej Brejla
- Člen | 746
Přesně tak, GPL upravuje to, že pokud poskytuješ sw třetí osobě, musíš poskytovat zdrojáky…to, jestli si za to necháš platit nebo ne, je GPL jedno. Komerčnost nekomerčnost neřeší.
- buff
- Člen | 63
Ola napsal(a):
Podle mě ty zdrojáky musíš dát k dispozici všem, nikoliv pouze klientovi.
Já si to nemyslím, nic takového jsem nenašel. A prosím opravte mě s citací, pokud se mýlím. Podle mě GPL upravuje práva příjemce toho produktu, je to end-user licence. A tvrdí, že tento příjemce má právo obdržet s produktem zdrojové kódy. Přijde mi ale divné, aby licence nutila distributora poskytnout produkt komukoliv.
//Edit: kromě práva na zdrojové kódy je tam taky to právo příjemce produkt dále distribuovat, modifikovat, atd., v tom je zajištěna ta svoboda.
Editoval buff (28. 8. 2009 15:00)
- Jan Tvrdík
- Nette guru | 2595
Za ideální volbu považuji New BSD license nebo MIT. Jmenují se různě, ale jejich význam je stejný.
- xificurk
- Člen | 121
Lidi, nepište tu prosím bludy… raději si přečtěte odpovědi přímo
u zdroje:
http://www.gnu.org/…2.0-faq.html#…
http://www.gnu.org/…2.0-faq.html#…
Ano, pokud použijete GPL komponentu, musí být celá aplikace pod GPL, ale… konkrétně pro webové aplikace v PHP (stejně se distribuují v podobě zdrojového kódu) vidím jen jednu nevýhodu (pro vývojáře) – jakmile aplikaci předám, už dále z principu nemůžu mít kontrolu nad tím, co se s ní bude dít, tedy nelze např. uzavřít exkluzivní smlouvu na budoucí úpravy aplikace.
Můj názor tedy je, že v případě PHP web aplikací, je celkem šumák, jakou licenci kdo použije, většina těch restriktivnějších podmínek, je totiž splněna automaticky.
Obecně ale platí, že pokud mi je jedno, kdo a na co použije můj kód (třeba ho vezme, přejmenuje, uzavře a začne prodávat), je vhodné použít třeba new BSD licenci. GPL, příp. další podobné licence, fungují na virálním principu – „tady je můj kód, použijte si ho kde a jak chcete, ale pokud ho začnete distribuovat, musíte svým uživatelům dát stejná práva jako dávám teď já vám“.
- redhead
- Člen | 1313
Myslel jsem že už není co vylepšovat na téhle třídě, ale ukázalo se že je!
Představuji verzi 0.8, která vylepšuje některé funkce a dává trochu více možností pro programátory:
Features
- option proměnné
- JS kód při jakékoliv chybě po odeslání formu (jako echo uživateli, že ještě je někde chyba, hodí se např pro velké formuláře, kde by to nebylo zřejmé; ukázáno v DEMU)
- validovat Form::FILLED operace až pouze po submitu (takže ne tak live)
- validovat při keyup eventu (nebude to řvát už při psaní)
- komprese JS kódu do jedné řádky (ukázáno v DEMU)
- tabulátor při keyup eventu nespouští validaci
- lepší provázání validace více elementů (Condition a ConditionOn)
- provázané validace elementů se spouští až po tom co je uživatel „prošel“ (přešel TABem, vyplnil správně/špatně), takže to neřve že 2. heslo nesouhlasí když ještě vyplňujete to první
Demo + Download
Protože stále(!) nefungují stránky nette, hodil jsem odkaz k downloadu k Demu ZDE
- Matúš Matula
- Člen | 257
Este som to neskusal, ale len tak letmo, co som pozereal demo, tak som si vsimol taku drobnost: ked sa snazim viacnasobne odoslat zle vyplneny formular, tak hlaska o tom [‚Špatně vyplněný formulář!‘] sa pridava kazdym pokusom o odoslanie
Inak pekna komponentka ;-)
- redhead
- Člen | 1313
_Martin_ napsal(a):
Tak co tam dát tu fičurku
toogle
, aby to políčko na mail nebylo vidět, když není zaškrtnuto posílání notifikací?
Dal sem to tam, ale je tam takovej malej workaround, jak se tam zobrazuje i ta zelená ikonka, tak aby nebyla vidět když je to schované, protože Chromák posílá eventy v trochu jiném pořádí než FF, takže to úplně nešlo. Holt až si budete přepisovat JS na tohle musíte dávat pozor.
Jinak jsem zapomněl skoro na jednu z hlavních feature nové verze!
- zabalování funkcí pro validaci (a toggle) do JS objektu. Například pro MyForm se vytvoří object MyForm a fce se volají MyForm.validate(), atd…
- David Grudl
- Nette Core | 8218
Pokusil jsem se upravit InstantClientScript, aby se na něj dala live validace navázat i bez nutnosti modifikovat PHP kód. Pokud bys měl redheade chuť, zkusil bys, jestli by šlo tvé řešení na to navázat?
- Klokan
- Člen | 47
Ahoj, včera po pádu DB se mi dotaz smazal, tak to zkusím ještě
jednou.
Chtěl jsem poprosit, jestli by bylo možné jako ukázku scriptík upravit tak,
aby hlášky zobrazoval v sekci „errors“ formuláře. Mám totiž
formulář kde jsou komponenty naskládané vodorovně a chyby bych chtěl
zobrazovat nad tím. Asi to bude jednoduché pomocí JS, ale nejsem v tom
zrovna jednička :o). Díky alespoň za nakopmutí. Jinak komponenta funguje
skvěle a chtěl bych za ni poděkovat.
- redhead
- Člen | 1313
tady je přepsáná metoda na vytvoření chybové zprávy, ale musíš si to upravit sám. Pracuje tak, že pokud první element formu není <ul> seznam, tak ho vytvoří a do něj pak vloží nový <li> (do které se potom vpíše chybová zpráva). Musím ale říct, že je to dosti otravné řešení, no uvidíš sám..
<script>
function errorMessageElement(id, sender)
{
var ul = sender.form.firstElementChild; //ul seznam
if(ul.tagName.toLowerCase() != 'ul') { //neni to seznam?
var new_ul = document.createElement('ul'); //vytvorime ho
new_ul.className = 'errors'; //vlozime css class
sender.form.insertBefore(new_ul, ul); //vlozime do stromu DOM
ul = new_ul;
}
var el = document.getElementById(id); //chybova hlaska, pokud uz byla vytvorena
if(!el) //existuje?
{
el = document.createElement('li'); //vytvori novou polozku <li>
el.id = id;
ul.appendChild(el); //vlozi do stromu DOM
}
else
{
el.style.display = 'list-item'; //pokud existuje zobrazit ji
}
return el;
}
</script>
Stačí stejnojmennou funkci v LiveFormValidation.js přepsat tímto.
Editoval redhead (10. 12. 2009 17:51)
- brabo
- Člen | 19
Ahoj všici. Mám trochu problém s validací RadioListů. Ve zdrojácích jsem koukal se s tím nějak počítá, ale prakticky mi to padá při odeslání formuláře, protože se tam volá
<script>
validateHostingFormControl(document.getElementById('frmhostingForm-CLOSED'))
</script>
čili jakoby podle hlavního ID. Jenže jak jsem zkoumal HTML, tak tam jsou jenom IDčka pro jednolivé radio prvky „frmhostingForm-CLOSED-0“ a „frmhostingForm-CLOSED-1“, čili podle výše uvedeného IDčka to nic nenajde, padne to JS chybou a dojde tak k pádu validace a odeslání formuláře, protože se nevrátí false.
- iguana007
- Člen | 970
Díval jsem se na GitHUB a tam to vypada, ze je to fixed …
https://github.com/…sues/unreads#…
a
https://github.com/…dccb3a619163
Ale me pripada, ze to porad nefunguje … live validace mi proste dovoli form odeslat i kdyz mam formular uplne prazdny…
Mam nette: 0.9.3-dev ae8347e released on 2010–01–20
- Panda
- Člen | 569
Chybička se vloudila: https://forum.nette.org/…iewtopic.php?….
Patch: LiveClientScript.patch.
//Doplnění: patch aktualizován.
Editoval Panda (19. 2. 2010 11:18)
- iguana007
- Člen | 970
Asi jsem našel bug.
Týká se to pouze IE – popíšu problém:
Mám formulář na jehož konci je povinný checkbox (tj. pokud není zaškrtnutý, tak se nesmí form odeslat – souhlas s použitím osobních dat).
A hned za ním je submit.
Problém je v tom, že když neproběhne focus na další prvek formu, tak neproběhne live validace a form se v IE musí odesílat na 2× (1. klik na submit se zvaliduje checkbox ana 2. klik se form odešle).
Vyřešeno jQuery kódem, který donutí provést validaci při kliku na daný checkbox:
$(".pravidla input:checkbox").click(function() {
RegisterUserForm.validateControl(this);
});
- despiq
- Člen | 320
<?php
function errorMessageElement(id, sender)
{
var el = document.getElementById(id);
if(!el)
{
el = document.createElement('span');
el.id = id;
var parent = sender.parentNode;
if(parent.lastchild == sender) {
parent.appendChild(el);
} else {
parent.insertBefore(el, sender.nextSibling);
}
}
else
{
el.style.display = 'inline';
}
return el;
}
?>
Proc je tady napevno display inline?
Kdyz kliknu poprve do kontrolovaneho pole a napriklad ma byt filled a kliknu
jinam tak se error ukaze s nadefinovanym stylem, kdyz ale do onoho pole kliknu
znovu a pak zase pryc tak se erroru prida prave display inline, muze to rozhodit
pak to nastylovani a tak se jen ptam jestli to ma nejaky vyznam ktery
nevidim?
- redhead
- Člen | 1313
No má, protože pokud uděláš poprvé chybu vytvoří se element, pokud chybu odstraníš ten element v DOMu zůstává, jen se skryje pomocí css (display: none), aby se opět objevil s nějakou novou chybou, musí se display:none zrušit a protože se defaultně používá span (který jest inline elementem), tak se přiřadí dislay: inline.
Jinak ten javascript je naprosto na tobě, jak si ho upravíš. Můžeš si tam přiřadit klidně block nebo si aktuální hodnotu někam uložit nebo si to přepsat úplně, že se ten element odstraní a bude se vkládat vždy nový.. A třeba s podporou jQuery nebo Prototype (definuji tam totiž vlastní a špatné metody pro přiřazení/odebrání css tříd). Je to opravdu na tobě, ten soubor tam je jen proto, aby to fungovalo od začátku, bez nějakých zásahů, ale upravit si ho není zakázané ;)
- SquirrelCZE
- Člen | 15
zdravim, bylo by mozne dat nekam zdroj.kod DEMA? :)
co se tyce nette tak jsem zacatecnik takze by se mi to hodilo, ono moje
formulare jeste nejsou eno nuno a chtel bych se podivat :)
- redhead
- Člen | 1313
SquirrelCZE napsal(a):
zdravim, bylo by mozne dat nekam zdroj.kod DEMA? :)
co se tyce nette tak jsem zacatecnik takze by se mi to hodilo, ono moje formulare jeste nejsou eno nuno a chtel bych se podivat :)
Je to tam, ještě jsem to upravoval, tak snad to funguje:
- bazo
- Člen | 620
ahoj,
narazil som na podivnu chybu. ak renderujem form cez makro {widget formName},
tak script funguje bez problemov. akonahle pouzijem manualny render tak dostavam
chybu sender is null vo firebugu a pod tym nahodny kus kodu html alebo js.
aj ked vygenerujem uplne totozne html s automaticky renderovanym formom, tak
to nejde.
netusite kde by mohol byt problem?
- redhead
- Člen | 1313
Hmm, a renderuješ opravdu všechny prvky z formuláře? Nebo nepřejmenováváš někde atribut id u prvku?
Chtělo by to vědět, který prvek to způsobuje, tzn. debugovat javascript.
Jinak pokud to chceš vyřešit tak bych doporučoval přidat před řádek:
if(typeof(sender) != 'string');
...
kontrolu zda-li je sender null a vrátit true:
if(!sender)
return true;
if(typeof(sender) != 'string');
...
Teď to bohužel neopravím, tak si to kdyžtaj uprav v LiveClientScript.php (měl by to být řádek 162)
- redhead
- Člen | 1313
cmelis napsal(a):
neplánuješ prosím tento plugin přepsat do php 5.3 s namespaces? Začínám s nette a používám php 5.3 ale nějak se mi to nedaří rozchodit.
To už si druhý během dneška :D No, musím se přiznat, že o namespacech toho moc nevím (resp. nikdy jsem s nimi nepsal). Je to ale je jen jedna třída, nemůže to být složité to přepsat, nechceš to zkusit? Nemám zrovna teď moc čas.