Commit 86841d43 authored by Frank Bergmann's avatar Frank Bergmann

Initial Import

parents
Pipeline #30 failed with stages
<?xml version="1.0"?>
<!-- Generated by the OpenACS Package Manager -->
<package key="acs-api-browser" url="http://openacs.org/repository/apm/packages/acs-api-browser/" type="apm_service">
<package-name>API Browser</package-name>
<pretty-plural>API Browsers</pretty-plural>
<initial-install-p>t</initial-install-p>
<singleton-p>t</singleton-p>
<version name="5.1.5" url="http://openacs.org/repository/download/apm/acs-api-browser-5.1.5.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>Interactive documentation for the Tcl and SQL APIs.</summary>
<release-date>2004-02-28</release-date>
<maturity>3</maturity>
<vendor url="http://openacs.org">OpenACS</vendor>
<description format="text/html">On line interactive documentation for the locally installed Tcl and SQL APIs. Links to the Tcl core and AOLServer online documentation as well.</description>
<provides url="acs-api-browser" version="5.1.4"/>
<requires url="acs-kernel" version="5.0.0"/>
<callbacks>
</callbacks>
<parameters>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="FancySourceFormattingP" default="1" description="Should we highlight syntax and hyperlink procedure names when showing procedure source code? (1 for yes, 0 for no)"/>
</parameters>
</version>
</package>
<table border="0" cellspacing="12" cellpadding="4">
<tr bgcolor="#DDDDDD">
<td>
<table>
<form action="@openacs_search_url@" method="get">
<tr>
<td valign="top">
<h4>OpenACS Tcl API Search</h4>
<input type="text" name="query_string" value="@query_string@"/><br />
<input type="submit" value="All matches" name="search_type" />
<input type="submit" value="Only best match" name="search_type" />
<p><a href="@openacs_browse_url@">Browse OpenACS Tcl API</a></p>
</td>
<td>
<table cellspacing="0" cellpadding="0">
<tr><td align="right">Name contains:</td>
<td><input type="radio" name="name_weight" value="5" checked="checked" /> </td></tr>
<tr><td align="right">Exact name:</td>
<td><input type="radio" name="name_weight" value="exact" /></td></tr>
<tr><td align="right">&nbsp;</td><td>&nbsp;</td></tr>
<tr><td align="right">Parameters:</td>
<td><input type="checkbox" name="param_weight" value="3" checked="checked" /></td></tr>
<tr><td align="right">Documentation:</td>
<td><input type="checkbox" name="doc_weight" value="2" checked="checked" /></td></tr>
<tr><td align="right">Source:</td>
<td><input type="checkbox" name="source_weight" value="1" /></td></tr>
</table>
</td>
</tr>
</form>
</table>
</td>
</tr>
<tr bgcolor="#DDDDDD">
<td colspan="2">
<h4>OpenACS PL/SQL API Search</h4>
<p><a href="@openacs_plsql_browse_url@">Browse OpenACS PL/SQL API</a></p>
</td>
</tr>
<form action="@aolserver_search_url@" method="get">
<tr bgcolor="#DDDDDD">
<td colspan="2">
<h4>AOLserver Tcl API Search</h4>
<input type="text" name="tcl_proc" />
<input type="submit" value="Go" /><br />
(enter <em>exact</em> procedure name)<br />
<a href="@aolserver_tcl_api_root@">Browse AOLserver Tcl API</a>
</td>
</tr>
</form>
<form action="@tcl_search_url@" method="get">
<tr bgcolor="#DDDDDD">
<td colspan="2">
<h4>Tcl Documentation Search</h4>
<input type="text" name="tcl_proc" />
<input type="submit" value="Go" /><br />
(enter <em>exact</em> procedure name)<br />
<a href="@tcl_docs_root@">Browse the Tcl documentation</a>
</td>
</tr>
</form>
<if @db_doc_search_url@ not nil>
<form action="@db_doc_search_url@" method="get">
@db_doc_search_export;noquote@
</if>
<tr bgcolor="#DDDDDD">
<td colspan="2">
<if @db_doc_search_url@ not nil>
<h4>@db_pretty@ Search</h4>
<input type="text" name="@db_doc_search_query_name@" />
<input type="submit" value="Go" /><br />
</if>
<else>
<h4>@db_pretty@ Documentation</h4>
</else>
<a href="@db_doc_url@">Browse the @db_pretty@ documentation</a>
</td>
</tr>
<if @db_doc_search_url@ not nil>
</form>
</if>
<tr bgcolor="#DDDDDD">
<td colspan="2">
<h4>OpenACS and Package Documentation</h4>
<a href="/doc">Browse OpenACS documentation</a>
</td>
</tr>
</table>
#
# API Browser search widget
#
# @cvs-id $Id$
#
# Expects: query_string:optional
#
if { ![info exists query_string] } {
set query_string {}
}
set aolserver_tcl_api_root "http://www.aolserver.com/docs/devel/tcl/api/"
set tcl_docs_root "http://tcl.tk/man/tcl[info tclversion]/TclCmd/contents.htm"
set package_url [apm_package_url_from_key "acs-api-browser"]
set openacs_search_url "${package_url}proc-search"
set openacs_browse_url "${package_url}proc-browse"
set openacs_plsql_browse_url "${package_url}plsql-subprograms-all"
set aolserver_search_url "${package_url}tcl-proc-view"
set tcl_search_url "${package_url}tcl-doc-search"
switch [db_type] {
postgresql {
set db_pretty "PostgreSQL [db_version]"
set db_doc_url "http://www.postgresql.org/docs/[db_version]/interactive/index.html"
set db_doc_search_url "http://search.postgresql.org/www.search"
set db_doc_search_export [export_vars -form { { ul "http://www.postgresql.org/docs/[db_version]/static/%" } }]
set db_doc_search_query_name "q"
}
oracle {
set db_pretty "Oracle [db_version]"
# Oracle docs require login, can't offer direct search link
switch -glob [db_version] {
8.1.7 {
set db_doc_url "http://otn.oracle.com/documentation/oracle8i.html"
set db_doc_search_url "http://otn.oracle.com/pls/tahiti/tahiti.drilldown"
set db_doc_search_export ""
set db_doc_search_query_name "word"
}
8.1.6 {
set db_doc_url "http://otn.oracle.com/documentation/oracle8i_arch_816.html"
}
9* {
set db_doc_url "http://otn.oracle.com/documentation/oracle9i.html"
set db_doc_search_url "http://otn.oracle.com/pls/db92/db92.drilldown"
set db_doc_search_export ""
set db_doc_search_query_name "word"
}
}
}
}
This diff is collapsed.
ad_library {
Automated tests.
@author Joel Aufrecht
@creation-date 2 Nov 2003
@cvs-id $Id$
}
aa_register_case \
-cats {api smoke} \
acs_api_browser_trivial_smoke_test {
Minimal smoke test for acs-api-browser package.
} {
aa_run_with_teardown \
-rollback \
-test_code {
set result [api_library_documentation packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl]
aa_true "api documentation proc can document itself" \
[ string match "*packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl*" $result]
}
}
\ No newline at end of file
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
@script_documentation;noquote@
<if @xql_links:rowcount@ gt 0>
<h4>Related Files</h4>
<multiple name="xql_links">
<li><a href="@xql_links.link@">@xql_links.filename@</a></li>
</multiple>
</if>
<p>
<if @source_p@ eq 0>
[ <a href="content-page-view?@url_vars@&amp;source_p=1">show source</a> ]
</if>
<else>
[ <a href="content-page-view?@url_vars@&amp;source_p=0">hide source</a> ]
</else>
<if @source_p@ ne @default_source_p@>
| [ <a href="set-default?source_p=@source_p@&amp;return_url=@return_url@">make this
the default</a> ]
</if>
<if @source_p@ eq 1>
<h4>Content File Source</h4>
<pre>
@file_contents;noquote@
</pre>
</if>
ad_page_contract {
Displays information about a content page.
@param version_id the id of the package version the file belongs to
@param path the path and filename of the page to document, relative to [acs_root_dir]
@author Jon Salz (jsalz@mit.edu)
@author Lars Pind (lars@pinds.com)
@creation-date 1 July 2000
@cvs-id $Id$
} {
version_id:integer,optional
source_p:integer,optional,trim
path
} -properties {
title:onevalue
context:onevalue
script_documentation:onevalue
}
set context [list]
set url_vars [export_url_vars path version_id]
set return_url [ns_urlencode [ad_conn url]?][ns_urlencode $url_vars]
set default_source_p [ad_get_client_property -default 0 acs-api-browser api_doc_source_p]
if { ![info exists source_p] } {
set source_p $default_source_p
}
if { ![info exists version_id] && \
[regexp {^packages/([^ /]+)/} $path "" package_key] } {
db_0or1row version_id_from_package_key {
select version_id
from apm_enabled_package_versions
where package_key = :package_key
}
}
if { [info exists version_id] } {
db_1row package_info_from_version_id {
select pretty_name, package_key, version_name
from apm_package_version_info
where version_id = :version_id
}
lappend context [list "package-view?version_id=$version_id&kind=content" "$pretty_name $version_name"]
}
lappend context [file tail $path]
set filename "[acs_root_dir]/$path"
if {![file exists $filename] || [file isdirectory $filename]} {
set file_contents "file '$filename' not found"
} else {
if { $source_p } {
if {[catch {
set fd [open $filename r]
set file_contents [read $fd]
close $fd
} err ]} {
set file_contents "error opening '$filename'\n$err"
} else {
set file_contents [ad_quotehtml $file_contents]
}
}
template::util::list_to_multirow xql_links [api_xql_links_list $path]
}
set title [file tail $path]
set script_documentation [api_script_documentation $path]
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
<h3>Deprecated Procedures:</h3>
<ul>
<multiple name="deprecated">
<li><a
href=proc-view?proc=@deprecated.proc@>@deprecated.proc@</a> <i>@deprecated.args@</i>
</multiple>
</ul>
<if @deprecated:rowcount@ eq 0>
No deprecated procedures found
</if>
\ No newline at end of file
ad_page_contract {
returns a list of all the deprecated procedures present
in server memory
@author Todd Nightingale
@creation-date 2000-7-14
@cvs-id $Id$
} {
} -properties {
title:onevalue
context:onevalue
deprecated:multirow
}
set title "Deprecated Procedure Search"
set context [list "Deprecated Procedures"]
multirow create deprecated proc args
foreach proc [nsv_array names api_proc_doc] {
array set doc_elements [nsv_get api_proc_doc $proc]
if {$doc_elements(deprecated_p) == 1} {
multirow append deprecated $proc $doc_elements(positionals)
}
}
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
<pre>
@sql@
</pre>
ad_page_contract {
Enables user to see a .sql file without encountering the
AOLserver's db module magic (offering to load the SQL into a database)
or without returning the SQL as content-type application/x-sql.
Patched by philg at Jeff Banks's request on 12/5/99
to close the security hole whereby a client adds extra form
vars.
Patched on 07/06/2000 by deison to restrict access to only
.sql files and only files in /doc or /pageroot.
2000 August 8 Updated for ACS4 packages - richardl@arsdigita.com.
@param url The full relative path of the file to display the source for.
@param package_key The key of the package the file is part of.
@creation-date 12/19/98
@author philg@mit.edu
@cvs-id $Id$
} {
url:notnull
{ version_id "" }
{ package_key ""}
} -properties {
title:onevalue
context:onevalue
sql:onevalue
}
set context [list]
if [exists_and_not_null version_id] {
db_0or1row package_info_from_package_id {
select pretty_name, package_key, version_name
from apm_package_version_info
where version_id = :version_id
}
lappend context [list "package-view?version_id=$version_id&amp;kind=sql_files" "$pretty_name $version_name"]
}
lappend context [file tail $url]
set title "[file tail $url]"
# This is normally a password-protected page, but to be safe let's
# check the incoming URL for ".." to make sure that someone isn't
# doing
# https://photo.net/doc/sql/display-sql.tcl?url=/../../../../etc/passwd
# for example
if { [string match "*..*" $url] || [string match "*..*" $package_key] } {
ad_return_error "Can't back up beyond the pageroot" "You can't use
display-sql.tcl to look at files underneath the pageroot."
return
}
if {[exists_and_not_null package_key]} {
set safe_p [regexp {/?(.*)} $url package_url]
}
if { $safe_p } {
if [catch {
set sql [ad_quotehtml [read [open "[acs_package_root_dir $package_key]/sql/$url"]]]
}] {
ad_return_error "Problem reading file" "There was a problem reading $url"
}
} else {
ad_return_error "Invalid file location" "Can only display files in package or doc directory"
}
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
<div style="float: right;">
<include src="/packages/acs-api-browser/lib/search">
</div>
<h3>Installed Enabled Packages</h3>
<ul>
<multiple name="installed_packages">
<li><a
href="package-view?version_id=@installed_packages.version_id@">@installed_packages.pretty_name@
@installed_packages.version_name@</a></li>
</multiple>
</ul>
<if @disabled_packages:rowcount@ gt 0>
<h3>Disabled Packages</h3>
<multiple name="disabled_packages">
<ul>
<li>@disabled_packages.pretty_name@ @disabled_packages.version_name@</a>
</ul>
</multiple>
</if>
<if @uninstalled_packages:rowcount@ gt 0>
<h3>Uninstalled Packages</h3>
<multiple name="uninstalled_packages">
<ul>
<li>@uninstalled_packages.pretty_name@ @uninstalled_packages.version_name@</a>
</ul>
</multiple>
</if>
<br clear="both">
ad_page_contract {
Offers links to other pages, and lets the user type the name of a specific procedure.
@author Jon Salz (jsalz@mit.edu)
@author Lars Pind (lars@pinds.com)
@cvs-id $Id$
} {
} -properties {
title:onevalue
context:onevalue
installed_packages:multirow
disabled_packages:multirow
uninstalled_packages:multirow
}
set title "API Browser"
set context [list]
db_multirow installed_packages installed_packages_select {
select version_id, pretty_name, version_name
from apm_package_version_info
where installed_p = 't'
and enabled_p = 't'
order by upper(pretty_name)
}
db_multirow disabled_packages disabled_packages_select {
select version_id, pretty_name, version_name
from apm_package_version_info
where installed_p = 't'
and enabled_p = 'f'
order by upper(pretty_name)
}
db_multirow uninstalled_packages uninstalled_packages_select {
select version_id, pretty_name, version_name
from apm_package_version_info
where installed_p = 'f'
and enabled_p = 'f'
order by upper(pretty_name)
}
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
@dimensional_slider;noquote@
<if @kind@ eq "procs_files">
<blockquote>
<table cellspacing="0" cellpadding="0">
<multiple name="procs_files">
<tr valign=top>
<td><b><a href="procs-file-view?version_id=@version_id@&amp;path=@procs_files.full_path@">@procs_files.path@</a></b></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>@procs_files.first_sentence@&nbsp;</td>
</tr>
</multiple>
</table>
</blockquote>
</if>
<if @kind@ eq "procs">
<blockquote>
<table cellspacing="0" cellpadding="0">
<multiple name="procedures">
<tr valign=top>
<td><b><a href="proc-view?version_id=@version_id@&amp;proc=@procedures.proc@">@procedures.proc@</a></b></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>@procedures.first_sentence@&nbsp;</td>
</tr>
</multiple>
</table>
</blockquote>
</if>
<if @kind@ eq "sql_files">
<blockquote>
<table cellspacing="0" cellpadding="0">
<multiple name="sql_files">
<tr valign=top>
<td><b><a href="display-sql?package_key=@package_key@&amp;url=@sql_files.relative_path@&amp;version_id=@version_id@">@sql_files.path@</a></b></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>&nbsp;</td>
</tr>
</multiple>
</table>
</blockquote>
</if>
<if @kind@ eq "content">
<table cellspacing="0" cellpadding="0">
<multiple name="content_pages">
<tr valign=top>
<if @content_pages.content_type@ eq "page">
<td>@content_pages.indentation;noquote@
<b><a href="content-page-view?version_id=@version_id@&amp;path=@content_pages.full_path@">@content_pages.name@</a></b>
<if @content_pages.type@ ne "">
<a href="type-view?type=@content_pages.type@"></a>
</if>
</td>
<td>@content_pages.first_sentence@</td>
</if>
<if @content_pages.content_type@ eq "directory">
<td>@content_pages.indentation;noquote@<b>@content_pages.name@/</b></td>
</if>
</tr>
</multiple>
</table>
</if>
ad_page_contract {
Shows APIs for a particular package.
@param version_id the ID of the version whose API to view.
@param public_p view only public APIs?
@param kind view which type of APIs? One of <code>procs_files</code>,
<code>procs</code> or <code>content</code>.
@author Jon Salz (jsalz@mit.edu)
@creation-date 3 Jul 2000
@cvs-id $Id$
} {
version_id
{ public_p "" }
{ kind "procs_files" }
} -properties {
title:onevalue
context:onevalue
dimensional_slider:onevalue
kind:onevalue
version_id:onevalue
package_key:onevalue
procs_files:multirow
procedures:multirow
sql_files:multirow
content_pages:multirow
}
set public_p [api_set_public $version_id $public_p]
db_1row pretty_name_from_package_id {
select pretty_name, package_key, version_name
from apm_package_version_info
where version_id = :version_id
}
set dimensional_list {
{
kind "Kind:" procs_files {
{ procs_files "Library Files" "" }
{ procs "Procedures" "" }
{ sql_files "SQL Files" "" }
{ content "Content Pages" "" }
}
}
{
public_p "Publicity:" 1 {
{ 1 "Public Only" }
{ 0 "All" }
}
}
}
set title "$pretty_name $version_name"
set context [list $title]
set dimensional_slider "[ad_dimensional \
$dimensional_list \
"" \
[ad_tcl_vars_to_ns_set version_id kind public_p]]"
switch $kind {
procs_files {
array set procs [list]
multirow create procs_files path full_path first_sentence
foreach path [apm_get_package_files -package_key $package_key -file_types tcl_procs] {
set full_path "packages/$package_key/$path"
if { [nsv_exists api_library_doc $full_path] } {
array set doc_elements [nsv_get api_library_doc $full_path]
set first_sentence "[api_first_sentence [lindex $doc_elements(main) 0]]"
} else {
set first_sentence ""
}
multirow append procs_files $path $full_path $first_sentence
}
}
procs {
array set procs [list]
foreach path [apm_version_file_list -type tcl_procs $version_id] {
if { [nsv_exists api_proc_doc_scripts "packages/$package_key/$path"] } {
foreach proc [nsv_get api_proc_doc_scripts "packages/$package_key/$path"] {
set procs($proc) 1
}
}
}
multirow create procedures proc first_sentence
foreach proc [lsort [array names procs]] {
array set doc_elements [nsv_get api_proc_doc $proc]
if { $public_p } {
if { !$doc_elements(public_p) } {
continue
}
}
multirow append procedures $proc [api_first_sentence [lindex $doc_elements(main) 0]]
}
}
sql_files {
multirow create sql_files path relative_path
set file_types [list data_model data_model_create data_model_drop data_model_upgrade]
foreach path [apm_get_package_files -package_key $package_key -file_types $file_types] {
# Set relative path to everything after sql/ (just using
# file tail breaks when you've got subdirs of sql)
regexp {^sql/(.*)} $path match relative_path
multirow append sql_files $path $relative_path
}
}
content {
multirow create content_pages indentation full_path content_type name type first_sentence
set last_components [list]
foreach path [apm_version_file_list -type content_page $version_id] {
set components [split $path "/"]
if { [info exists doc_elements] } {
unset doc_elements
}
# don't stop completely if the page is gone
if { [catch {
set full_path "packages/$package_key/$path"
array set doc_elements [api_read_script_documentation $full_path]
for { set n_same_components 0 } \
{ $n_same_components < [llength $last_components] } \
{ incr n_same_components } {
if { ![string equal [lindex $last_components $n_same_components] \
[lindex $components $n_same_components]] } {
break
}
}
for { set i $n_same_components } { $i < [llength $components] } { incr i } {
set indentation ""
for { set j 0 } { $j < $i } { incr j } {
append indentation "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
}
set name [lindex $components $i]
set type ""
set first_sentence ""
if { $i == [llength $components] - 1 } {
set content_type page
if { [info exists doc_elements(type)] } {
set type $doc_elements(type)
}
if { [info exists doc_elements(main)] } {
set first_sentence [api_first_sentence [lindex $doc_elements(main) 0]]
}
} else {
set content_type directory
}
multirow append content_pages $indentation $full_path $content_type $name $type $first_sentence
}
set last_components $components
} error] } {
ns_log Error "API Broswer: Package View: $error"
# couldn't read info from the file. it probably doesn't exist.
}
}
}
}
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="source_text">
<querytext>
select text
from user_source
where name = upper(:name)
and type = upper(:type)
order by line
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="source_text">
<querytext>
select definition as text
from acs_func_defs
where lower(fname)=lower(:name)
</querytext>
</fullquery>
</queryset>
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
<if @package_slider_list@ ne "">
<table align=right><tr><td>
[ <%= [join $package_slider_list " | "] %> ]
</td></tr></table>
</if>
<blockquote>
<pre>
@source_text@
</pre>
</blockquote>
# /packages/acs-api-browser/www/api-doc/plsql-subprogram-one.tcl
ad_page_contract {
Returns the specification for a given PL/SQL subprogram (package,
procedure, or function).
@param name
@param type
@author Michael Yoon (michael@arsdigita.com)
@creation-date 2000-03-05
@cvs-id $Id$
} {
name
type
} -properties {
title:onevalue
context:onevalue
}
set title $name
set context [list {"plsql-subprograms-all" "All PL/SQL Subprograms"} "One PL/SQL Subprogram"]
set source_text ""
db_foreach source_text "select text
from user_source
where name = upper(:name)
and type = upper(:type)
order by line" {
append source_text $text
}
switch $type {
"PACKAGE" {
set type "PACKAGE BODY"
set package_slider_list [list "package" "<a href=\"[ad_conn url]?[export_url_vars type name]\">package body</a>"]
}
"PACKAGE BODY" {
set type "PACKAGE"
set package_slider_list [list "<a href=\"[ad_conn url]?[export_url_vars type name]\">package</a>" "package body"]
}
default {
set package_slider_list [list]
}
}
# Lowercase looks nicer.
#
set name [string tolower $name]
db_release_unused_handles
ad_return_template
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="all_subprograms">
<querytext>
select object_type as type, object_name as name
from user_objects
where object_type in ('PACKAGE', 'PROCEDURE', 'FUNCTION')
order by
decode(object_type, 'PACKAGE', 0, 'PROCEDURE', 1, 'FUNCTION', 2) asc
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="all_subprograms">
<querytext>
select proname as name, 'FUNCTION' as type
from pg_proc
where proowner=(select usesysid from pg_user
where usename = current_user)
order by proname
</querytext>
</fullquery>
</queryset>
<master>
<property name=title>All PL/SQL Subprograms</property>
<property name="context">@context;noquote@</property>
<multiple name="all_subprograms">
<h2>@all_subprograms.type@</h2>
<ul>
<group column="type">
<li><a href="plsql-subprogram-one?type=<%= [ns_urlencode @all_subprograms.type@] %>&name=<%= [ns_urlencode @all_subprograms.name@] %>"><code><%= [string tolower @all_subprograms.name@] %></code></a></li>
</group>
</ul>
</multiple>
# /packages/api-doc/www/api-doc/plsql-subprograms-all.tcl
ad_page_contract {
Lists all subprograms (packages, procedures, or functions) in the
database.
@author Michael Yoon (michael@arsdigita.com)
@creation-date 2000-08-23
@cvs-id $Id$
} -properties {
title:onevalue
context:onevalue
all_subprograms:multirow
}
set context [list "All PL/SQL Subprograms"]
# Organize the subprograms under three headings: FUNCTION, PROCEDURE,
# and PACKAGE.
db_multirow all_subprograms all_subprograms {
select object_type as type, object_name as name
from user_objects
where object_type in ('PACKAGE', 'PROCEDURE', 'FUNCTION')
order by
decode(object_type, 'PACKAGE', 0, 'PROCEDURE', 1, 'FUNCTION', 2) asc
}
db_release_unused_handles
ad_return_template
\ No newline at end of file
<master>
<property name="title">@title;noquote@</property>
<property name="context">@context;noquote@</property>
@dimensional_slider;noquote@
<ul>
<if @sort_by@ eq "file">
<% set last_file "" %>
<multiple name="proc_list">
<% if { $proc_list(file) != $last_file } { %>
</ul><b>@proc_list.file@</b> <ul>
<% set last_file @proc_list.file@ %>
<% } %>
<li><a href="@proc_list.url@">@proc_list.proc@</a>
</multiple>
</if>
<else>
<multiple name="proc_list">
<li><a href="@proc_list.url@">@proc_list.proc@</a> (defined in @proc_list.file@)
</multiple>
</else>
</ul>
<if @proc_list:rowcount@ eq 0>
Sorry, no procedures found
</if>
<else>
@proc_list:rowcount@ Procedures Found
</else>
# acs-api-browser/www/proc-browse.tcl
ad_page_contract {
returns a list of all the procedures present
in server memory
@author Todd Nightingale
@creation-date 2000-7-14
@cvs-id $Id$
} {
{ type "Public" }
{ sort_by "file"}
} -properties {
title:onevalue
context:onevalue
dimensional_slider:onevalue
proc_list:multirow
}
set dimensional {
{type "Type" "Public" {
{All "All" ""}
{Public "Public" ""}
{Private "Private" ""}
{Deprecated "Deprecated" ""}
} }
{sort_by "Sorted By" "file" {
{file "File" ""}
{name "Name" ""}
} }
}
set title "$type Procedures"
set context [list "Browse Procedures"]
set dimensional_slider [ad_dimensional $dimensional]
set matches [list]
foreach proc [nsv_array names api_proc_doc] {
array set doc_elements [nsv_get api_proc_doc $proc]
if { $type == "All"} {
lappend matches [list $proc $doc_elements(script)]
} elseif {$type == "Deprecated" && $doc_elements(deprecated_p)} {
lappend matches [list $proc $doc_elements(script)]
} elseif {$type == "Private" && $doc_elements(private_p) } {
lappend matches [list $proc $doc_elements(script)]
} elseif {$type == "Public" && $doc_elements(public_p) } {
lappend matches [list $proc $doc_elements(script)]
}
}
if { [string equal $sort_by "file"] } {
set matches [lsort -command ad_sort_by_second_string_proc $matches]
} else {
set matches [lsort -command ad_sort_by_first_string_proc $matches]
}
multirow create proc_list file proc url
foreach sublist $matches {
set proc [lindex $sublist 0]
set file [lindex $sublist 1]
set url [api_proc_url $proc]
multirow append proc_list $file $proc $url
}
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
<div style="float: right;">
<include src="/packages/acs-api-browser/lib/search" query_string="@query_string@">
</div>
<h3>Procedure Matches</h3>
<ul>
<multiple name="results">
<li> <if @results.score@ lt 10>&nbsp;&nbsp;</if>@results.score@: <a href=@results.url@>@results.proc@</a>
<i>@results.args;noquote@</i>
</multiple>
</ul>
<if @results:rowcount@ eq 0>
No results found
</if>
<if @private_results:rowcount@ gt 0>
<if @show_private_p@ true>
<p>
<b>Show</b> | <a href="@hide_private_url@">Hide</a> <b>@private_results:rowcount@ private</b> procedure matches
</p>
<ul>
<multiple name="private_results">
<li><if @private_results.score@ lt 10>&nbsp;&nbsp;</if>@private_results.score@: <a href=@private_results.url@>@private_results.proc@</a>
<i>@private_results.args;noquote@</i>
</multiple>
</ul>
</if>
<else>
<p>
<a href="@show_private_url@">Show</a> | <b>Hide</b> <b>@private_results:rowcount@ private</b> procedure matches
</p>
</else>
</if>
<if @deprecated_results:rowcount@ gt 0>
<if @show_deprecated_p@ true>
<p>
<b>Show</b> | <a href="@hide_deprecated_url@">Hide</a> <b>@deprecated_results:rowcount@ deprecated</b> procedure matches
</p>
<ul>
<multiple name="deprecated_results">
<li><if @deprecated_results.score@ lt 10>&nbsp;&nbsp;</if>@deprecated_results.score@: <a href=@deprecated_results.url@>@deprecated_results.proc@</a>
<i>@deprecated_results.args;noquote@</i>
</multiple>
</ul>
</if>
<else>
<p>
<a href="@show_deprecated_url@">Show</a> | <b>Hide</b> <b>@deprecated_results:rowcount@ deprecated</b> procedure matches
</p>
</else>
</if>
# acs-api-browser/www/proc-search.tcl
ad_page_contract {
Searches for procedures with containing query_string
if lucky redirects to best match
Weight the different hits with the propper weights
Shows a list of returned procs with links to proc-view
Note: api documentation information taken from nsv array
@author Todd Nightingale (tnight@arsdigita.com)
@creation-date Jul 14, 2000
@cvs-id $Id$
} {
{name_weight:optional 0}
{doc_weight:optional 0}
{param_weight:optional 0}
{source_weight:optional 0}
{search_type:optional 0}
{show_deprecated_p 0}
{show_private_p 0}
query_string
} -properties {
title:onevalue
context:onevalue
name_weight:onevalue
doc_weight:onevalue
param_weight:onevalue
source_weight:onevalue
query_string:onevalue
results:multirow
}
##########################################################
## Begin Page
set quick_view [string equal $search_type "Only best match"]
#########################
## Optimizes quick search
if {$quick_view && [nsv_exists api_proc_doc $query_string]} {
ad_returnredirect [api_proc_url $query_string]
ad_script_abort
}
###########################
# No weighting use default:
if { ($name_weight == 0) && ($doc_weight == 0) && ($param_weight == 0) && ($source_weight ==0) } {
set name_weight 1
}
# Exact name search
if { [string equal $name_weight "exact"] } {
set name_weight 5
set exact_match_p 1
} else {
set exact_match_p 0
}
set counter 0
set matches [list]
set deprecated_matches [list]
set private_matches [list]
# place a [list proc_name score positionals] into matches for every proc
foreach proc [nsv_array names api_proc_doc] {
set score 0
array set doc_elements [nsv_get api_proc_doc $proc]
###############
## Name Search:
###############
if {$name_weight} {
# JCD: this was a little perverse since exact matches were
# actually worth less than matches in the name (if there were
# 2 or more, which happens with namespaces) so I doubled the
# value of an exact match.
##Exact match:
if {[string tolower $query_string] == [string tolower $proc]} {
incr score [expr $name_weight * 2]
} elseif { ! $exact_match_p } {
incr score [expr $name_weight * [ad_keywords_score $query_string $proc]]
}
}
################
## Param Search:
################
if {$param_weight} {
incr score [expr $param_weight * [ad_keywords_score $query_string "$doc_elements(positionals) $doc_elements(switches)"]]
}
##############
## Doc Search:
##############
if {$doc_weight} {
set doc_string "[lindex $doc_elements(main) 0]"
if [info exists doc_elements(param)] {
foreach parameter $doc_elements(param) {
append doc_string " $parameter"
}
}
if [info exists doc_elements(return)] {
append doc_string " $doc_elements(return)"
}
incr score [expr $doc_weight * [ad_keywords_score $query_string $doc_string]]
}
#################
## Source Search:
#################
if {$source_weight} {
if {![catch {set source [info body $proc]}]} {
incr score [expr $source_weight * [ad_keywords_score $query_string $source]]
}
}
#####
## Place Needed info in matches
if {$score} {
if {$doc_elements(varargs_p)} {
set args "$doc_elements(positionals) \[&nbsp;args...&nbsp;\]"
} else {
set args $doc_elements(positionals)
}
if { $doc_elements(deprecated_p) } {
lappend deprecated_matches [list $proc $score $args]
} else {
if { $doc_elements(public_p) } {
lappend matches [list $proc $score $args]
} else {
lappend private_matches [list $proc $score $args]
}
}
}
}
set matches [lsort -command ad_sort_by_score_proc $matches]
if {$quick_view && ![empty_string_p $matches] || [llength $matches] == 1 } {
ad_returnredirect [api_proc_url [lindex [lindex $matches 0] 0]]
ad_script_abort
}
set title "Procedure Search for: \"$query_string\""
set context [list "Search: $query_string"]
multirow create results score proc args url
foreach output $matches {
incr counter
set proc [lindex $output 0]
set score [lindex $output 1]
set args [lindex $output 2]
set url [api_proc_url $proc]
multirow append results $score $proc $args $url
}
multirow create deprecated_results score proc args url
foreach output $deprecated_matches {
incr counter
set proc [lindex $output 0]
set score [lindex $output 1]
set args [lindex $output 2]
set url [api_proc_url $proc]
multirow append deprecated_results $score $proc $args $url
}
set show_deprecated_url [export_vars -base [ad_conn url] -override { { show_deprecated_p 1 } } { name_weight doc_weight param_weight source_weight search_type query_string show_private_p }]
set hide_deprecated_url [export_vars -base [ad_conn url] -override { { show_deprecated_p 0 } } { name_weight doc_weight param_weight source_weight search_type query_string show_private_p }]
multirow create private_results score proc args url
foreach output $private_matches {
incr counter
set proc [lindex $output 0]
set score [lindex $output 1]
set args [lindex $output 2]
set url [api_proc_url $proc]
multirow append private_results $score $proc $args $url
}
set show_private_url [export_vars -base [ad_conn url] -override { { show_private_p 1 } } { name_weight doc_weight param_weight source_weight search_type query_string show_deprecated_p }]
set hide_private_url [export_vars -base [ad_conn url] -override { { show_private_p 0 } } { name_weight doc_weight param_weight source_weight search_type query_string show_deprecated_p }]
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
<if @error_msg@ ne "">
@error_msg;noquote@
</if>
<else>
<table width="100%">
<tr><td bgcolor="#eeeeee">@documentation;noquote@</td></tr>
</table>
<if @source_p@ eq 0>
[ <a href="proc-view?proc=@proc@&amp;source_p=1">show source</a> ]
</if>
<else>
[ <a href="proc-view?proc=@proc@&amp;source_p=0">hide source</a> ]
</else>
<if @source_p@ ne @default_source_p@>
| [ <a href="set-default?source_p=@source_p@&amp;return_url=@return_url@">make this
the default</a> ]
</if>
</else>
<form action=proc-view method=get>
Show another procedure: <input type="text" name="proc"> <input type="submit" value="Go">
</form>
ad_page_contract {
Display information about one procedure.
@cvs-id $Id$
} {
proc
source_p:optional,integer,trim
} -properties {
title:onevalue
context:onevalue
source_p:onevalue
default_source_p:onevalue
return_url:onevalue
documentation:onevalue
error_msg:onevalue
}
set title $proc
set context [list $proc]
set default_source_p [ad_get_client_property -default 0 acs-api-browser api_doc_source_p]
set return_url [ns_urlencode [ad_conn url]?[export_url_vars proc]]
set error_msg ""
if { ![info exists source_p] } {
set source_p $default_source_p
}
# Try and be helpful about the procedure.
if { ![nsv_exists api_proc_doc $proc] } {
if {![empty_string_p [namespace eval :: [list info procs $proc]]]} {
set error_msg "<p>This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.</p><p>The procedure is defined as: <pre>
proc $proc {[info args $proc]} {
[ad_quotehtml [info body $proc]]
}</pre></p>"
} elseif {![empty_string_p [namespace eval :: [list info commands $proc]]]} {
set error_msg "<p>The procedure <b>$proc</b> is an available command on the server and might be found in the <a href=\"http://dev.scriptics.com/man/tcl8.3/TclCmd/contents.htm\">TCL</a> or <a href=\"http://www.aolserver.com/docs/devel/tcl/api/\">AOLServer</a> documentation or in documentation for a loadable module (like ns_cache for example).</p>"
} else {
set error_msg "<p>The procedure <b>$proc</b> is not defined in the server.</p>"
}
} else {
if { $source_p } {
set documentation [api_proc_documentation -script -xql -source $proc]
} else {
set documentation [api_proc_documentation -script $proc]
}
}
set query_string [string range [ad_conn extra_url] [string length "proc/"] end]
set url "[ad_conn package_url]proc-search?[export_vars { query_string { search_type "Feeling Lucky" } }]"
ad_returnredirect $url
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
@dimensional_slider;noquote@
@library_documentation;noquote@
<br clear=all>
<h3>Procedures in this file</h3>
<ul>
<multiple name="proc_list">
<li>@proc_list.proc;noquote@
</multiple>
</ul>
<h3>Detailed information</h3>
<multiple name="proc_doc_list">
<table width="100%">
<tr><td bgcolor="#e4e4e4">@proc_doc_list.doc;noquote@</td></tr>
</table>
&nbsp;<p>
</multiple>
ad_page_contract {
Displays procs in a Tcl library file.
@cvs-id $Id$
} {
version_id:optional
{ public_p "" }
path
} -properties {
title:onevalue
context:onevalue
dimensional_slider:onevalue
library_documentation:onevalue
proc_list:multirow
proc_doc_list:multirow
}
if { ![info exists version_id] && \
[regexp {^packages/([^ /]+)/} $path "" package_key] } {
db_0or1row version_id_from_package_key {
select version_id
from apm_enabled_package_versions
where package_key = :package_key
}
}
if [info exists version_id] {
set public_p [api_set_public $version_id $public_p]
} else {
set public_p [api_set_public "" $public_p]
}
set dimensional_list {
{
public_p "Publicity:" 1 {
{ 1 "Public Only" }
{ 0 "All" }
}
}
}
set context [list]
if { [info exists version_id] } {
db_1row package_info_from_package_id {
select pretty_name, package_key, version_name
from apm_package_version_info
where version_id = :version_id
}
lappend context [list "package-view?version_id=$version_id" "$pretty_name $version_name"]
}
lappend context [file tail $path]
set title [file tail $path]
set dimensional_slider [ad_dimensional $dimensional_list]
set library_documentation [api_library_documentation $path]
multirow create proc_list proc
multirow create proc_doc_list doc
if { [nsv_exists api_proc_doc_scripts $path] } {
foreach proc [lsort [nsv_get api_proc_doc_scripts $path]] {
if { $public_p } {
array set doc_elements [nsv_get api_proc_doc $proc]
if { !$doc_elements(public_p) } {
continue
}
}
multirow append proc_list [api_proc_pretty_name -link $proc]
}
foreach proc [lsort [nsv_get api_proc_doc_scripts $path]] {
if { $public_p } {
array set doc_elements [nsv_get api_proc_doc $proc]
if { !$doc_elements(public_p) } {
continue
}
}
multirow append proc_doc_list [api_proc_documentation $proc]
}
}
ad_page_contract {
Set user preferences for API browsing.
} {
source_p:integer,optional,notnull
return_url
}
set found_p 0
if { [info exists source_p] } {
ad_set_client_property -persistent t acs-api-browser api_doc_source_p $source_p
set found_p 1
}
if { $found_p } {
ad_returnredirect $return_url
} else {
ad_return_error "Unknown Property" "Couldn't find any property to set"
}
\ No newline at end of file
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
Sorry, no Tcl procedures were found with that name.
<p>
You can try searching the <a href="@tcl_docs_url@">Tcl documentation</a> yourself.
<p>
<table cellpadding=5>
<tr>
<td bgcolor=#dddddd>
<form action=tcl-doc-search method=get>
<b>Tcl Documentation Search:</b><br>
<input type=text name=tcl_proc value="@tcl_proc@"> <input type=submit value="Go"><br>
</form>
</td>
</tr>
</table>
ad_page_contract {
Will redirect you to dev.scriptics.com if documentation can be found
@cvs-id $Id$
} {
tcl_proc
} -properties {
title:onevalue
context:onevalue
tcl_proc:onevalue
}
set tcl_docs_root "http://tcl.tk/man/tcl[info tclversion]/TclCmd/"
set tcl_docs_url "${tcl_docs_root}contents.htm"
with_catch errmsg {
set tcl_docs_index_page [util_memoize "ns_httpget $tcl_docs_url"]
} {
ad_return_error "Cannot Connect" "We're sorry, but we're having problems connecting to the server containing the Tcl documentation: $tcl_docs_url"
ad_script_abort
}
set tcl_proc [lindex $tcl_proc 0]
set len [string length $tcl_proc]
for { set i [expr { $len-1 }] } { $i >= 0 } { incr i -1 } {
set search_for [string range $tcl_proc 0 $i]
if { [regexp "<a href=\"(\[^>\]+)\">$search_for</a>" $tcl_docs_index_page match relative_url] } {
ad_returnredirect "$tcl_docs_root$relative_url"
ad_script_abort
}
}
set title "Tcl API Procedure Search for: \"$tcl_proc\""
set context [list "TCL API Search: $tcl_proc"]
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
Sorry, no AOLserver Tcl API procedures were found with that name.
<p>
You can try searching the <a href="@tcl_api_root@">AOLserver documentation</a> yourself.
<p>
<table cellpadding=5>
<tr>
<td bgcolor=#dddddd>
<form action=tcl-proc-view method=get>
<b>Tcl Api Search:</b><br>
<input type=text name=tcl_proc value="@tcl_proc@"> <input type=submit value="Go"><br>
</form>
</td>
</tr>
</table>
ad_page_contract {
Will redirect you to aolserver.com if documentation can be found
@cvs-id $Id$
} {
tcl_proc
} -properties {
title:onevalue
context:onevalue
tcl_proc:onevalue
}
set tcl_api_root "http://www.aolserver.com/docs/devel/tcl/api/"
set tcl_api_index_page [util_memoize "ns_httpget $tcl_api_root"]
set tcl_proc [lindex $tcl_proc 0]
set len [string length $tcl_proc]
for { set i [expr { $len-1 }] } { $i >= 0 } { incr i -1 } {
set search_for [string range $tcl_proc 0 $i]
if { [regexp "<a href=(\[^>\]+#\[^>\]+)>$search_for</a>" $tcl_api_index_page match relative_url] } {
ad_returnredirect "$tcl_api_root$relative_url"
ad_script_abort
}
}
set title "AOLserver Tcl API Search for: \"$tcl_proc\""
set context [list "TCL API Search: $tcl_proc"]
<master>
<property name=title>@title;noquote@</property>
<property name="context">@context;noquote@</property>
@documentation@
\ No newline at end of file
ad_page_contract {
Displays information about a type.
@cvs-id $Id$
} {
version_id:optional
type
} -properties {
title:onevalue
context:onevalue
documentation:onevalue
}
if { ![info exists version_id] && \
[regexp {^([^ /]+)/} $type "" package_key] } {
db_0or1row version_id_from_package_key {
select version_id
from apm_enabled_package_versions
where package_key = :package_key
}
}
set public_p [api_set_public $version_id]
set context [list]
if { [info exists version_id] } {
db_1row package_info_from_version_id {
select package_name, package_key, version_name
from apm_package_version_info
where version_id = :version_id
}
lappend context [list "package-view?version_id=$version_id&kind=types" "$package_name $version_name"]
}
lappend context $type
set title $type
set documentation [api_type_documentation $type]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment