ad_page_contract {
@author rhs@mit.edu
@author bquinn@arsidigta.com
@creation-date 2000-09-09
@cvs-id $Id: index.tcl,v 1.14 2018/10/22 07:41:37 gustafn Exp $
} {
{expand:integer,multiple ""}
{new_parent:integer ""}
{new_type ""}
{root_id:naturalnum ""}
{new_application:integer ""}
{rename_application:integer {}}
}
if {$root_id eq ""} {
set root_id [ad_conn node_id]
}
# Check if the user has site-wide-admin privileges
set site_wide_admin_p [acs_user::site_wide_admin_p]
array set node [site_node::get -node_id $root_id]
set parent_id $node(parent_id)
set object_id $node(object_id)
# template::add_body_script -script {
# function check_checkbox () {
# window.document.nodes.node_id.checked = 'true';
# }
# }
# template::add_body_handler -event onload -script "check_checkbox();"
set parent_link [export_vars -base . {expand:multiple {root_id $parent_id}}]
set page_title "[ad_system_name] Site Map"
set context [list $page_title]
set user_id [ad_conn user_id]
if {[llength $expand] == 0} {
#lappend expand 0
lappend expand $root_id
if { $parent_id ne "" } {
lappend expand $parent_id
}
}
set return_url [ad_return_url]
template::list::create \
-name nodes \
-multirow nodes \
-key node_id \
-elements {
name_instance {
label "#acs-subsite.Name#"
html "align left"
display_template {
@nodes.tree_indent;noquote@
@nodes.name;noquote@
@nodes.instance;noquote@
}
} instance_url {
label "#acs-subsite.URL#"
html "align left"
display_template {
@nodes.instance_url;noquote@
}
}
}
multirow create nodes \
node_id expand_mode expand_url tree_indent name name_url instance instance_url \
type action_type action_form_part add_folder_url new_app_url unmount_url mount_url \
rename_url delete_url parameters_url permissions_url extra_form_part view_p
set open_nodes [list]
db_foreach nodes_select {} {
set add_folder_url ""
set new_app_url ""
set unmount_url ""
set mount_url ""
set rename_url ""
set delete_url ""
set parameters_url ""
set permissions_url ""
if {$parent_id ni $open_nodes
&& $parent_id ne ""
&& $mylevel > 2
} {
continue
}
if {$directory_p == "t"} {
set add_folder_url [export_vars -base . {expand:multiple root_id node_id {new_parent $node_id} {new_type folder}}]
if {$object_id eq ""} {
set mount_url [export_vars -base mount {expand:multiple root_id node_id}]
set new_app_url [export_vars -base . {expand:multiple root_id {new_application $node_id}}]
} else {
# This makes sure you can't unmount the thing that is serving the page you're looking at.
if {[ad_conn node_id] != $node_id} {
set unmount_url [export_vars -base unmount {expand:multiple root_id node_id}]
}
# Add a link to control permissioning
if {$object_admin_p} {
set permissions_url [export_vars -base ../../permissions/one {object_id}]
set rename_url [export_vars -base . {expand:multiple root_id {rename_application $node_id}}]
set delete_url [export_vars -base instance-delete {{package_id $object_id} root_id}]
}
# Is the object a package?
if {$package_id ne ""} {
if {$object_admin_p && ($parameter_count > 0)} {
set parameters_url [export_vars -base "/shared/parameters" { package_id {return_url {[ad_return_url]} } }]
}
}
}
}
if {[ad_conn node_id] != $node_id && $n_children == 0 && $object_id eq ""} {
set delete_url [export_vars -base delete {expand:multiple root_id node_id}]
}
#
# Use the indent variable to hold current indent level we'll use
# it later to indent stuff at the end by the amount of the last
# node.
#
set indent ""
if { $mylevel != 1 } {
if { $mylevel == 2 } {
append indent " "
} else {
for {set i 1} {$i <4*$mylevel} {incr i} {
append indent " "
}
}
}
set expand_mode 0
if {!$root_p && $n_children > 0} {
set expand_mode 1
set urlvars [list]
foreach n $expand {
if {$n == $node_id} {
set expand_mode 2
lappend open_nodes "$node_id"
} else {
lappend urlvars "expand=$n"
}
}
if { $expand_mode == 1} {
lappend urlvars "expand=$node_id"
}
lappend urlvars "root_id=$root_id"
set expand_url [join $urlvars "&"]
} else {
set expand_url ""
}
set name_url [export_vars {expand:multiple {root_id $node_id}}]
set action_type 0
set action_form_part ""
if {$object_id eq ""} {
if {$new_application == $node_id} {
set action_type "new_app"
set action_form_part [export_vars -form {expand:multiple root_id node_id new_package_id}] [apm_application_new_checkbox]
#Generate a package_id for double click protection
set new_package_id [db_nextval acs_object_id_seq]
} else {
set action_form_part "(none)"
}
} elseif {$rename_application == $node_id} {
set action_type "rename_app"
set action_form_part [export_vars -form {expand:multiple root_id node_id rename_package_id}]
} else {}
if {$node_id == $new_parent} {
set parent_id $new_parent
set node_type $new_type
set action_type "new_folder"
set action_form_part [export_vars -form {expand:multiple parent_id node_type root_id}]
}
multirow append nodes $node_id $expand_mode $expand_url $indent $name $name_url $object_name \
$url $package_pretty_name $action_type $action_form_part $add_folder_url \
$new_app_url $unmount_url $mount_url $rename_url $delete_url $parameters_url \
$permissions_url "" $view_p
}
#set new_app_form_part_1 "
"
# multirow append nodes "" "" "" "" $new_app_form_part_1 "" "" "" $new_app_form_part_2 "" "" "" "" "" "" "" "" "" "" $new_app_form_part_3
set services ""
db_foreach services_select {} {
if {$parameter_count > 0} {
append services "$instance_name"
}
} if_no_rows {
append services " (none)\n"
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End: