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

    Coco init copi /copi/ {r {
	set referer [Http Referer $r]
	set r [yield]	;# initially just redirect

	set forename ""
	set surname ""
	set phone ""
	set message {{Please enter someone's personal information.}}
	set valid 0
	while {!$valid} {
	    # issue form
	    set r [jQ hint $r]	;# add form hinting
	    set r [yield [Http Ok [Http NoCache $r] [subst {
		[<h1> "Personal Information"]
		[<p> [join $message </p><p>]]
		[<form> info {
		    [<fieldset> personal {
			[<legend> [<submit> submit "Personal Information"]]
			[<text> forename title "Forename" $forename]
			[<text> surname title "Surname" $surname]
			[<br>][<text> phone title "Phone number" $phone]
		    }]
		}]
	    }] x-text/html-fragment]]

	    # unpack query response
	    set Q [Query flatten [Query parse $r]]

	    # validate fields
	    set forename [Dict get? $Q forename]
	    set surname [Dict get? $Q surname]
	    set phone [Dict get? $Q phone]

	    set message ""
	    if {$forename eq ""} {
		lappend message "Forename can't be empty."
	    }
	    if {$surname eq ""} {
		lappend message "Surname can't be empty."
	    }
	    if {![regexp {^[-0-9+ ]+$} $phone]} {
		lappend message "Phone number has to look like a phone number."
	    }
	}
	return [Http Redirect $r $referer]
    }}
}

Comments

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

Oh, I forgot to actually test the validation