Posted to tcl by colin at Sat Aug 23 10:30:16 GMT 2008view raw

  1. Coco init copi /copi/ {r {
  2. set referer [Http Referer $r]
  3. set r [yield] ;# initially just redirect
  4.  
  5. set forename ""
  6. set surname ""
  7. set phone ""
  8. set message {{Please enter someone's personal information.}}
  9. set valid 0
  10. while {!$valid} {
  11. # issue form
  12. set r [jQ hint $r] ;# add form hinting
  13. set r [yield [Http Ok [Http NoCache $r] [subst {
  14. [<h1> "Personal Information"]
  15. [<p> [join $message </p><p>]]
  16. [<form> info {
  17. [<fieldset> personal {
  18. [<legend> [<submit> submit "Personal Information"]]
  19. [<text> forename title "Forename" $forename]
  20. [<text> surname title "Surname" $surname]
  21. [<br>][<text> phone title "Phone number" $phone]
  22. }]
  23. }]
  24. }] x-text/html-fragment]]
  25.  
  26. # unpack query response
  27. set Q [Query flatten [Query parse $r]]
  28.  
  29. # validate fields
  30. set forename [Dict get? $Q forename]
  31. set surname [Dict get? $Q surname]
  32. set phone [Dict get? $Q phone]
  33.  
  34. set message ""
  35. if {$forename eq ""} {
  36. lappend message "Forename can't be empty."
  37. }
  38. if {$surname eq ""} {
  39. lappend message "Surname can't be empty."
  40. }
  41. if {![regexp {^[-0-9+ ]+$} $phone]} {
  42. lappend message "Phone number has to look like a phone number."
  43. }
  44. }
  45. return [Http Redirect $r $referer]
  46. }}
  47. }
  48.  

Comments

Posted by colin at Sat Aug 23 10:34:04 GMT 2008 [text] [code]

Oh, I forgot to actually test the validation