Skip to content

Commit

Permalink
Move web stuff to its own namespace for collission management with
Browse files Browse the repository at this point in the history
macnugget_web stuff.
  • Loading branch information
nugget committed Feb 27, 2012
1 parent 7eeb973 commit 54248ab
Show file tree
Hide file tree
Showing 13 changed files with 173 additions and 169 deletions.
2 changes: 1 addition & 1 deletion packages/ergkeeper/config.tcl.default
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
array set DB {
array set ergDB {
dbname ergkeeper
host localhost
port 5432
Expand Down
216 changes: 110 additions & 106 deletions packages/ergkeeper/web.tcl
Original file line number Diff line number Diff line change
@@ -1,143 +1,145 @@
package require uuid
package require form

proc page_init {} {
set ::db [dbconnect DB]
unset -nocomplain ::session ::user
namespace eval ::ergkeeper {
proc page_init {} {
set ::db [dbconnect ergDB]
unset -nocomplain ::session ::user

load_config
array set ::session [get_session]
}
load_config
array set ::session [get_session]
}

proc page_term {} {
dbdisconnect
abort_page
}
proc page_term {} {
dbdisconnect
abort_page
}

proc page_head {{title "ErgKeeper"}} {
puts "<html>"
puts "<head>"
puts "<title>$title</title>"
puts {<link rel="stylesheet" href="/css/default.css" type="text/css" />}
puts {<link rel="shortcut icon" href="/favicon.ico" />}
puts "</head>"
puts "<body>"

puts "<div class=\"header\">"
puts "<a href=\"/\"><img class=\"topimage\" border=\"0\" src=\"/images/logo-xparent.png\" /></a>"

set menu {/about "About ErgKeeper" /upload "Upload" /chooser "Post" /privacy "Privacy"}

if {[info exists ::user(id)]} {
if {[info exists ::rkprofile(small_picture)]} {
set img_url $::rkprofile(small_picture)
} else {
set img_url "/images/userpic.jpg"
}
lappend menu "/logout"
lappend menu "Logout <span style=\"font-weight: normal;\">(<img class=\"topuser\" height=\"20\" width=\"20\" src=\"$img_url\" /> $::rkprofile(name))</span>"
proc page_head {{title "ErgKeeper"}} {
puts "<html>"
puts "<head>"
puts "<title>$title</title>"
puts {<link rel="stylesheet" href="/css/default.css" type="text/css" />}
puts {<link rel="shortcut icon" href="/favicon.ico" />}
puts "</head>"
puts "<body>"

puts "<div class=\"header\">"
puts "<a href=\"/\"><img class=\"topimage\" border=\"0\" src=\"/images/logo-xparent.png\" /></a>"

set menu {/about "About ErgKeeper" /upload "Upload" /chooser "Post" /privacy "Privacy"}

if {[info exists ::user(id)]} {
if {[info exists ::rkprofile(small_picture)]} {
set img_url $::rkprofile(small_picture)
} else {
set img_url "/images/userpic.jpg"
}
lappend menu "/logout"
lappend menu "Logout <span style=\"font-weight: normal;\">(<img class=\"topuser\" height=\"20\" width=\"20\" src=\"$img_url\" /> $::rkprofile(name))</span>"

#puts "<a href=\"/logout\" class=\"topuser\">Logout <span style=\"font-weight: normal;\">(<img class=\"topuser\" height=\"20\" width=\"20\" src=\"$img_url\" /> $::rkprofile(name))</span></a>"
}
#puts "<a href=\"/logout\" class=\"topuser\">Logout <span style=\"font-weight: normal;\">(<img class=\"topuser\" height=\"20\" width=\"20\" src=\"$img_url\" /> $::rkprofile(name))</span></a>"
}

foreach {uri label} $menu {
puts "<a href=\"$uri\" class=\"topmenu\">$label</a> "
}
foreach {uri label} $menu {
puts "<a href=\"$uri\" class=\"topmenu\">$label</a> "
}


puts "</div>"
puts "<div class=\"body\">"
}
puts "</div>"
puts "<div class=\"body\">"
}

proc page_foot {} {
puts "</div>"
proc page_foot {} {
puts "</div>"

if {0} {
puts "<p>debug:</p>"
foreach a {::session ::user ::rkuser ::rkprofile} {
if {[info exists $a]} {
parray $a
if {0} {
puts "<p>debug:</p>"
foreach a {::session ::user ::rkuser ::rkprofile} {
if {[info exists $a]} {
parray $a
}
}
}

# puts "<div class=\"footer\">&copy; Copyright 2012 David C. McNett. All Rights Reserved.</div>"
puts "</body>"
puts "</html>"
}

# puts "<div class=\"footer\">&copy; Copyright 2012 David C. McNett. All Rights Reserved.</div>"
puts "</body>"
puts "</html>"
}
proc load_user {id} {
array set ::user {}

proc page_response {} {
uplevel 1 {
unset -nocomplain response
load_response
if {[info exists id] && $id != "" && [ctype digit $id]} {
pg_select $::db "SELECT * FROM users WHERE id = $id" buf {
array set ::user [array get buf {[a-z]*}]

if {![array exists response]} {
array set response {}
if {[info exists ::user(runkeeper_oauth_token)]} {
lassign [runkeeper_request user] success arrayinfo details
array set ::rkuser $arrayinfo
lassign [runkeeper_request profile] success arrayinfo details
array set ::rkprofile $arrayinfo
}
}
}
}
}

proc load_user {id} {
array set ::user {}
proc get_session {} {
set session [cookie get ergkeeper_session]

if {[info exists id] && $id != "" && [ctype digit $id]} {
pg_select $::db "SELECT * FROM users WHERE id = $id" buf {
array set ::user [array get buf {[a-z]*}]

if {[info exists ::user(runkeeper_oauth_token)]} {
lassign [runkeeper_request user] success arrayinfo details
array set ::rkuser $arrayinfo
lassign [runkeeper_request profile] success arrayinfo details
array set ::rkprofile $arrayinfo
if {$session != ""} {
pg_select $::db "SELECT * FROM sessions WHERE session = [pg_quote $session]" buf {
array set ::session [array get buf {[a-z]*}]
load_user $buf(user_id)
update_session $session
return [array get ::session]
}
}
}
}

proc get_session {} {
set session [cookie get ergkeeper_session]
if {![info exists ::session]} {
set ins(session) [::uuid::uuid generate]
set ins(source) [env SERVER_NAME]
set ins(referer) [env HTTP_REFERER]
set ins(ip_create) [env REMOTE_ADDR]
set ins(ip_recent) $ins(ip_create)
set ins(agent_create) [env HTTP_USER_AGENT]
set ins(agent_recent) $ins(agent_create)

if {[sql_insert_from_array sessions ins]} {
cookie set ergkeeper_session $ins(session) -path "/" -days 3650
}

if {$session != ""} {
pg_select $::db "SELECT * FROM sessions WHERE session = [pg_quote $session]" buf {
array set ::session [array get buf {[a-z]*}]
load_user $buf(user_id)
update_session $session
return [array get ::session]
unset -nocomplain ::session
pg_select $::db "SELECT * FROM sessions WHERE session = [pg_quote $ins(session)]" buf {
return [array get buf {[a-z]*}]
}
}

return {session ""}
}

if {![info exists ::session]} {
set ins(session) [::uuid::uuid generate]
set ins(source) [env SERVER_NAME]
set ins(referer) [env HTTP_REFERER]
set ins(ip_create) [env REMOTE_ADDR]
set ins(ip_recent) $ins(ip_create)
set ins(agent_create) [env HTTP_USER_AGENT]
set ins(agent_recent) $ins(agent_create)

if {[sql_insert_from_array sessions ins]} {
cookie set ergkeeper_session $ins(session) -path "/" -days 3650
}
proc update_session {id} {
set sql "UPDATE sessions SET ip_recent = [pg_quote [env REMOTE_ADDR]], agent_recent = [pg_quote [env HTTP_USER_AGENT]] WHERE session = [pg_quote $id]"
sql_exec $::db $sql
}

unset -nocomplain ::session
pg_select $::db "SELECT * FROM sessions WHERE session = [pg_quote $ins(session)]" buf {
return [array get buf {[a-z]*}]
proc require_login {} {
if {![info exists ::user(id)]} {
puts [runkeeper_login_button]
page_foot
page_term
}
}

return {session ""}
}

proc update_session {id} {
set sql "UPDATE sessions SET ip_recent = [pg_quote [env REMOTE_ADDR]], agent_recent = [pg_quote [env HTTP_USER_AGENT]] WHERE session = [pg_quote $id]"
sql_exec $::db $sql
}
proc page_response {} {
uplevel 1 {
unset -nocomplain response
load_response

proc require_login {} {
if {![info exists ::user(id)]} {
puts [runkeeper_login_button]
page_foot
page_term
if {![array exists response]} {
array set response {}
}
}
}
}

Expand Down Expand Up @@ -178,5 +180,7 @@ proc head {buf {level 2}} {
return "<h$level>$buf</h$level>"
}



package provide ergkeeper 1.0

10 changes: 5 additions & 5 deletions webroot/about.rvt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?
package require ergkeeper

page_init
page_response
page_head "About ErgKeeper"
::ergkeeper::page_init
::ergkeeper::page_response
::ergkeeper::page_head "About ErgKeeper"

puts [head "Frequently Asked Questions"]

Expand Down Expand Up @@ -56,6 +56,6 @@
</p>
}

page_foot
page_term
::ergkeeper::page_foot
::ergkeeper::page_term
?>
10 changes: 5 additions & 5 deletions webroot/auth_revoke.rvt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?
package require ergkeeper

page_init
page_response
page_head
::ergkeeper::page_init
::ergkeeper::page_response
::ergkeeper::page_head


page_foot
page_term
::ergkeeper::page_foot
::ergkeeper::page_term
?>
10 changes: 5 additions & 5 deletions webroot/auto_upload.rvt
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@

package require ergkeeper

page_init
page_response
::ergkeeper::page_init
::ergkeeper::page_response

if {![var exists csvdata]} {
puts {<form enctype="multipart/form-data" method="post">}
puts {<input type="file" name="csvdata" size="40" />}
puts {<input type="submit" value="Upload CSV" />}
puts {</form>}
page_foot
page_term
::ergkeeper::page_foot
::ergkeeper::page_term
}

set fh [upload channel csvdata]
Expand All @@ -27,5 +27,5 @@
puts "$log"

after 2000
page_term
::ergkeeper::page_term
?>
12 changes: 6 additions & 6 deletions webroot/chooser.rvt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?
package require ergkeeper

page_init
page_response
page_head "ErgKeeper: Activity Chooser"
::ergkeeper::page_init
::ergkeeper::page_response
::ergkeeper::page_head "ErgKeeper: Activity Chooser"

if {[info exists response(weeks)] && [string is integer $response(weeks)]} {
set weeks $response(weeks)
Expand All @@ -13,7 +13,7 @@
set title "Week"
}

require_login
::ergkeeper::require_login

puts [head "Unposted Activities from the past $title"]

Expand Down Expand Up @@ -46,6 +46,6 @@
myform end
myform destroy

page_foot
page_term
::ergkeeper::page_foot
::ergkeeper::page_term
?>
10 changes: 5 additions & 5 deletions webroot/code.rvt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?
package require ergkeeper

page_init
page_response
page_head
::ergkeeper::page_init
::ergkeeper::page_response
::ergkeeper::page_head

page_foot
page_term
::ergkeeper::page_foot
::ergkeeper::page_term
?>
Loading

0 comments on commit 54248ab

Please sign in to comment.