Index: openacs-4/packages/new-portal/tcl/portal-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/new-portal/tcl/portal-procs.tcl,v diff -u -r1.116 -r1.117 --- openacs-4/packages/new-portal/tcl/portal-procs.tcl 21 Feb 2002 19:01:11 -0000 1.116 +++ openacs-4/packages/new-portal/tcl/portal-procs.tcl 6 Mar 2002 05:14:08 -0000 1.117 @@ -106,6 +106,7 @@ {-theme_name ""} {-default_page_name ""} {-context_id ""} + {-csv_list ""} user_id } { Create a new portal for the passed in user id. @@ -114,6 +115,26 @@ @param user_id @param layout_name optional } { + # if we have a cvs list in the form "page_name1, layout1; + # page_name2, layout2...", we get the required first page_name + # and first page layout from it, overriding any other params + + if {![empty_string_p $csv_list]} { + set page_name_and_layout_list [split $csv_list ";"] + set page_name_list [list] + set layout_name_list [list] + + # seperate name and layout + foreach item $page_name_and_layout_list { + lappend page_name_list [lindex [split $item ","] 0] + lappend layout_name_list [lindex [split $item ","] 1] + } + + set default_page_name [lindex $page_name_list 0] + set layout_name [lindex $layout_name_list 0] + } + + # get the default layout_id - simple2 if {![empty_string_p $layout_name]} { set layout_id [get_layout_id -layout_name $layout_name] @@ -128,8 +149,23 @@ set theme_id [get_theme_id_from_name -theme_name $theme_name] + db_transaction { + # create the portal and the first page + set portal_id [db_exec_plsql create_new_portal_and_perms {}] - return [db_exec_plsql create_new_portal_and_perms {}] + if {![empty_string_p $csv_list]} { + # if there are more pages in the csv_list, create them + for {set i 1} {$i < [expr [llength $page_name_list]]} {incr i} { + portal::page_create -portal_id $portal_id \ + -pretty_name [lindex $page_name_list $i] \ + -layout_name [lindex $layout_name_list $i] + } + } + + } + + + return $portal_id } ad_proc -public delete { @@ -1088,12 +1124,18 @@ # do the callback for the ::show proc # evaulate the datasource. - if { [catch { set element(content) \ - [datasource_call \ - $element(datasource_id) "Show" [list [array get config] ]] } \ - errmsg ] } { - ns_log error "*** portal::render_element show callback Error! ***\n\n $errmsg\n\n" - ad_return_complaint 1 "*** portal::render_element show callback Error! ***

$errmsg\n\n" + if { [catch { set element(content) \ + [datasource_call \ + $element(datasource_id) \ + "Show" \ + [list [array get config]] + ]\ + } \ + errmsg \ + ] \ + } { + ns_log error "aks86 *** portal::render_element show callback Error! ***\n\n $errmsg\n\n" + ad_return_complaint 1 "*** portal::render_element show callback Error! ***

$errmsg\n\n" } # We use the actual pretty name from the DB (ben) @@ -1154,7 +1196,9 @@ $element(datasource_id) "Show" [list [array get config] ]] } \ errmsg ] } { ns_log error "*** portal::render_element show callback Error! ***\n\n $errmsg\n\n" + ad_return -error ad_return_complaint 1 "*** portal::render_element show callback Error! ***

$errmsg\n\n" + } set element(name) \