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@
+
+
+
+
+ }
+ } instance {
+ label "Instance"
+ html "align left"
+ display_template {
+
+
+
+
+
+
+
+
+
+ @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 "
"
+
+#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"
+}