Index: openacs-4/packages/bboard-portlet/tcl/bboard-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bboard-portlet/tcl/bboard-portlet-procs.tcl,v diff -u -r1.23 -r1.24 --- openacs-4/packages/bboard-portlet/tcl/bboard-portlet-procs.tcl 9 Nov 2001 18:14:12 -0000 1.23 +++ openacs-4/packages/bboard-portlet/tcl/bboard-portlet-procs.tcl 13 Nov 2001 16:20:40 -0000 1.24 @@ -37,15 +37,23 @@ @author arjun@openforce.net @creation-date Sept 2001 } { - # Tell portal to add this element to the page - set element_id [portal::add_element $page_id [my_name]] + # Add some smarts to only add one portlet for now when it's added multiple times (ben) + # Find out if bboard already exists + set element_id_list [portal::get_element_ids_by_ds $page_id [my_name]] + + if {[llength $element_id_list] == 0} { + # Tell portal to add this element to the page + set element_id [portal::add_element $page_id [my_name]] + set package_id_list [list] + } else { + set element_id [lindex $element_id_list 0] + set package_id_list [portal::get_element_param $element_id instance_id] + } + + lappend package_id_list $instance_id + + portal::set_element_param $element_id instance_id $package_id_list - # The default param "instance_id" must be configured - set key "instance_id" -# set value [portal::get_element_param $element_id $key] - - portal::set_element_param $element_id $key $instance_id - return $element_id } @@ -73,51 +81,63 @@ where b.forum_id = ao.object_id and forum_id in (select forum_id from bboard_forums - where bboard_id = $config(instance_id)) + where bboard_id = :instance_id) and person_id = sender and reply_to is null order by sent_date desc" set shaded_query " select forum_id, short_name from bboard_forums - where bboard_id = $config(instance_id)" + where bboard_id = :instance_id" - set data "" - set rowcount 0 + set whole_data "" + set list_of_instance_ids $config(instance_id) - if { $config(shaded_p) == "f" } { - - db_foreach select_messages $query { - append data "
  • $title, by $full_name\n" - incr rowcount + # Added by Ben + foreach instance_id $list_of_instance_ids { + if {[llength $list_of_instance_ids] > 1} { + append whole_data "[db_string select_name "select name from site_nodes where object_id=:instance_id" -default ""]
    " } - - set template "" - - if {!$rowcount} { - set template "No messages" - } - - append template "

    more..." - - } else { - # shaded - set data "Forums: " - db_foreach select_shaded $shaded_query { - append data "$short_name" - incr rowcount + set data "" + set rowcount 0 + + if { $config(shaded_p) == "f" } { + + db_foreach select_messages $query { + append data "

  • $title, by $full_name\n" + incr rowcount + } + + set template "" + + if {!$rowcount} { + set template "No messages" + } + + append template "

    more..." + + } else { + # shaded + set data "Forums: " + + db_foreach select_shaded $shaded_query { + append data "$short_name" + incr rowcount + } + + set template "$data" + + if {!$rowcount} { + set template "No forums" + } } - - set template "$data" - - if {!$rowcount} { - set template "No forums" - } + + append whole_data $template } - set code [template::adp_compile -string $template] + set code [template::adp_compile -string $whole_data] set output [template::adp_eval code] @@ -142,7 +162,18 @@ # remove all elements db_transaction { foreach element_id $element_ids { - portal::remove_element $element_id + # Added by Ben for multiple package support + set list_of_instance_ids [portal::get_element_param $element_id instance_id] + + set pos [lsearch -exact $list_of_instance_ids $instance_id] + if {$pos > -1} { + set new_list [lreplace list_of_instance_ids $pos $pos {}] + if {[llength $new_list] == 0} { + portal::remove_element $element_id + } else { + portal::set_element_param $element_id instance_id $new_list + } + } } } }