Index: openacs-4/packages/acs-subsite/www/site-map/index-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/site-map/index-oracle.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-subsite/www/site-map/index-oracle.xql 23 Nov 2004 18:43:15 -0000 1.1.2.1 @@ -0,0 +1,84 @@ + + + + oracle8.1.6 + + + + select node_id, + name, + directory_p, + level, + acs_object.name(object_id) as obj_name, + acs_permission.permission_p(object_id, :user_id, 'admin') as admin_p + from site_nodes + start with node_id = :root_id + connect by node_id = prior parent_id + order by level desc + + + + + + select package_id, + package_key, + (select pretty_name from apm_package_types where package_key = p.package_key) as package_pretty_name, + apm_package_type.num_parameters(package_key) parameter_count, + node_id, + url, + parent_url, + name, + root_p, + mylevel - 1 as mylevel, + object_id, + object_name, + directory_p, + parent_id, + n_children, + decode(acs_permission.permission_p(object_id, :user_id, 'admin'), 't', 1, 0) object_admin_p + from apm_packages p, + (select node_id, + site_node.url(node_id) as url, + site_node.url(parent_id) as parent_url, + name, + (select count(*) + from site_nodes + where parent_id = n.node_id) as n_children, + decode(node_id, site_node.node_id('/'), 1, 0) as root_p, + level as mylevel, + object_id, + acs_object.name(object_id) as object_name, + directory_p, + parent_id + from site_nodes n,site_nodes_selection sn + where (object_id is null + or exists ( + select 1 from acs_object_party_privilege_map ppm + where ppm.object_id = n.object_id + and ppm.party_id = :user_id + and ppm.privilege = 'read')) and sn.node_id=n.node_id + start with node_id = nvl(:root_id, site_node.node_id('/')) + connect by prior node_id = parent_id and parent_id in ([join $expand ", "])) site_map + where site_map.object_id = p.package_id (+) + order by url + + + + + + select package_id, + ap.package_key, + ap.instance_name, + apm_package_type.num_parameters(ap.package_key) as parameter_count + from apm_packages ap, + apm_package_types + where ap.package_key = apm_package_types.package_key + and package_type = 'apm_service' + and not exists (select 1 from site_nodes sn where sn.object_id = package_id) + and exists (select 1 from acs_object_party_privilege_map ppm + where ppm.object_id = package_id and ppm.party_id = :user_id and ppm.privilege = 'admin') + order by instance_name + + + + Index: openacs-4/packages/acs-subsite/www/site-map/index-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/site-map/index-postgresql.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-subsite/www/site-map/index-postgresql.xql 23 Nov 2004 18:43:16 -0000 1.1.2.1 @@ -0,0 +1,76 @@ + + + + postgresql7.1 + + + + select s2.node_id, + s2.name, + s2.directory_p, + tree_level(s2.tree_sortkey) as level, + acs_object__name(s2.object_id) as obj_name, + acs_permission__permission_p(s2.object_id, :user_id, 'admin') as admin_p + from (select tree_ancestor_keys(site_node_get_tree_sortkey(:root_id)) as tree_sortkey) parents, + site_nodes s2 + where s2.tree_sortkey = parents.tree_sortkey + order by level + + + + + + select package_id, + package_key, + pretty_name as package_pretty_name, + apm_package_type__num_parameters(package_key) as parameter_count, + node_id, url, parent_url, name, root_p, mylevel, object_id, + directory_p, parent_id, n_children, + p.instance_name as object_name, + acs_permission__permission_p(object_id, :user_id, 'admin') as object_admin_p, + (select view_p from site_nodes_selection where node_id=site_map.node_id) as view_p + from apm_packages p join apm_package_types using (package_key) right outer join + (select n.node_id, + site_node__url(n.node_id) as url, + site_node__url(n.parent_id) as parent_url, + n.name, + case when exists (select 1 from site_nodes where parent_id = n.node_id) then 1 else 0 end as n_children, + case when n.node_id = (select site_node__node_id('/', null)) then 1 else 0 end as root_p, + (tree_level(n.tree_sortkey) - (select tree_level(n2.tree_sortkey) from site_nodes n2 where n2.node_id = (select coalesce(:root_id, site_node__node_id('/', null))))) as mylevel, + n.object_id, + n.directory_p, + n.parent_id + from site_nodes n, site_nodes n2,site_nodes_selection sn + where (n.object_id is null + or exists ( + select 1 from acs_object_party_privilege_map ppm + where ppm.object_id = n.object_id + and ppm.party_id = :user_id + and ppm.privilege = 'read')) + and sn.node_id = n.node_id + and n2.node_id = (select coalesce(:root_id, site_node__node_id('/', null))) + and n.tree_sortkey between n2.tree_sortkey and tree_right(n2.tree_sortkey) + and (n.parent_id is null or n.parent_id in ([join $expand ", "]))) site_map + on site_map.object_id = p.package_id + order by url + + + + + + select package_id, + ap.package_key, + ap.instance_name, + apm_package_type__num_parameters(ap.package_key) as parameter_count + from apm_packages ap, + apm_package_types + where ap.package_key = apm_package_types.package_key + and package_type = 'apm_service' + and not exists (select 1 from site_nodes sn where sn.object_id = package_id) + and exists (select 1 from acs_object_party_privilege_map ppm + where ppm.object_id = package_id and ppm.party_id = :user_id and ppm.privilege = 'admin') + order by instance_name + + + + Index: openacs-4/packages/acs-subsite/www/site-map/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/site-map/index.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-subsite/www/site-map/index.adp 23 Nov 2004 18:43:16 -0000 1.1.2.1 @@ -0,0 +1,24 @@ + +@page_title;noquote@ +@context;noquote@ +@javascript;noquote@ + + + + + + + + Index: openacs-4/packages/acs-subsite/www/site-map/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/site-map/index.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-subsite/www/site-map/index.tcl 23 Nov 2004 18:43:16 -0000 1.1.2.1 @@ -0,0 +1,261 @@ +ad_page_contract { + + @author rhs@mit.edu + @author bquinn@arsidigta.com + @creation-date 2000-09-09 + @cvs-id $Id: index.tcl,v 1.1.2.1 2004/11/23 18:43:16 vivianh Exp $ + +} { + {expand:integer,multiple ""} + {new_parent:integer ""} + {new_type ""} + {root_id:integer ""} + {new_application:integer ""} + {rename_application:integer {}} +} + +if {[empty_string_p $root_id]} { + set root_id [ad_conn node_id] +} + +# We do a check for the admin privilege because a user could have +# admin privilege on a site_node that has other site_nodes beneath it +# that the user does not have admin privilege on. If we don't do this +# check, the user could end up making changes on site_nodes that he +# does not have the admin privilege for. + +array set node [site_node::get -node_id $root_id] +set parent_id $node(parent_id) +set object_id $node(object_id) + +if {![empty_string_p $object_id]} { + ad_require_permission $object_id admin +} + +if {![empty_string_p $new_parent]} { + set javascript "onLoad=\"javascript:document.new_parent.name.focus();document.new_parent.name.select()\"" +} elseif {![empty_string_p $new_application]} { + set javascript "onLoad=\"javascript:document.new_application.instance_name.focus();document.new_application.instance_name.select()\"" +} elseif {![empty_string_p $rename_application]} { + set javascript "onLoad=\"javascript:document.rename_application.instance_name.focus();document.rename_application.instance_name.select()\"" +} else { + set javascript "" +} +set javascript "onload=\"javascript:document.check_checkbox()\"" + + +set parent_link ".?[export_url_vars expand:multiple root_id=$parent_id]" + +set page_title "Site Map " +set context [list $page_title] + +set user_id [ad_conn user_id] + +db_foreach path_select {} { + if {$node_id != $root_id && $admin_p == "t"} { + append head "" + } + if {[empty_string_p $name]} { + append head "$obj_name:" + } else { + append head $name + } + + if {$node_id != $root_id && $admin_p == "t"} { + append head "" + } + + if {$directory_p == "t"} { + append head "/" + } +} if_no_rows { + append head " " +} + +if {[llength $expand] == 0} { + lappend expand $root_id + if { ![empty_string_p $parent_id] } { + lappend expand $parent_id + } +} + +set return_url [ad_return_url] +template::list::create \ + -name nodes \ + -multirow nodes \ + -key node_id \ + -elements { + name { + label "Site Map" + html "align left" + display_template { + + @nodes.tree_indent;noquote@ + + + (+) + + + (-) + + @nodes.name;noquote@ + + +
+ @nodes.tree_indent;noquote@ + @nodes.action_form_part;noquote@ + + +
+
+ } + } instance { + label "Instance" + html "align left" + display_template { + + +
+ + @nodes.action_form_part;noquote@ + +
+ + +
+
+ + @nodes.action_form_part;noquote@ + +
+ + +
@nodes.instance;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 { [lsearch -exact $open_nodes $parent_id] == -1 && $parent_id != "" && $mylevel > 2 } { continue } + + if {$directory_p == "t"} { + set add_folder_url "?[export_url_vars expand:multiple root_id node_id new_parent=$node_id new_type=folder]" + if {[empty_string_p $object_id]} { + set mount_url "mount?[export_url_vars expand:multiple root_id node_id]" + set new_app_url "?[export_url_vars 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 "unmount?[export_url_vars expand:multiple root_id node_id]" + } + + # Add a link to control permissioning + if {$object_admin_p} { + set permissions_url "../../permissions/one?[export_url_vars object_id]" + set rename_url "?[export_url_vars expand:multiple root_id rename_application=$node_id]" + set delete_url "instance-delete?package_id=$object_id&root_id=$root_id" + } + # Is the object a package? + if {![empty_string_p $package_id]} { + 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 && [empty_string_p $object_id]} { + set delete_url "delete?[export_url_vars 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 "" + for {set i 0} {$i < 3*$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_url_vars expand:multiple root_id=$node_id] + + set action_type 0 + set action_form_part "" + + if {[empty_string_p $object_id]} { + if {$new_application == $node_id} { + + set action_type "new_app" + set action_form_part "[export_form_vars 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_form_vars 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_form_vars 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 "

[export_form_vars expand:multiple]

" + +#set new_app_form_part_2 "

[apm_application_new_checkbox]

" +#set new_app_form_part_3 "

" +# 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" +}