Index: openacs-4/contrib/misc/o.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/misc/o.vuh,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/contrib/misc/o.vuh 28 Nov 2003 15:07:54 -0000 1.1 @@ -0,0 +1,66 @@ +ad_page_contract { + This page will accect an object_id and try to resolve the + package dealing with this object and then invoking a + registered proc through the service contract which will + return the package-specific page to display the object. + + This can help in listing objects without having to resolve + the correct url. + + @see categories/doc/o.html for more details on what why and how +} { +} + +if ![regexp {^([0-9]+)(-(.+))?$} [ad_conn path_info] match object_id dummy anchor] { + ad_return_warning "Invalid object_id" [subst { + We could not find this object. This probably means that + the link you have clicked is broken. +

We are sorry for this inconvenience. + }] + return +} + +if ![empty_string_p $anchor] { set anchor "#$anchor" } + +db_0or1row object_data { + select o.object_type, n.object_name, n.package_id + from acs_objects o, acs_named_objects n + where o.object_id = :object_id + and n.object_id = o.object_id +} + +if ![info exists object_type] { + ad_return_warning "Invalid object ID" [subst { + The object ID $object_id doesn't exist. +

We are sorry for this inconvenience. + }] + return +} + +set package_urls [site_node::get_url_from_object_id -object_id $package_id] + +if {[llength $package_urls] == 0} { + ad_return_warning "Unable to resolve url" [subst { + Unfortunately we couldn't come up with a url for [ad_quotehtml $object_name]. +

+ We are sorry for this inconvenience. + }] + return +} + +# If there is more than one URL, we pick the first one. +set pkg_url [lindex $package_urls 0] +set impl "$object_type\_idhandler" + +if {![acs_sc_binding_exists_p AcsObject $impl]} { + ad_return_warning "Unable to resolve url" [subst { + Unfortunately we couldn't come up with a url for [ad_quotehtml $object_name]. +

+ We are sorry for this inconvenience. + }] + return +} + +set page_url [acs_sc::invoke -contract AcsObject -operation PageUrl -impl $impl -call_args $object_id] + +ad_returnredirect "$pkg_url$page_url$anchor"