set datafile guest
load_response response
proc emit_guestbook {display} {
global datafile webenv response
set scriptname $webenv(DOCUMENT_NAME)
html "View Guestbook"
set num_to_show $display
set idlist [dbkeys $datafile *]
if {[catch {set idlist [dbkeys $datafile *]} firsttime] != 0} {
set num_ids 0
set first_id 0
} else {
set num_ids [llength $idlist]
set sorted_ids [lsort -integer $idlist]
if {$num_to_show > $num_ids} {set num_to_show $num_ids}
set first_id [expr $num_ids - $num_to_show]
if {$first_id < 0} {set first_id 0}
set work_ids [lrange $sorted_ids $first_id end]
html "These are the last $num_to_show, of $num_ids"
html " people, who were kind enough to sign our guestbook
"
html "
"
foreach id [lsort -integer -decreasing $work_ids] {
dbfetch $datafile $id dbarray
html ""
html "
"
html ""
html " $id) "
html "$dbarray(name) "
html ""
html "$dbarray(email) | "
html " $dbarray(comments)
| "
html "
"
html "Entry made at "
html "[clock format $dbarray(time) -format $webenv(NEO_TIME_FORMAT)]"
html " using $dbarray(user_agent) "
html "from $dbarray(remote_host) | "
html
html
neo_form edit "method=post action=$scriptname"
neo_form_field hidden id "value=$id"
neo_form_field hidden mode "value=edit"
neo_form_submit "Edit $id"
neo_form_end
html |
neo_form delete "method=post action=$scriptname"
neo_form_field hidden id "value=$id"
neo_form_field hidden mode "value=delete"
neo_form_submit "Delete $id"
neo_form_end
html |
html
html
}
}
}
proc edit_entry {} {
global datafile webenv response
set scriptname $webenv(DOCUMENT_NAME)
dbfetch $datafile $response(id) response
neo_form response "method=post action=$scriptname"
neo_form_field hidden mode "value=check_entry"
neo_form_field hidden id
neo_form_field hidden remote_host
neo_form_field hidden time
neo_form_field hidden user_agent
html
html
html "Your name: | "
html
neo_form_field text name "size=30"
html |
html
html "Your email address: | "
html
neo_form_field text email "size=30"
html |
html
html "Your URL: | "
html
neo_form_field text url "size=30"
html |
html
html "Enter your comments here: "
neo_form_textarea comments "rows=6 cols=55"
html
html
html "Thanks for taking the time to fill out our guestbook."
html
html
neo_form_submit "Done"
html |
neo_form_end
}
proc delete_entry {} {
global datafile webenv response
dbfetch $datafile $response(id) dbarray
html
html "Delete Entry #$response(id) by $dbarray(name)?"
html
html $dbarray(comments)
neo_form kill "method=post action=$webenv(DOCUMENT_NAME)"
neo_form_field hidden mode "value=kill"
neo_form_field hidden id "value=$response(id)"
neo_form_submit "Yes"
neo_form_end
html
}
proc kill_entry {target} {
global datafile
dbdelkey $datafile $target
}
proc check_entry {} {
global datafile webenv response
set scriptname $webenv(DOCUMENT_NAME)
html "If everything is correct, click the Save It! button."
html "
"
html "
"
html ""
html " $response(id) $response(name) "
html "$response(email) | "
html " $response(comments)
| "
html "
"
html "Entry made at [clock format $response(time) -format $webenv(NEO_TIME_FORMAT)]"
html " using $response(user_agent) from $response(remote_host) | "
html "
"
html "
"
html ""
}
proc thank_you {} {
global datafile webenv response
set scriptname $webenv(DOCUMENT_NAME)
html "Edit Guestbook | View Guestbook"
unset response(mode)
set id $response(id)
unset response(id)
if {[catch {set idlist [dbkeys $datafile *]} firsttime] != 0} {
set num_entries 0
} else {
set num_entries [lindex [lsort -integer $idlist] end]
}
dbstore $datafile $id response
}
set num_entries [llength [dbkeys $datafile *]]
if {![array exists response]} {
emit_guestbook $num_entries
} elseif {[string compare $response(mode) emit_guestbook] == 0} {
emit_guestbook $num_entries
} elseif {[string compare $response(mode) edit] == 0} {
edit_entry
} elseif {[string compare $response(mode) delete] == 0} {
delete_entry
} elseif {[string compare $response(mode) kill] == 0} {
kill_entry $response(id)
emit_guestbook $num_entries
} elseif {[string compare $response(mode) check_entry] == 0} {
check_entry
} elseif {[string compare $response(mode) thank_you] == 0} {
thank_you
}