ad_page_contract { packages/forums/www/index.vuh @author Roberto Mello @creation-date 2002-11-04 Virtual URL Handler to serve pretty URLs to forums. } # Get a list with the whole request (e.g. {{forums} {message-view?12345}} ) set request [ad_conn urlv] # Get the URL where this instance of the forums package is mounted # without /'s regsub -all "/" [ad_conn package_url] "" package # Find index in the request list where the package url is set package_index [lsearch $request $package] # The next 2 elements in the list are what we want to look at set url_1st_elem [lindex $request [expr $package_index + 1]] set url_2nd_elem [lindex $request [expr $package_index + 2]] set url_3rd_elem [lindex $request [expr $package_index + 3]] set url_4th_elem [lindex $request [expr $package_index + 4]] ns_log notice "REQ: '$request', pk: '$package', pi: '$package_index', u1: '$url_1st_elem', u2: '$url_2nd_elem', u3: '$url_3rd_elem', u4: '$url_4th_elem'" # I don't like that many levels of nesting either, but it was the # simplest way I could think of at the moment. # If the user types a trailing /, we need to redirect so the links # won't be all screwed. if { ![empty_string_p $url_2nd_elem] } { if { [string equal $url_2nd_elem "message"] == 1 } { if { [string is digit $url_3rd_elem] == 1 } { if { [empty_string_p $url_4th_elem] } { # Add message_id to form, so it can be processed rp_form_put message_id $url_3rd_elem rp_internal_redirect message-view } else { rp_internal_redirect [join [lrange $request [expr $package_index + 4] end] "/"] } } else { rp_internal_redirect [join [lrange $request [expr $package_index + 3] end] "/"] } } } ns_log notice "REQ: Past 1st IF" if { ![empty_string_p $url_1st_elem] } { if { ![empty_string_p $url_2nd_elem] } { ns_log notice "REQ: Into 2nd ELSE" rp_internal_redirect [join [lrange $request [expr $package_index + 2] end] "/"] } ns_log notice "REQ: Looking for '$url_1st_elem'" switch -exact -- $url_1st_elem { "openacs" { rp_form_put forum_id 14013 } "openacs-dev" { rp_form_put forum_id 14014 } "openacs-cms" { rp_form_put forum_id 14015 } "openacs-testing" { rp_form_put forum_id 14016 } "dotlrn-dev" { rp_form_put forum_id 14017 } "cvs" { rp_form_put forum_id 46408 } } rp_internal_redirect forum-view }