Index: openacs-4/packages/bug-tracker/www/bug-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/bug-tracker/www/bug-add.tcl,v diff -u -N -r1.7 -r1.7.2.1 --- openacs-4/packages/bug-tracker/www/bug-add.tcl 13 Sep 2002 08:30:32 -0000 1.7 +++ openacs-4/packages/bug-tracker/www/bug-add.tcl 5 Mar 2003 18:13:52 -0000 1.7.2.1 @@ -5,20 +5,13 @@ @creation-date 2002-03-25 @cvs-id $Id$ } { - cancel:optional {return_url ""} } if { [empty_string_p $return_url] } { set return_url "." } -# If the user hit cancel, ignore everything else -if { [exists_and_not_null cancel] } { - ad_returnredirect $return_url - ad_script_abort -} - ad_require_permission [ad_conn package_id] create # User needs to be logged in here @@ -29,135 +22,81 @@ set package_id [ad_conn package_id] set package_key [ad_conn package_key] -set page_title "New Bug" +set page_title "New [bug_tracker::conn Bug]" set context_bar [bug_tracker::context_bar $page_title] set user_id [ad_conn user_id] +# Is this project using multiple versions? +set versions_p [bug_tracker::versions_p] # Create the form +ad_form -name bug -cancel_url $return_url -form { + bug_id:key(acs_object_id_seq) -form create bug + {component_id:text(select) + {label "[bug_tracker::conn Component]"} + {options {[bug_tracker::components_get_options]}} + {value {[bug_tracker::conn component_id]}} + } + {summary:text + {label "Summary"} + {html {size 50}} + } + {found_in_version:text(select) + {label "Version"} + {options {[bug_tracker::version_get_options -include_unknown]}} + {value {[bug_tracker::conn user_version_id]}} + optional + } -element create bug bug_id \ - -datatype integer \ - -widget hidden + {return_url:text(hidden) {value $return_url}} +} +foreach {category_id category_name} [bug_tracker::category_types] { + ad_form -extend -name bug -form [list \ + [list "${category_id}:integer(select)" \ + [list label $category_name] \ + [list options [bug_tracker::category_get_options -parent_id $category_id]] \ + [list value [bug_tracker::get_default_keyword -parent_id $category_id]] \ + ] \ + ] +} -element create bug component_id \ - -datatype integer \ - -widget select \ - -label "Component" \ - -options [bug_tracker::components_get_options] - -element create bug bug_type \ - -datatype text \ - -widget select \ - -label "Type of bug" \ - -options [bug_tracker::bug_type_get_options] \ - -optional - -element create bug summary \ - -datatype text \ - -label "Summary" \ - -html { size 50 } - -element create bug severity \ - -datatype integer \ - -widget select \ - -label "Severity" \ - -options [bug_tracker::severity_codes_get_options] \ - -optional - -element create bug priority \ - -datatype integer \ - -widget select \ - -label "Priority" \ - -options [bug_tracker::priority_codes_get_options] \ - -optional - -element create bug found_in_version \ - -datatype integer \ - -widget select \ - -label "Version" \ - -options [bug_tracker::version_get_options -include_unknown] \ - -optional - -element create bug description \ - -datatype text \ - -widget textarea \ - -label "Description" \ - -html { cols 50 rows 10 } \ - -optional - -element create bug desc_format \ - -datatype text \ - -widget select \ - -label "Description format" \ - -options { { "Plain" plain } { "HTML" html } { "Preformatted" pre } } - -element create bug return_url \ - -datatype text \ - -widget hidden \ - -value $return_url - - -if { [form is_request bug] } { - - element set_properties bug bug_id -value [db_nextval "acs_object_id_seq"] - - element set_properties bug found_in_version \ - -value [bug_tracker::conn user_version_id] - - element set_properties bug severity -value [bug_tracker::severity_get_default] - element set_properties bug priority -value [bug_tracker::priority_get_default] - - if { ![empty_string_p [bug_tracker::conn component_id]] } { - element set_properties bug component_id -value [bug_tracker::conn component_id] +ad_form -extend -name bug -form { + {description:richtext(richtext) + {label "Description"} + {html {cols 60 rows 13}} + optional } - element set_properties bug desc_format -value "plain" +} -} +ad_form -extend -name bug -new_data { + bug_tracker::bug::new \ + -bug_id $bug_id \ + -package_id $package_id \ + -component_id $component_id \ + -found_in_version $found_in_version \ + -summary $summary \ + -description [template::util::richtext::get_property contents $description] \ + -desc_format [template::util::richtext::get_property format $description] - -if { [form is_valid bug] } { - - db_transaction { - - form get_values bug bug_id component_id bug_type severity priority found_in_version summary description desc_format + foreach {category_id category_name} [bug_tracker::category_types] { + # -singular not required here since it's a new bug + cr::keyword::item_assign -item_id $bug_id -keyword_id [element get_value bug $category_id] + } - set ip_address [ns_conn peeraddr] - set user_agent [ns_set get [ns_conn headers] "User-Agent"] +} -after_submit { + bug_tracker::bugs_exist_p_set_true - db_exec_plsql new_bug { - select bt_bug__new( - :bug_id, - :package_id, - :component_id, - :bug_type, - :severity, - :priority, - :found_in_version, - :summary, - :description, - :desc_format, - :user_agent, - :user_id, - :ip_address - ) - } - - } - - bug_tracker::bug_notify -bug_id $bug_id -action "open" -comment $description -comment_format $desc_format - - # Sign up the submitter of the bug for instant alerts. We do this after calling - # the alert procedure so that the submitter isn't alerted about his own submittal of the bug - bug_tracker::add_instant_alert -bug_id $bug_id -user_id $user_id - ad_returnredirect $return_url ad_script_abort } + +if { !$versions_p } { + element set_properties bug found_in_version -widget hidden +} + ad_return_template