Index: openacs-4/contrib/packages/project-manager/www/task-add-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-add-edit.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/contrib/packages/project-manager/www/task-add-edit.tcl 31 Jul 2003 20:11:41 -0000 1.3 +++ openacs-4/contrib/packages/project-manager/www/task-add-edit.tcl 1 Aug 2003 20:51:04 -0000 1.4 @@ -8,35 +8,60 @@ @return context_bar Context bar. @return title Page title. + @return num num is used as a multirow datasource to iterate over the ad_form elements @param project_item_id Specifies which project this task is associated with @param project_id Specifies which project revision this task is associated with + @param number The number of Tasks to create @param task_revision_id Specifies the revision this task represents (each revision of a task has a separate id) @param task_id Specifies the item for the task (every revision of a task shares the same task_id) } { project_item_id:integer,optional project_id:integer,optional + {number:integer "1"} task_revision_id:integer,optional - task_id:integer,optional - {task_title ""} - {description ""} - {name ""} - {parent_id ""} - {start_date ""} - {end_date ""} - {percent_complete "0"} + task_id:multiple,integer,optional + task_title:array,optional + description:array,optional + name:array,optional + parent_id:array,optional + start_date:array,optional + end_date:array,optional + percent_complete:array,optional } -properties { context_bar:onevalue title:onevalue + num:multirow +} -validate { + number_is_in_range -requires {number:integer} { + # todo: make 100 a parameter + if {$number < 1 || $number > 100} { + ad_complain + } + } + percent_is_in_range -requires {percent_complete:integer} { + if {$percent_complete < 0 || $percent_complete > 100} { + ad_complain + } + } +} -errors { + number_is_in_range {Number must be between 1 and 100} + percent_is_in_range {Percent completed must be between 0 and 100} } # --------------------------------------------------------------- # +template::multirow create num number + +for {set i 1} {$i <= $number} {incr i} { + template::multirow append num $i +} + set user_id [ad_maybe_redirect_for_registration] # the unique identifier for this package @@ -55,6 +80,7 @@ permission::require_permission -party_id $user_id -object_id $package_id -privilege create } + ad_form -name add_edit -form { task_id:key @@ -66,64 +92,85 @@ {value $project_id} } - {task_title:text - {label "Title"} - {value $task_title} - {html {size 59}} + {number:text(hidden) + {value $number} } - {description:text(textarea) - {label "Description"} - {value $description} - {html {rows 10 cols 60}} - } +} -select_query { - {parent_id:text(hidden) - {value $parent_id} - } +} -on_submit { - {start_date:date {value {[util::date acquire clock [clock scan $start_date]]}} optional - {label "Start date"} - {format "MONTH DD YYYY"} - {help} - } - - {end_date:date {value {[util::date acquire clock [clock scan $end_date]]}} optional - {label "End date"} - {format "MONTH DD YYYY"} - {help} - } - -} -select_query_name task_query -on_submit { - set user_id [ad_conn user_id] set peeraddr [ad_conn peeraddr] } -new_data { + + for {set i 1} {$i <= $number} {incr i} { + # ns_log Notice "task_title($i) = $task_title($i)" + db_exec_plsql new_task_item { *SQL* } + } - db_exec_plsql new_task_item { *SQL* } - } -edit_data { db_exec_plsql new_task_revision { *SQL* } -} -after_submit { +} -select_query_name task_query -after_submit { ad_returnredirect "one?item_id=$project_item_id&project_id=$project_id" ad_script_abort } +for {set i 0} {$i <= $number} {incr i} { + + # reading this code, you may wonder why we put the .$i at the end. + # DaveB showed me this trick. It lets you make a multiple out of + # the items by stuffing them in an array. Long live DaveB. + + append add_edit_definition " + {task_title.$i:text + {label \"Subject \#$i\"} + {html {size 30}} + } + + {description.$i:text(textarea) + {label \"Description\"} + {html {rows 5 cols 40}} + } + + {parent_id.$i:text(hidden) + } + + {start_date.$i:date + {label \"Start date\"} + {format \"MONTH DD YYYY\"} + {help} + } + + {end_date.$i:date + {label \"End date\"} + {format \"MONTH DD YYYY\"} + {help} + } + + {percent_complete.$i:integer + {label \"Percent complete\"} + {html {size 3}} + } + " + +} + +ad_form -extend -name add_edit -form $add_edit_definition -select_query_name task_query + + # we are editing? if {[exists_and_not_null task_id]} { ad_form -extend -name add_edit -form { {percent_complete:integer {label "Percent complete"} - {value $percent_complete} {html {size 4}} - } - } -select_query_name task_query -on_submit { - + } -select_query_name task_query } }