namespace eval ::page { proc clear {} { array set ::page { user anonymous username anonymous userid anonymous object ::community title {} print 0 redirect {} layout page javascript {} menuNavigation {} menuCommand {} menuSearch {} menuBackground {} error 0 error_message {} errorInfo {} content {} } colors } proc menu {} { set result {} if { [set nav [get ::page(menuNavigation)]] != {} } { append result \n "
$nav
" } append result \n "
[clock format [clock seconds] -format "%A, %B %d %I:%M%p"]
" append result \n {
} if { [set menuCommand [get ::page(menuCommand)]] != {} } { append result "" } if { [set selectform [::page selectform]] != {} } { append result "" } elseif {[set menuSearch [get ::page(menuSearch)]] != {} } { append result "" } append result
${menuCommand}|${selectform}|${menuSearch}
return $result } proc colors {} { array unset ::colors array set ::colors [::ColorScheme] set ::page(menuBackground) "bgcolor=$::colors(bgcolor)" set ::page(background) "bgcolor=$::colors(maincolor)" } proc render {container node method queryDict} { ::page::clear set ::query {} set ::query $queryDict ::page query $queryDict if [catch {::security::urlPrelim} result] { return $result } ::page::colors set result {} if { $container != $node } { if { $node == {} } { set object $container set method noNodeSelected } else { set object [$object /node $node] if { $method == {} } { set method [$object defaultMethod] } set method [$object htmlMethod $method] } } else { set object $node } ::page object $object ::page container $container set errstate [catch {$object $method $queryDict} objresult] if { $errstate == 2 } { set errstate 0 } if { $errstate } { ::page layout error ::page errorInfo $::errorInfo } ::page content $objresult if { [::page redirect] != {} } { ::page layout redirect } ::page selectform {} ::page menuNavigation [menuNavigation $container $object] ::page menuCommand [menuCommand $container $object $method] ::page menuSearch [menuSearch $container $object] puts [list pageRender $container $object $method $errstate [::page layout]] set result [subst [::html-style::template [::page layout]]] ::security::urlPostlim if [thanatos knock] { thanatos cleanup } return $result } proc menuCommand {container object currentmethod} { global colors set bottomMenu {} if { $object != {} } { set cname [$object globalName] set containerUrl [$container ModuleUrl] set menulist [$object menuMethods] if { $container == $object } { foreach method $menulist { if { $currentmethod == $method } { append bottommenu " $method " } else { append bottommenu " [::html-style::button $method ${containerUrl}?node=${cname}&method=${method}] " } } } else { foreach {url method} $menulist { if { [get currentMethod] == $method } { append bottommenu " $method " } else { append bottommenu " [::html-style::button $method ${containerUrl}${url}] " } } } } return $bottommenu } proc menuNavigation {container object} { global colors set leftmenu "" set row 0 set sectionlist {} set sectiondata(Record) {} ladd sectionlist Site lappend sectiondata(Site) {Home} /home {} lappend sectiondata(Site) {Search} /home/search {} foreach {section url label} [GlobalLinks] { ladd sectionlist $section lappend sectiondata($section) $label $url {} } if { $object != {} && $object != $container } { ### # Build the leftmenu #### foreach {section url label} [$object menuNavigation] { ladd sectionlist $section lappend sectiondata($section) $label $url {} } } lappend sectiondata(Site) {Test} /home {Test /home {Test /home {}}} {
} {} {} {Log Out} /login/logout {} lappend sectiondata(Site) {
} {} {} {Log Out} /login/logout {} set url_list {} set mresult {} foreach sect $sectionlist { lappend mresult $sect {} $sectiondata($sect) } return [::html-style::dropmenu $mresult] } proc menuSearch {container object} { set bottommenu {} if { $object != {} && $object != $container } { set gname [$object NodeId] append bottommenu [$container menuSearchForm $gname] } return $bottommenu } proc GlobalLinks {} { lappend result Site /home {Home} Site /home/search {Search} #set uobj [/node [CurrentUser]] set user [CurrentUser] set ucon [tdif Container users] lappend result Site [$ucon nodeUrl $user] [$ucon nodeSummary $user] foreach node [get ::global_nodes] { set cobj [tdif Container $node] set url [$cobj nodeUrl $node] set label [$cobj nodeSummary $node] if { $label == {} } { set label $node } lappend result Databases $url $label } foreach {section url label} [community GlobalLinks] { lappend result $section $url $label } } } proc ::page {field {newvalue NULL}} { if { $newvalue == "NULL" } { return [lindex [array get ::page $field] 1] } set ::page($field) $newvalue return $newvalue }