Index: openacs-4/packages/ecommerce/tcl/ecommerce-widgets-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/tcl/ecommerce-widgets-procs.tcl,v diff -u -r1.11 -r1.12 --- openacs-4/packages/ecommerce/tcl/ecommerce-widgets-procs.tcl 29 Jan 2002 00:11:46 -0000 1.11 +++ openacs-4/packages/ecommerce/tcl/ecommerce-widgets-procs.tcl 16 Feb 2002 23:32:06 -0000 1.12 @@ -8,34 +8,73 @@ @author ported by Jerry Asher (jerry@theashergroup.com) } -ad_proc ec_search_widget { {category_id ""} {search_text ""} } { creates an ecommerce search widget, using the specified category id and search text if necessary } { +ad_proc ec_search_widget { {combocategory_id ""} {search_text ""} } { creates an ecommerce search widget, using the specified category id and search text if necessary } { return "
-Search: [ec_only_category_widget "f" $category_id] +Search: [ec_combocategory_widget "f" $combocategory_id]
" } +ad_proc ec_combocategory_widget { {multiple_p "f"} {default ""} } { Category widget combining categories and subcategories } { + if { $multiple_p == "f" } { + set select_tag "\n" + } + set to_return "" + set category_counter 0 + set last_category_id "" + + # Get all categories and their subcategories + db_foreach get_combocategories "select s.category_id, s.subcategory_id, category_name, subcategory_name from ec_categories c, ec_subcategories s where c.category_id=s.category_id order by s.category_id, s.subcategory_id" { + + # There is at least one category. Open the select widget on the first pass of the foreach loop + if { $category_counter == 0} { + append to_return $select_tag + } + incr category_counter + if { $category_id != $last_category_id } { + set last_category_id $category_id + + # Check if the category has been selected. + if { [lsearch -exact $default "$category_id|"] != -1 || [lsearch -exact $default $category_name] != -1 } { + append to_return "" + } else { + append to_return "" + } + } + + # Check if the subcategory has been selected. + if { [lsearch -exact $default "$category_id|$subcategory_id"] != -1 || [lsearch -exact $default $subcategory_name] != -1 } { + append to_return "" + } else { + append to_return "" + } + } + if { $category_counter != 0 } { + append to_return "\n" + } + return $to_return +} + ad_proc ec_only_category_widget { {multiple_p "f"} {default ""} } { category widget } { if { $multiple_p == "f" } { - set select_tag "\n" } else { set select_tag "\n" } - set subcategory_counter 0 + set subcategory_counter 0 db_foreach get_subcats_by_name "select subcategory_id, subcategory_name from ec_subcategories where category_id=:category_id order by subcategory_name" { - - incr subcategory_counter - if { [string compare $default $subcategory_id] == 0 || [string compare $default $subcategory_name] == 0 } { append to_return "