chat_scope_context_bar_ws_or_index

one of the documented procedures in this installation of the ACS
Usage:
chat_scope_context_bar_ws_or_index   chat_room_id   args
What it does:
assumes scope is set in the callers environment. if scope=group, it assumes that group_context_bar_list are set in the callers environment. returns a Yahoo-style hierarchical contextbar for appropriate scope, starting with a link to either the workspace or /, depending on whether or not the user is logged in. Makes sure that everytime a link on the context bar is clicked, it is noted that the user has left the room
Defined in: /web/philip/tcl/chat-defs.tcl

Source code:


    if { [ad_get_user_id] == 0 } {
	set choices [list "<a href=\"exit-room?[export_url_scope_vars chat_room_id]&newlocation=/\">[ad_system_name]</a>"] 
    } else {
	set choices [list "<a href=\"exit-room?[export_url_scope_vars chat_room_id]&newlocation=[ad_pvt_home]\">Your Workspace</a>"]
    }

    set all_args [list]

    if { [uplevel [ad_scope_upvar_level] {info exists scope}] } {
	upvar [ad_scope_upvar_level] scope scope
    } else {
	set scope public
    }

    switch $scope {
	public {
	    set all_args $args
	}
	group {
	    upvar [ad_scope_upvar_level] group_vars_set group_vars_set
	    set group_context_bar_list [ns_set get $group_vars_set group_context_bar_list]
	    eval "lappend all_args $group_context_bar_list"
	    foreach arg $args {
		lappend all_args $arg
	    }
	}
	user {
	    # this may be later modified if we allow users to customize the display of their pages	    
	    set all_args $args
	}
    }

    set index 0
    foreach arg $all_args {
	incr index
	if { $index == [llength $all_args] } {
	    lappend choices $arg
	} else {
	    lappend choices "<a href=\"exit-room?[export_url_scope_vars chat_room_id]&newlocation=[lindex $arg 0]\">[lindex $arg 1]</a>"
	}
    }
    return [join $choices " : "]


philg@mit.edu