You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by da...@apache.org on 2002/03/27 00:20:25 UTC

cvs commit: tcl-rivet/rivet/packages/form form.tcl pkgIndex.tcl

damonc      02/03/26 15:20:25

  Modified:    .        ChangeLog
  Added:       rivet/packages/form form.tcl pkgIndex.tcl
  Log:
  * rivet/packages/form
      Added a new package for handling forms in Rivet.
  
  Revision  Changes    Path
  1.53      +5 -0      tcl-rivet/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/tcl-rivet/ChangeLog,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- ChangeLog	26 Mar 2002 19:39:26 -0000	1.52
  +++ ChangeLog	26 Mar 2002 23:20:25 -0000	1.53
  @@ -1,5 +1,10 @@
   2002-03-26  Damon J. Courtney <da...@unreality.com>
   
  +	* rivet/packages/form
  +	    Added a new package for handling forms in Rivet.
  +
  +2002-03-26  Damon J. Courtney <da...@unreality.com>
  +
   	* src/TclWebapache.c
   	    Moved the setting of include variables from LoadEnv to the
   	    InitEnv command.  This will allow us to retrieve these variables
  
  
  
  1.1                  tcl-rivet/rivet/packages/form/form.tcl
  
  Index: form.tcl
  ===================================================================
  package require Itcl
  
  package provide form 1.0
  
  ::itcl::class form {
  
      constructor {args} {
  	set arguments(METHOD) POST
  	set arguments(ACTION) [env DOCUMENT_URI]
  
  	import_data form $this arguments $args
  
  	if {[info exists arguments(DEFAULTS)]} {
  	    upvar 1 $arguments(DEFAULTS) defaults
  	    array set DefaultValues [array get defaults]
  	    unset arguments(DEFAULTS)
  	}
  	start
      }
  
      destructor {
  
      }
  
      protected method import_data {type name arrayName list} {
  	upvar 1 $arrayName data
  
  	if {[info exists DefaultArgs($type)]} {
  	    set list [concat $DefaultArgs($type) $list]
  	}
  
  	if {[info exists DefaultValues($name)]} {
  	    set data(VALUE) $DefaultValues($name)
  	}
  
  	if {[expr [llength $list] % 2]} {
  	    return -code error "Unmatched key-value pairs"
  	}
  
  	set return ""
  	foreach {var val} $list {
  	    set var [string range [string toupper $var] 1 end]
  	    set data($var) $val
  	    if {$var == "VALUES"} { continue }
  	    lappend return -$var $val
  	}
  	return $return
      }
  
      protected method argstring {arrayName} {
  	upvar 1 $arrayName data
  	set string ""
  	foreach arg [lsort [array names data]] {
  	    append string " $arg=\"$data($arg)\""
  	}
  	return $string
      }
  
      method default_value {name {newValue ""}} {
  	if {[lempty $newValue]} {
  	    if {![info exists DefaultValues($name)]} { return }
  	    return $DefaultValues($name)
  	}
  	return [set DefaultValues($name) $newValue]
      }
  
      method default_args {type args} {
  	if {[lempty $args]} {
  	    if {![info exists DefaultArgs($type)]} { return }
  	    return $DefaultArgs($type)
  	}
  	if {[expr [llength $args] % 2]} {
  	    return -code error "Unmatched key-value pairs"
  	}
  	return [set DefaultArgs($type) $args]
      }
  
      method start {} {
  	puts "<FORM [argstring arguments]>"
      }
  
      method end {} {
  	puts "</FORM>"
      }
  
      method field {type name args} {
  	import_data $type $name data $args
  	set string "<INPUT TYPE=\"$type\" NAME=\"$name\""
  	append string [argstring data]
  	switch -- $type {
  	    "radio" -
  	    "checkbox" {
  		if {![info exists data(VALUE)]} { set data(VALUE) "" }
  		if {[info exists DefaultValues($name)]} {
  		    if {$data(VALUE) == $DefaultValues($name)} {
  			append string " CHECKED"
  		    }
  		}
  	    }
  	}
  	append string ">"
  	if {$type == "radio"} {
  	    puts $string$data(VALUE)
  	} else {
  	    puts $string
  	}
      }
  
      method text {name args} {
  	eval field text $name $args
      }
  
      method password {name args} {
  	eval field password $name $args
      }
  
      method hidden {name args} {
  	eval field hidden $name $args
      }
  
      method submit {name args} {
  	eval field submit $name $args
      }
  
      method reset {name args} {
  	eval field reset $name $args
      }
  
      method image {name args} {
  	eval field image $name $args
      }
  
      method checkbox {name args} {
  	eval field checkbox $name $args
      }
  
      method radiobuttons {name args} {
  	set list [import_data radiobuttons $name data $args]
  	if {![info exists data(VALUES)]} {
  	    return -code error "No -values specified for radiobuttons"
  	}
  	foreach value $data(VALUES) {
  	    eval field radio $name $list -value $value
  	}
      }
  
      method select {name args} {
  	import_data select $name data $args
  	set values $data(VALUES)
  	unset data(VALUES)
  	set default ""
  	if {[info exists DefaultValues($name)]} {
  	    set default $DefaultValues($name)
  	}
  	puts "<SELECT NAME=\"$name\" [argstring data]>"
  	foreach value $values {
  	    if {$value == $default} {
  		set string "<OPTION SELECTED>"
  	    } else {
  		set string "<OPTION>"
  	    }
  	    puts $string$value
  	}
  	puts "</SELECT>"
      }
  
      method textarea {name args} {
  	import_data textarea $name data $args
  	set value ""
  	if {[info exists data(VALUE)]} {
  	    set value $data(VALUE)
  	    unset data(VALUE)
  	}
  	puts "<TEXTAREA NAME=\"$name\" [argstring data]>$value</TEXTAREA>"
      }
  
      private variable DefaultValues
      private variable DefaultArgs
  
      private variable arguments
  
  } ; ## ::itcl::class form
  
  
  
  1.1                  tcl-rivet/rivet/packages/form/pkgIndex.tcl
  
  Index: pkgIndex.tcl
  ===================================================================
  package ifneeded form 1.0 [list source [file join $dir form.tcl]]
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-dev-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-dev-help@tcl.apache.org