Index: openacs-4/packages/calendar/www/cal-item-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/Attic/cal-item-edit.tcl,v diff -u -r1.10 -r1.11 --- openacs-4/packages/calendar/www/cal-item-edit.tcl 14 May 2002 05:06:29 -0000 1.10 +++ openacs-4/packages/calendar/www/cal-item-edit.tcl 3 Jun 2002 04:08:17 -0000 1.11 @@ -3,88 +3,98 @@ ad_page_contract { edit an existing calendar item - - @author Gary Jin (gjin@arsdigita.com) - @creation-date Dec 14, 2000 + (totally rewritten, this was nasty) + + @author Ben Adida (ben@openforce) + @creation-date 2002-06-02 @cvs-id $Id$ } { - {cal_item_id:integer} - {view day} - {action edit} - {no_time_p ""} - {event_date:array ""} - {start_time:array ""} - {end_time:array ""} - {name ""} - {description ""} - {return_url ""} - {item_type_id ""} - {confirm_p 0} - {edit_all_p 0} + cal_item_id:integer,notnull } -# Fix up the return URL -if {[empty_string_p $return_url]} { - set return_url "?[export_url_vars date view]" -} +# Permissions +# FIXME: we need to add a permissions check here! -# find out the user_id -set user_id [ad_verify_and_get_user_id] +# Create the form +form create cal_item +element create cal_item cal_item_id \ + -label "Calendar Item ID" -datatype integer -widget hidden -value $cal_item_id -#------------------------------------------------------ -# if the action is set to delete -# we call the delete proc and return to -# to index with the passed through options +element create cal_item title \ + -label "Title" -datatype text -widget text -html {size 60} -if { $action == "delete" } { +element create cal_item date \ + -label "Date" -datatype date -widget date - if {!$confirm_p} { - ad_returnredirect "cal-item-delete-confirm?cal_item_id=$cal_item_id&show_cal_nav=0" - return - } - - cal_item_delete $cal_item_id +element create cal_item time_p \ + -label " " -datatype text -widget radio -options {{{All Day Event} 0} {{Use Hours Below:} 1}} - ad_returnredirect $return_url +element create cal_item start_time \ + -label "Start Time" -datatype date -widget date -format "HH12:MI AM" - return -} +element create cal_item end_time \ + -label "End Time" -datatype date -widget date -format "HH12:MI AM" -#------------------------------------------------------ -# extract the time info +element create cal_item description \ + -label "Description" -datatype text -widget textarea -html {cols 60 rows 3 wrap soft} -if {$no_time_p == 1} { - set no_time(hours) 0 - set no_time(minutes) 0 - set start_datetime [calendar_make_datetime [array get event_date] [array get no_time]] - set end_datetime [calendar_make_datetime [array get event_date] [array get no_time]] -} else { - set start_datetime [calendar_make_datetime [array get event_date] [array get start_time]] - set end_datetime [calendar_make_datetime [array get event_date] [array get end_time]] +element create cal_item item_type_id \ + -label "Type" -datatype integer -widget select -optional + +element create cal_item repeat_p \ + -label "Edit All Occurrences?" -datatype text -widget radio -options {{Yes 1} {No 0}} -value 0 + + +if {[form is_valid cal_item]} { + template::form get_values cal_item cal_item_id title date time_p start_time end_time description item_type_id repeat_p + + # set up the datetimes + set start_date [calendar::to_sql_datetime -date $date -time $start_time -time_p $time_p] + set end_date [calendar::to_sql_datetime -date $date -time $end_time -time_p $time_p] + + ns_log Notice "BMA3: $repeat_p" + + # Do the edit + calendar::item::edit -cal_item_id $cal_item_id \ + -start_date $start_date \ + -end_date $end_date \ + -name $title \ + -description $description \ + -item_type_id $item_type_id \ + -edit_all_p $repeat_p + + # Redirect + ad_returnredirect "cal-item-view?cal_item_id=$cal_item_id" + ad_script_abort } +# Select info for the item +calendar::item::get -cal_item_id $cal_item_id -array cal_item -#----------------------------------------------------------------- -# validate time interval ( start_time <= end_time ) +# Prepare the form nicely +element set_properties cal_item item_type_id -options [calendar::get_item_types -calendar_id $cal_item(calendar_id)] -if { [dt_interval_check $start_datetime $end_datetime] < 0 } { - ad_return_complaint 1 "your end time can't happen before start time" +element set_properties cal_item cal_item_id -value $cal_item(cal_item_id) +element set_properties cal_item title -value $cal_item(name) +element set_properties cal_item date -value [calendar::from_sql_datetime -sql_date $cal_item(start_date) -format {YYYY-MM-DD}] +element set_properties cal_item start_time -value [calendar::from_sql_datetime -sql_date $cal_item(start_time) -format {HH12:MIam}] +element set_properties cal_item end_time -value [calendar::from_sql_datetime -sql_date $cal_item(end_time) -format {HH12:MIam}] +element set_properties cal_item description -value $cal_item(description) +element set_properties cal_item item_type_id -value $cal_item(item_type_id) + +if {[dt_no_time_p -start_time $cal_item(start_time) -end_time $cal_item(end_time)]} { + element set_properties cal_item time_p -value 0 +} else { + element set_properties cal_item time_p -value 1 } +# if no recurrence, don't show the repeat stuff +if {[empty_string_p $cal_item(recurrence_id)]} { + element set_properties cal_item repeat_p -widget hidden +} -#------------------------------------------------------------------ -# update the exsiting calendar_item -set cal_item_id [cal_item_update $cal_item_id \ - $start_datetime \ - $end_datetime \ - $name \ - $description \ - $item_type_id \ - $edit_all_p] +set cal_nav [dt_widget_calendar_navigation "view" day $cal_item(start_date) "calendar_id"] -# set the proper rediret value to view and date -set action "view" -set date [calendar_make_date [array get event_date]] +ad_return_template -ad_returnredirect $return_url