Index: openacs-4/packages/xowiki/www/admin/portal-element-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/admin/portal-element-add.tcl,v diff -u -r1.6 -r1.7 --- openacs-4/packages/xowiki/www/admin/portal-element-add.tcl 3 Sep 2007 21:07:53 -0000 1.6 +++ openacs-4/packages/xowiki/www/admin/portal-element-add.tcl 14 Sep 2007 18:58:09 -0000 1.7 @@ -7,39 +7,59 @@ @param object_type show objects of this class and its subclasses } -parameter { - {-portal_id} - {-page_name} + {-portal_id:required} + {-page_name:required} {-referer .} } +set page_id [$package_id resolve_request -path $page_name method] -#set page_id [$package_id resolve_request -path $page_name method] -set page_id [::xo::db::CrClass lookup -name $page_name -parent_id [$package_id folder_id]] -set page_title [$page_id title] +if {$page_id eq ""} { + # + # If a page with the given name does not exist, return an error. + # + ad_return_error \ + [_ xowiki.portlet_page_does_not_exist_error_short] \ + [_ xowiki.portlet_page_does_not_exist_error_long $page_name] -# for the time being, we add the portlet on the first page (page 0) -set portal_page_id [portal::get_page_id -portal_id $portal_id -sort_key 0] - -if {[db_string check_unique_name_on_page { - select 1 from portal_element_map - where page_id = :portal_page_id - and pretty_name = :page_title -} -default 0]} { - ad_return_error [_ xowiki.portlet_title_exists_error_short] [_ xowiki.portlet_title_exists_error_long] } else { - db_transaction { - set element_id [portal::add_element \ - -portal_id $portal_id \ - -portlet_name [xowiki_portlet::get_my_name] \ - -pretty_name $page_title \ - -force_region [parameter::get_from_package_key \ - -parameter "xowiki_portal_content_force_region" \ - -package_key "xowiki-portlet"] - ] - portal::set_element_param $element_id package_id $package_id - portal::set_element_param $element_id page_name [$page_id name] + # + # The page exists, get the title of the page... + # + set page_title [$page_id title] + + # for the time being, we add the portlet on the first page (page 0) + set portal_page_id [portal::get_page_id -portal_id $portal_id -sort_key 0] + + if {[db_string check_unique_name_on_page { + select 1 from portal_element_map + where page_id = :portal_page_id + and pretty_name = :page_title + } -default 0]} { + # + # The name of the portal element is not unique. + # + ad_return_error \ + [_ xowiki.portlet_title_exists_error_short] \ + [_ xowiki.portlet_title_exists_error_long $page_title] + } else { + # + # everything ok, add the portal element + # + db_transaction { + set element_id [portal::add_element \ + -portal_id $portal_id \ + -portlet_name [xowiki_portlet::get_my_name] \ + -pretty_name $page_title \ + -force_region [parameter::get_from_package_key \ + -parameter "xowiki_portal_content_force_region" \ + -package_key "xowiki-portlet"] + ] + portal::set_element_param $element_id package_id $package_id + portal::set_element_param $element_id page_name [$page_id name] + } + ad_returnredirect $referer } - ad_returnredirect $referer } ad_script_abort