apm_serve_docs conn dirWhat it does:
Serves a documentation file, or index pages.Defined in: /web/philip/packages/acs-core/apm-admin-procs.tcl
Source code:
set url [ns_conn url] if { [string compare [string range $url 0 [expr { [string length $dir] - 1 }]] $dir] } { # The URL doesn't seem to begin with the directory we expect! Wacky. ns_returnnotfound return } # Clip the registered path off the URL. set url [string range $url [string length $dir] [string length $url]] if { [empty_string_p $url] } { # Requested something like "/apm/doc" - no trailing slash. Append one and redirect. ad_returnredirect "[ns_conn url]/" return } if { ![string compare $url "/"] } { # Requested something like "/apm/doc/" - serve up the index page. ReturnHeaders ns_write "[ad_header "Package Documentation"] <h3>Package Documentation</h3> [ad_context_bar_ws "Package Documentation"] <hr> <ul> " set out "" db_foreach "select * from apm_enabled_package_versions" { set doc_files [apm_version_file_list -type "documentation" $version_id] if { [llength $doc_files] == 0 } { append out "<li><b>$package_name $version_name</b> - $summary\n" } elseif { [llength $doc_files] == 1 } { append out "<li><b><a href=\"$package_key/[file tail [lindex $doc_files 0]]\">$package_name $version_name</a></b> - $summary\n" } else { append out "<li><b>$package_name $version_name</b> - $summary\n<ul>\n" foreach file $doc_files { append out "<li><a href=\"$package_key/[file tail $file]\">[file tail $file]</a>\n" } append out "</ul>\n" } } append out "</ul>\n[ad_footer]\n" ns_write $out } elseif { [regexp {^/([^/]+)/([^/]+)$} $url "" package_key tail] } { db_foreach " select path from apm_package_files where version_id in ( select version_id from apm_packages p, apm_package_versions v where p.package_id = v.package_id and p.package_key = '[db_quote $package_key]' and v.enabled_p = 't' ) and file_type = 'documentation' and path like '%/[db_quote $tail]' " { if { ![info exists real_path] && ![string compare [lindex [split $path "/"] end] $tail] } { set real_path "[acs_root_dir]/$path" } } if { ![info exists real_path] } { ns_returnnotfound return } # Borrow from abstract-url-procs.tcl. Eventually the abstract URL stuff will push # this stuff out into its own procedure. set extension [file extension $real_path] if { $extension == ".tcl" } { # Tcl file - use source. aurl_eval [list source $real_path] } elseif { $extension == ".adp" } { if { ![aurl_eval [list ns_adp_parse -file $real_path] adp] } { return } set content_type [ns_set iget [ns_conn outputheaders] "content-type"] if { $content_type == "" } { set content_type "text/html" } ns_return 200 $content_type $adp } else { # Some other random kind of find - return it. ns_returnfile 200 [ns_guesstype $real_path] $real_path } }