Annotation of capa/capa51/GUITools/webpage.tcl, revision 1.1

1.1     ! albertel    1: #!/usr/local/bin/tclsh8.0
        !             2: 
        !             3: proc outputHeader { } {
        !             4:     puts "Content-type: text/html\n\n<HTML><TITLE></TITLE><BODY bgcolor=\"#ffffff\"> "
        !             5: }
        !             6: 
        !             7: proc outputFooter {} {
        !             8:     puts "</BODY></HTML>"
        !             9: }
        !            10: 
        !            11: proc getid.outputButton { capaid argumentsVar } {
        !            12:     global machine
        !            13:     upvar $argumentsVar arguments
        !            14:     puts "<FORM METHOD=\"POST\"  ACTION=\"http://$machine/capa-bin/capahtml\">"
        !            15:     puts "<input type=\"HIDDEN\" name=\"M\" value=1>"
        !            16:     puts "<input type=\"HIDDEN\" name=\"CAPAID\" value=$capaid>"
        !            17:     puts "<input type=\"HIDDEN\" name=\"SNUM\" value=$arguments(SNUM)>"
        !            18:     puts "<input type=\"HIDDEN\" name=\"CLASS\" value=$arguments(CLASS)>"
        !            19:     puts "Click <input type=\"submit\" value=\"  here  \"> to work on <i>CAPA</i>."
        !            20:     puts "</form>"
        !            21: }
        !            22: 
        !            23: proc getid.main {argumentsVar} {
        !            24:     global config classList
        !            25:     upvar $argumentsVar arguments
        !            26:     outputHeader
        !            27:     if { [array names classList $arguments(CLASS).path] != "" } {
        !            28: 	set pwd [pwd]
        !            29: 	catch {cd $classList($arguments(CLASS).path)} error
        !            30: 	 #   puts "hey :$error:"
        !            31: 	catch {set result [exec $config(webpage) -getid $arguments(SNUM) \
        !            32: 			       $arguments(SETID) $arguments(CAPAID) ]} error
        !            33: 	 #   puts "hey :$error:"
        !            34: 	 #   puts "hey :$error:$result:"
        !            35: 	switch $result {
        !            36: 	    InvalidSetId { puts "The set requested, $arguments(SETID), is not a valid set number." }
        !            37: 	    InvalidOldCapaID -
        !            38: 	    NotFound { puts "The provided old <i>CAPA</i>ID ($arguments(CAPAID)) is not a valid <i>CAPA</i>ID for any set previous to the requested set $arguments(SETID)." }
        !            39: 	    NotOpen { puts "The set requested, $arguments(SETID), is not open." }
        !            40: 	    default { puts "Your <i>CAPA</i>ID is <font size=+2>$result</font> for Set $arguments(SETID) in class $arguments(CLASS)."; getid.outputButton $result arguments}
        !            41: 	}
        !            42: 	cd $pwd
        !            43:     } else {
        !            44: 	puts "Invalid request. Class $arguments(CLASS) not found."
        !            45:     }
        !            46:     outputFooter
        !            47: }
        !            48: 
        !            49: proc capaid.outputButton { capaid argumentsVar } {
        !            50:     global machine
        !            51:     upvar $argumentsVar arguments
        !            52:     puts "<FORM METHOD=\"POST\"  ACTION=\"http://$machine/capa-bin/capahtml\">"
        !            53:     puts "<input type=\"HIDDEN\" name=\"M\" value=1>"
        !            54:     puts "<input type=\"HIDDEN\" name=\"CAPAID\" value=$capaid>"
        !            55:     puts "<input type=\"HIDDEN\" name=\"SNUM\" value=$arguments(SNUM)>"
        !            56:     puts "<input type=\"HIDDEN\" name=\"CLASS\" value=$arguments(CLASS)>"
        !            57:     puts "Click <input type=\"submit\" value=\"  here  \"> to work on <i>CAPA</i>."
        !            58:     puts "</form>"
        !            59: }
        !            60: 
        !            61: proc capaid.main {argumentsVar} {
        !            62:     global config classList
        !            63:     upvar $argumentsVar arguments
        !            64:     outputHeader
        !            65:     if { [array names classList $arguments(CLASS).path] != "" } {
        !            66: 	set pwd [pwd]
        !            67: 	catch {cd $classList($arguments(CLASS).path)} error
        !            68: 	#    puts "hey :$error:"
        !            69: 	catch {set result [exec $config(webpage) -getid $arguments(SNUM) \
        !            70: 			       $arguments(SETID)]} error
        !            71: 	#    puts "hey :$error:"
        !            72: 	#    puts "hey :$error:$result:"
        !            73: 	switch $result {
        !            74: 	    InvalidSetId { puts "The set requested, $arguments(SETID), is not a valid set number." }
        !            75: 	    InvalidOldCapaID -
        !            76: 	    NotFound { puts "The provided Student Number $arguments(SNUM) is not a valid for $arguments(CLASS)." }
        !            77: 	    NotOpen { puts "The set requested, $arguments(SETID), is not open." }
        !            78: 	    default { puts "Your <i>CAPA</i>ID is <font size=+2>$result</font> for Set $arguments(SETID) in class $arguments(CLASS)."; capaid.outputButton $result arguments}
        !            79: 	}
        !            80: 	cd $pwd
        !            81:     } else {
        !            82: 	puts "Invalid request. Class $arguments(CLASS) not found."
        !            83:     }
        !            84:     outputFooter
        !            85: }
        !            86: 
        !            87: proc emailid.sendmail { what who argumentsVar } {
        !            88:     global config 
        !            89:     upvar $argumentsVar arguments
        !            90:     if { $who == "" } {
        !            91: 	puts "There is no e-mail address available for this student. Please contact you r instructor to obtain your <i>CAPA</i>ID."
        !            92:     } else {
        !            93: 	set mailID [open "|$config(mail) -s \"Requested CAPAID\" $who" w]
        !            94: 	puts $mailID "The CAPAID you requested for class $arguments(CLASS), set number $arguments(SETID) is $what."
        !            95: 	close $mailID
        !            96: 	puts "Your <i>CAPA</i>ID has been mailed to your university e-mail account."
        !            97:     }    
        !            98: }
        !            99: 
        !           100: proc emailid.main {argumentsVar} {
        !           101:     global classList config
        !           102:     upvar $argumentsVar arguments
        !           103:     outputHeader
        !           104:     if { [array names classList $arguments(CLASS).path] != "" } {
        !           105: 	set pwd [pwd]
        !           106: 	if {[catch {cd $classList($arguments(CLASS).path)} error ]} {
        !           107: 	    puts $error; return
        !           108: 	}
        !           109: 	if {[catch {set result [exec $config(webpage) -emailcapaid $arguments(SNUM) \
        !           110: 				    $arguments(SETID) ]} error ]} {
        !           111: 	    puts $error; return
        !           112: 	}
        !           113: 	cd $pwd
        !           114: 	switch $result {
        !           115: 	    InvalidSetId { puts "The set requested, $arguments(SETID), is not a valid set number." }
        !           116: 	    NotOpen { puts "The set requested, $arguments(SETID), is not yet open for access." }
        !           117: 	    NotFound { puts "Unable to find student number $arguments(SNUM) in classlist."}
        !           118: 	    default {
        !           119: 		if { [catch { eval "emailid.sendmail $result arguments" } error ] } {
        !           120: 		    puts "$error:There is no e-mail address available for this student. Please contact your instructor to obtain your <i>CAPA</i>ID."
        !           121: 		}
        !           122: 	    }
        !           123: 	}
        !           124:     } else {
        !           125: 	puts "Invalid request. Class $arguments(CLASS) not found."
        !           126:     }
        !           127:     
        !           128:     outputFooter
        !           129: }
        !           130: 
        !           131: proc getSettings { } {
        !           132:     global classList
        !           133:     set confID [open "class.conf"]
        !           134:     set aline [gets $confID]
        !           135:     while {![eof $confID]} {
        !           136: 	set class [lindex $aline 0]
        !           137: 	set path [lindex $aline 1]
        !           138: 	set classList($class.path) [file join $path $class]
        !           139: 	set aline [gets $confID]
        !           140:     }
        !           141: }
        !           142: 
        !           143: proc ids.main {} {
        !           144:     global env
        !           145:     getSettings
        !           146:     set request [string trim [read file0]]
        !           147:     foreach {var value} [split $request "&="] {set arguments($var) [string trim $value]}
        !           148:     catch {set arguments(SETID) [string trimleft $arguments(SETID) 0]}
        !           149:     catch {set logFileId [open ids.log "a"]} error
        !           150: 
        !           151:     set b [split $request "&="]
        !           152:     if { [catch {lappend b $env(REMOTE_HOST)}]} {
        !           153: 	if { [catch {lappend b $env(REMOTE_ADDR)}] } {
        !           154: 	    lappend b UNKNOWN
        !           155: 	}
        !           156:     }
        !           157:     puts $logFileId "[clock format [clock seconds]] $b"
        !           158:     close $logFileId
        !           159:     
        !           160:     $arguments(TYPE).main arguments
        !           161: }
        !           162: 
        !           163: proc optionlist { match } {
        !           164:     global env
        !           165:     set request ""
        !           166:     catch {puts $env(QUERY_STRING)}
        !           167:     catch {set request [string trim $env(QUERY_STRING)]}
        !           168:     if { $request == "" } {
        !           169: 	set arguments(CLASS) ""
        !           170:     } else {
        !           171:      foreach {var value} [split $request "&="] {set arguments($var) [string trim $value]}
        !           172:     }
        !           173:     set confID [open "class.conf"]
        !           174:     set aline [gets $confID]
        !           175:     while {![eof $confID]} {
        !           176: 	set type [lindex $aline 3]
        !           177: 	if { [lsearch $type $match] != -1 } {
        !           178: 	    set classname [lindex $aline 0]
        !           179: 	    if { [string toupper $classname] == [string toupper $arguments(CLASS)] } {
        !           180: 		puts "<option selected> [lindex $aline 0]"
        !           181: 	    } else {
        !           182: 		puts "<option> [lindex $aline 0]"
        !           183: 	    }
        !           184: 	}
        !           185: 	set aline [gets $confID]
        !           186:     }
        !           187: }
        !           188: 
        !           189: proc main {} {
        !           190:     global argv0 machine class.head class.tail emailid.head emailid.tail \
        !           191: 	getid.head getid.tail capaid.head capaid.tail config 
        !           192:     eval "global [info globals]"
        !           193:     source web.settings
        !           194:     switch -glob -- [file tail $argv0] {
        !           195: 	class.* -
        !           196: 	index.* {
        !           197: 	    puts "Content-type: text/html\n\n"
        !           198: 	    puts [subst -nocommands ${class.head}]
        !           199: 	    optionlist class
        !           200: 	    puts [subst -nocommands ${class.tail}]
        !           201: 	}
        !           202: 	emailid.* {
        !           203: 	    puts "Content-type: text/html\n\n"
        !           204: 	    puts [subst -nocommands ${emailid.head}]
        !           205: 	    optionlist emailid
        !           206: 	    puts [subst -nocommands ${emailid.tail}]
        !           207: 	}
        !           208: 	getid.* {
        !           209: 	    puts "Content-type: text/html\n\n"
        !           210: 	    puts [subst -nocommands ${getid.head}]
        !           211: 	    optionlist getid
        !           212: 	    puts [subst -nocommands ${getid.tail}]
        !           213: 	}
        !           214: 	capaid.* {
        !           215: 	    puts "Content-type: text/html\n\n"
        !           216: 	    puts [subst -nocommands ${capaid.head}]
        !           217: 	    optionlist capaid
        !           218: 	    puts [subst -nocommands ${capaid.tail}]
        !           219: 	}
        !           220: 	default { ids.main }
        !           221:     }
        !           222: }
        !           223: 
        !           224: main

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>