Index: openacs-4/contrib/packages/portal/tcl/portal-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/portal/tcl/portal-procs.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/contrib/packages/portal/tcl/portal-procs.tcl 25 Oct 2002 21:29:17 -0000 1.1 +++ openacs-4/contrib/packages/portal/tcl/portal-procs.tcl 3 Jan 2004 01:42:57 -0000 1.2 @@ -65,22 +65,36 @@ {-template_id ""} {-context_id ""} {-page_list {{{Page 1} 2_column}}} + {-party_privileges {read write admin}} } { - create a new portal for the passed in party_id. create pages passed in + Create a new portal for the passed in party_id. create pages passed in the page_list. + + @party_id The party which owns the new portal + @name The name of the portal + @template_id The template used to render the portal if the default is not to + be used + @context_id The new portal object's context_id + @page_list The list of pages to create within the portal + @party_privileges A list of privileges to grant the party on the new portal. + Normally the default list (read, write, admin) will be correct if the party + is a user but if the party is a group (say, members of a subsite) then it + would make sense to only grant read to the party directly. + } { db_transaction { - set extra_vars [ns_set create] - ns_set put $extra_vars name $name - ns_set put $extra_vars template_id $template_id - ns_set put $extra_vars context_id $context_id + set var_list [list \ + [list name $name] \ + [list template_id $template_id] \ + [list context_id $context_id] \ + [list party_id $party_id]] - set portal_id [package_instantiate_object -extra_vars $extra_vars portal] + set portal_id [package_instantiate_object -var_list $var_list portal] - permission::grant -party_id $party_id -object_id $portal_id -privilege read - permission::grant -party_id $party_id -object_id $portal_id -privilege write - permission::grant -party_id $party_id -object_id $portal_id -privilege admin + foreach privilege $party_privileges { + permission::grant -party_id $party_id -object_id $portal_id -privilege $privilege + } if {[empty_string_p $template_id]} { foreach page $page_list { @@ -122,6 +136,19 @@ return [array get portal] } + ad_proc -public get_portal_id { + {-party_id:required} + } { + Get the portal_id for a party. I (DRB) am not going to bother caching this + for the time being ... + } { + if {[db_0or1row select_portal_id {}]} { + return $portal_id + } else { + return "" + } + } + ad_proc -public set_values { {-portal:required} } { @@ -196,7 +223,7 @@ } { returns a chunk of html that is a fully rendered portal } { - permission::require -privilege read -object_id $portal_id + permission::require_permission -privilege read -object_id $portal_id set edit_p [permission::permission_p -object_id $portal_id -privilege write] set master_template [parameter::get -parameter master_template] @@ -286,7 +313,7 @@ set edit_p [permission::permission_p -object_id $portal_id -privilege write] if {!$edit_p} { - permission::require -privilege admin -object_id $portal_id + permission::require_permission -privilege admin -object_id $portal_id set edit_p 1 } @@ -354,7 +381,7 @@ foreach page_id $list_of_page_ids { - set first_page_p [portal::first_page_p -portal_id $portal_id -page_id $page_id] + set first_page_p [portal::page::first_page_p -portal_id $portal_id -page_id $page_id] set page_name [portal::page::get_name -page_id $page_id] set page_layout_id [portal::page::get_layout_id -page_id $page_id] @@ -408,7 +435,7 @@ array unset fake_element_ids } - if {![portal::has_visible_elements -page_id $page_id]} { + if {![portal::page::has_visible_elements -page_id $page_id]} { # # Non first page with all hidden elements @@ -543,7 +570,7 @@ set edit_p [permission::permission_p -object_id $portal_id -privilege write] if {!$edit_p} { - permission::require -privilege admin -object_id $portal_id + permission::require_permission -privilege admin -object_id $portal_id set edit_p 1 }