subsite_navigation::get_pageflow_struct (public)

 subsite_navigation::get_pageflow_struct [ -subsite_id subsite_id ] \
    [ -initial_pageflow initial_pageflow ] \
    [ -show_applications_p show_applications_p ] \
    [ -no_tab_application_list no_tab_application_list ]

Defined in packages/acs-subsite/tcl/subsite-navigation-procs.tcl

Defines the page flow structure.

Switches:
-subsite_id
(optional)
The package id of the subsite we're interested in (defaults to current)
-initial_pageflow
(optional)
Add these subsections before computing the rest of the page flow
-show_applications_p
(defaults to "1") (optional)
If true, autogenerate tabs for applications (not declared boolean because the tabbed master takes this from a package parameter)
-no_tab_application_list
(optional)
A list of application package keys to ignore when autogenerating tabs for applications

Partial Call Graph (max 5 caller/called nodes):
%3 subsite_navigation::define_pageflow subsite_navigation::define_pageflow (public) subsite_navigation::get_pageflow_struct subsite_navigation::get_pageflow_struct subsite_navigation::define_pageflow->subsite_navigation::get_pageflow_struct ad_conn ad_conn (public) subsite_navigation::get_pageflow_struct->ad_conn parameter::get parameter::get (public) subsite_navigation::get_pageflow_struct->parameter::get permission::permission_p permission::permission_p (public) subsite_navigation::get_pageflow_struct->permission::permission_p site_node::closest_ancestor_package site_node::closest_ancestor_package (public) subsite_navigation::get_pageflow_struct->site_node::closest_ancestor_package site_node::get_children site_node::get_children (public) subsite_navigation::get_pageflow_struct->site_node::get_children

Testcases:
No testcase defined.
Source code:
    if { ![string is list $initial_pageflow]} {
        ns_log Warning "subsite_navigation: ignoring invalid initial_pageflow: $initial_pageflow"
        set initial_pageflow ""
    }
    if { ![string is list $no_tab_application_list]} {
        ns_log Warning "subsite_navigation: ignoring invalid no_tab_application_list: $no_tab_application_list"
        set no_tab_application_list ""
    }
    if {$subsite_id eq ""} {
        set subsite_id [ad_conn subsite_id]
    }

    set pageflow $initial_pageflow
    set subsite_node_id [site_node::get_node_id_from_object_id -object_id $subsite_id]
    set subsite_url [site_node::get_element -node_id $subsite_node_id -element url]

    set user_id [ad_conn user_id]
    set admin_p [permission::permission_p  -object_id [site_node::closest_ancestor_package -include_self  -node_id $subsite_node_id  -package_key [subsite::package_keys]  -url [ad_conn url]]  -privilege admin  -party_id [ad_conn untrusted_user_id]]
    set show_member_list_to [parameter::get -parameter "ShowMembersListTo" -package_id $subsite_id -default 2]

    if { $admin_p
     || ($user_id != 0 && $show_member_list_to == 1)
     || $show_member_list_to == 0
     } {
        lappend pageflow {*}[subsite_navigation::get_pageflow_from_parameter  -subsite_id $subsite_id  -parameter MembersViewNavbarTabsList]
    }

    if { $show_applications_p } {

    set index_redirect_url [parameter::get -parameter "IndexRedirectUrl" -package_id $subsite_id]
    set index_internal_redirect_url [parameter::get -parameter "IndexInternalRedirectUrl" -package_id $subsite_id]
    regsub {(.*)/packages} $index_internal_redirect_url "" index_internal_redirect_url
    regexp {(/[-[:alnum:]]+/)(.*)$} $index_internal_redirect_url dummy index_internal_redirect_url
    set child_urls [lsort -ascii [site_node::get_children -node_id $subsite_node_id -package_type apm_application]]

        foreach child_url $child_urls {
            array set child_node [site_node::get_from_url -exact -url $child_url]
            if { $child_url ne $index_redirect_url  &&
                 $child_url ne $index_internal_redirect_url &&
                 $child_node(package_key) ni $no_tab_application_list
         } {
                lappend pageflow $child_node(name) [list  label $child_node(instance_name)  folder $child_node(name)  url {}  selected_patterns *]
            }
        }
    }

    if { $admin_p } {
        lappend pageflow {*}[subsite_navigation::get_pageflow_from_parameter  -subsite_id $subsite_id  -parameter AdminNavbarTabsList]
    }

    return $pageflow
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: