Index: openacs-4/packages/acs-subsite/www/admin/applications/index-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/admin/applications/index-postgresql.xql,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/acs-subsite/www/admin/applications/index-postgresql.xql 7 Aug 2017 23:47:58 -0000 1.3
+++ openacs-4/packages/acs-subsite/www/admin/applications/index-postgresql.xql 21 Oct 2018 17:36:23 -0000 1.4
@@ -5,50 +5,47 @@
-
- select n.node_id
- from site_nodes n,
- site_nodes np,
- apm_packages p
- left outer join lang_messages m
- on m.locale = :locale and
- '#' || m.package_key || '.' || m.message_key || '#' = p.instance_name
- left outer join lang_messages md
- on m.locale = 'en_US' and
- '#' || md.package_key || '.' || md.message_key || '#' = p.instance_name,
- apm_package_types pt
- where np.node_id = :subsite_node_id
- and n.tree_sortkey between np.tree_sortkey and tree_right(np.tree_sortkey)
- and p.package_id = n.object_id
- and pt.package_key = p.package_key
- [template::list::filter_where_clauses -and -name applications]
- order by n.tree_sortkey
-
+ select node_id from (
+ WITH RECURSIVE site_node_tree AS (
+ select node_id, parent_id, name, object_id from site_nodes where node_id = :subsite_node_id
+ UNION ALL
+ select c.node_id, c.parent_id, c.name, c.object_id from site_node_tree tree, site_nodes as c
+ where c.parent_id = tree.node_id
+ )
+ select n.node_id, n.parent_id, n.name, site_node__url(n.node_id) as url
+ from site_node_tree n, apm_packages p
+ left outer join lang_messages m
+ on m.locale = 'en_US' and
+ '#' || m.package_key || '.' || m.message_key || '#' = p.instance_name
+ left outer join lang_messages md
+ on m.locale = 'en_US' and
+ '#' || md.package_key || '.' || md.message_key || '#' = p.instance_name,
+ apm_package_types pt
+ where p.package_id = n.object_id
+ and pt.package_key = p.package_key
+ [template::list::filter_where_clauses -and -name applications]
+ order by url) node_tree
-
- select n.node_id,
- n.name,
- p.package_id,
- p.instance_name,
- tree_level(n.tree_sortkey) - tree_level(np.tree_sortkey) as treelevel,
- pt.pretty_name as package_pretty_name,
- exists (select 1 from apm_parameters
- where package_key = pt.package_key) as parameters_p
- from site_nodes n,
- site_nodes np,
- apm_packages p,
- apm_package_types pt
- where np.node_id = :subsite_node_id
- and n.tree_sortkey between np.tree_sortkey and tree_right(np.tree_sortkey)
- and p.package_id = n.object_id
- and pt.package_key = p.package_key
- and [template::list::page_where_clause -name applications -key n.node_id]
- order by n.tree_sortkey
-
+ select
+ node_id, name, package_id, instance_name, package_pretty_name, parameters_p,
+ (char_length(url)-char_length(replace(url, '/', ''))-1) as treelevel
+ from (
+ select n.node_id,
+ n.name,
+ p.package_id,
+ p.instance_name,
+ site_node__url(n.node_id) as url,
+ pt.pretty_name as package_pretty_name,
+ exists (select 1 from apm_parameters where package_key = pt.package_key) as parameters_p
+ from site_nodes n, apm_packages p, apm_package_types pt
+ where p.package_id = n.object_id
+ and pt.package_key = p.package_key
+ and [template::list::page_where_clause -name applications -key n.node_id]
+ ) sm0 order by url