package-new.tcl

Create a new package and mount it in the site map. If new_node_p is false then the package will be mounted at node_id. If new_node_p is true then a new node with name node_name will be created under root_id and the package will be mounted there.

Location:
/packages/acs-subsite/www/admin/site-map/package-new.tcl
Author:
rhs@mit.edu
Created:
2000-09-13
CVS ID:
$Id: package-new.tcl,v 1.18.2.2 2023/10/06 12:36:15 gustafn Exp $

Related Files

[ hide source ] | [ make this the default ]

File Contents

ad_page_contract {
    Create a new package and mount it in the site map. If new_node_p is false then
    the package will be mounted at node_id. If new_node_p is true then a new node with
    name node_name will be created under root_id and the package will be mounted there.

    @author rhs@mit.edu
    @creation-date 2000-09-13
    @cvs-id $Id: package-new.tcl,v 1.18.2.2 2023/10/06 12:36:15 gustafn Exp $

} {
    {new_package_id:naturalnum ""}
    node_id:naturalnum,notnull
    {new_node_p:boolean,notnull f}
    {node_name:trim ""}
    {instance_name ""}
    package_key:token,notnull
    {expand:integer,multiple ""}
    root_id:naturalnum,optional
}

if {$package_key eq "/new"} {
    ad_returnredirect "/acs-admin/apm/packages-install"
    ad_script_abort
}

if { $instance_name eq "" } {
    set instance_name [db_string instance_default_name {
        select pretty_name from apm_package_types where package_key = :package_key
    }]
}

db_transaction {

    # Set the context_id to the object_id of the parent node
    # If the parent node didn't have anything mounted, use the current package_id as context_id
    set context_id [ad_conn package_id]
    array set node [site_node::get -node_id $node_id]

    if { $node(object_id) ne "" } {
            set context_id $node(object_id)
    }

    if { $new_node_p } {
        # Create a new node under node_id and mount the package there
        set package_id [site_node::instantiate_and_mount -package_id $new_package_id \
                                                         -package_key $package_key \
                                                         -parent_node_id $node_id \
                                                         -package_name $instance_name \
                                                         -context_id $context_id \
                                                         -node_name $node_name]
    } else {
        # Mount the new package at node_id
        set package_id [site_node::instantiate_and_mount -package_id $new_package_id \
                                                         -package_key $package_key \
                                                         -node_id $node_id \
                                                         -package_name $instance_name \
                                                         -context_id $context_id ]
    }

} on_error {
    if {![db_string package_new_doubleclick_ck {} -default 0]} {
        ad_return_complaint 1 "Error Creating Package: The following error was generated
                when attempting to create the package
        <blockquote><pre>
                [ns_quotehtml $errmsg]
        </pre></blockquote>"
    }
}

ad_returnredirect [export_vars -base . {expand:multiple root_id}]
ad_script_abort

# Local variables:
#    mode: tcl
#    tcl-indent-level: 4
#    indent-tabs-mode: nil
# End: