Index: openacs-4/packages/acs-datetime/tcl/acs-calendar-2-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-datetime/tcl/acs-calendar-2-procs.tcl,v diff -u -r1.8 -r1.9 --- openacs-4/packages/acs-datetime/tcl/acs-calendar-2-procs.tcl 10 Mar 2002 21:42:36 -0000 1.8 +++ openacs-4/packages/acs-datetime/tcl/acs-calendar-2-procs.tcl 11 Mar 2002 16:42:00 -0000 1.9 @@ -146,7 +146,11 @@ break } - append return_html "[ns_set value $calendar_details $index]
\n" + if {$overlap_p} { + append return_html "[lindex [ns_set value $calendar_details $index] 2]" + } else { + append return_html "[ns_set value $calendar_details $index]
\n" + } ns_set delete $calendar_details $index } @@ -199,9 +203,19 @@ } if {$overlap_p} { - set end_time [expr $hour + 2] + set one_item_val [ns_set value $calendar_details $index] + + # One ugly hack + set end_time_lst [split [lindex $one_item_val 1] ":"] + + if {[lindex $end_time_lst 1] == 0} { + set end_time [expr [string trimleft [lindex $end_time_lst 0] 0] - 1] + } else { + set end_time [lindex $end_time_lst 1] + } + set start_time $hour - append return_html "[ns_set value $calendar_details $index]" + append return_html "[lindex $one_item_val 2]" } else { append return_html "[ns_set value $calendar_details $index]
\n" } Index: openacs-4/packages/calendar/sql/oracle/cal-item-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/sql/oracle/cal-item-create.sql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/calendar/sql/oracle/cal-item-create.sql 8 Mar 2002 22:29:24 -0000 1.3 +++ openacs-4/packages/calendar/sql/oracle/cal-item-create.sql 11 Mar 2002 16:42:07 -0000 1.4 @@ -53,6 +53,9 @@ primary key, -- a references to calendar -- Each cal_item is owned by one calendar + + event_type + on_which_calendar integer constraint cal_item_which_cal_fk references calendars Index: openacs-4/packages/calendar/tcl/cal-item-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/tcl/cal-item-procs.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/calendar/tcl/cal-item-procs.tcl 15 Oct 2001 18:46:59 -0000 1.3 +++ openacs-4/packages/calendar/tcl/cal-item-procs.tcl 11 Mar 2002 16:42:07 -0000 1.4 @@ -255,11 +255,42 @@ +ad_proc -public calendar_item_add_recurrence { + {-cal_item_id:required} + {-interval_type:required} + {-every_n:required} + {-days_of_week ""} + {-recur_until ""} +} { + Adds a recurrence for a calendar item +} { + # We do things in a transaction + db_transaction { + # Create the recurrence + set recurrence_id [db_exec_plsql create_recurrence " + begin + :1 := recurrence.new(interval_type => :interval_type, + every_nth_interval => :every_n, + days_of_week => :days_of_week, + recur_until => :recur_until); + end; + "] + + # Update the events table + db_dml update_event "update acs_events set recurrence_id= :recurrence_id where event_id= :cal_item_id" - - - - - - - + # Insert instances + db_exec_plsql insert_instances " + begin + acs_event.insert_instances(event_id => :cal_item_id); + end; + " + + # Make sure they're all in the calendar! + db_dml insert_cal_items " + insert into cal_items (cal_item_id, on_which_calendar) + select event_id, (select on_which_calendar as calendar_id from cal_items where cal_item_id = :cal_item_id) from acs_events where recurrence_id= :recurrence_id and event_id <> :cal_item_id" + } +} + + Index: openacs-4/packages/calendar/tcl/calendar-display-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/tcl/Attic/calendar-display-procs.tcl,v diff -u -r1.6 -r1.7 --- openacs-4/packages/calendar/tcl/calendar-display-procs.tcl 10 Mar 2002 21:42:49 -0000 1.6 +++ openacs-4/packages/calendar/tcl/calendar-display-procs.tcl 11 Mar 2002 16:42:07 -0000 1.7 @@ -159,7 +159,7 @@ set item [subst $item_template] # ns_log Notice "bma-calendar: adding $item at $start_hour" - ns_set put $items $ns_set_pos $item + ns_set put $items $ns_set_pos [list $pretty_start_date $pretty_end_date $item] } } Index: openacs-4/packages/calendar/tcl/calendar-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/tcl/calendar-procs.tcl,v diff -u -r1.8 -r1.9 --- openacs-4/packages/calendar/tcl/calendar-procs.tcl 10 Mar 2002 21:42:49 -0000 1.8 +++ openacs-4/packages/calendar/tcl/calendar-procs.tcl 11 Mar 2002 16:42:07 -0000 1.9 @@ -14,49 +14,60 @@ #------------------------------------------------ # datetime info extraction -ad_proc calendar_make_datetime { event_date - event_time +ad_proc calendar_make_datetime { + event_date + {event_time ""} } { given a date, and a time, construct the proper date string to be imported into oracle. (yyyy-mm-dd hh24:mi format)s } { - + # MUST CONVERT TO ARRAYS! (ben) array set event_date_arr $event_date - array set event_time_arr $event_time - + if {![empty_string_p $event_time]} { + array set event_time_arr $event_time + } + # extract from even-date set year $event_date_arr(year) set day $event_date_arr(day) set month $event_date_arr(month) - - # extract from event_time - set hours $event_time_arr(hours) - set minutes $event_time_arr(minutes) - - # AM/PM? (ben - openacs fix) - if {[info exists event_time_arr(ampm)]} { - if {$event_time_arr(ampm)} { - if {$hours < 12} { - incr hours 12 + + if {![empty_string_p $event_time]} { + # extract from event_time + set hours $event_time_arr(hours) + set minutes $event_time_arr(minutes) + + # AM/PM? (ben - openacs fix) + if {[info exists event_time_arr(ampm)]} { + if {$event_time_arr(ampm)} { + if {$hours < 12} { + incr hours 12 + } } } + + if {$hours < 10} { + set hours "0$hours" + } + } - + + if {$month < 10} { set month "0$month" } - + if {$day < 10} { set day "0$day" } - - if {$hours < 10} { - set hours "0$hours" + + if {[empty_string_p $event_time]} { + return "$year-$month-$day" + } else { + return "$year-$month-$day $hours:$minutes" } - - return "$year-$month-$day $hours:$minutes" - + } @@ -353,12 +364,3 @@ } - - - - - - - - - Index: openacs-4/packages/calendar/www/cal-item-create.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/Attic/cal-item-create.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/calendar/www/cal-item-create.tcl 10 Mar 2002 21:42:49 -0000 1.7 +++ openacs-4/packages/calendar/www/cal-item-create.tcl 11 Mar 2002 16:42:07 -0000 1.8 @@ -22,12 +22,6 @@ {recurrence_p 0} } -if {$recurrence_p} { - # We must ask for recurrence information - ad_returntemplate cal-item-create-recurrence - ad_script_abort -} - if { $date == "now" } { set date [dt_sysdate] } @@ -38,8 +32,8 @@ # if {$no_time_p == 1} { - set no_time(hour) 0 - set no_time(minute) 0 + 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 { @@ -123,42 +117,12 @@ $creation_ip \ $creation_user] +if {$recurrence_p} { + # We must ask for recurrence information + ad_returnredirect "cal-item-create-recurrence?cal_item_id=$cal_item_id" + return +} + # set the date to be the date of the event set date [calendar_make_date [array get event_date]] ad_returnredirect "${return_url}?[export_url_vars date action view calendar_id]" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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.4 -r1.5 --- openacs-4/packages/calendar/www/cal-item-edit.tcl 12 Feb 2002 14:13:58 -0000 1.4 +++ openacs-4/packages/calendar/www/cal-item-edit.tcl 11 Mar 2002 16:42:07 -0000 1.5 @@ -11,6 +11,7 @@ {cal_item_id:integer} {view day} {action edit} + {no_time_p ""} {event_date:array ""} {start_time:array ""} {end_time:array ""} @@ -34,16 +35,23 @@ ad_returnredirect "${return_url}?[export_url_vars date action view]" + return } #------------------------------------------------------ # extract the time info -set start_datetime [calendar_make_datetime [array get event_date] [array get start_time]] +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]] +} -set end_datetime [calendar_make_datetime [array get event_date] [array get end_time]] - #----------------------------------------------------------------- # validate time interval ( start_time <= end_time ) Index: openacs-4/packages/calendar/www/cal-item-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/Attic/cal-item-oracle.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/calendar/www/cal-item-oracle.xql 9 Jan 2002 23:52:58 -0000 1.2 +++ openacs-4/packages/calendar/www/cal-item-oracle.xql 11 Mar 2002 16:42:07 -0000 1.3 @@ -10,7 +10,8 @@ to_char(start_date, 'HH24:MI') as start_time, to_char(end_date, 'HH24:MI') as end_time, nvl(a. name, e.name) as name, - nvl(e.description, a.description) as description + nvl(e.description, a.description) as description, + recurrence_id from acs_activities a, acs_events e, timespans s, Index: openacs-4/packages/calendar/www/cal-item.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/Attic/cal-item.adp,v diff -u -r1.8 -r1.9 --- openacs-4/packages/calendar/www/cal-item.adp 10 Mar 2002 21:42:49 -0000 1.8 +++ openacs-4/packages/calendar/www/cal-item.adp 11 Mar 2002 16:42:07 -0000 1.9 @@ -112,7 +112,7 @@ - Recurrence? + Repeat? No       @@ -121,7 +121,21 @@ + + + + + + This event is a single, non-recurring event + + This event is recurring. Find out more. + + + + + + @@ -131,17 +145,10 @@ - -
- - - - - -
+ Delete (this instance only)
@@ -162,6 +169,7 @@
+ Index: openacs-4/packages/calendar/www/cal-item.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/Attic/cal-item.tcl,v diff -u -r1.6 -r1.7 --- openacs-4/packages/calendar/www/cal-item.tcl 25 Feb 2002 22:14:20 -0000 1.6 +++ openacs-4/packages/calendar/www/cal-item.tcl 11 Mar 2002 16:42:07 -0000 1.7 @@ -92,7 +92,8 @@ to_char(start_date, 'MM/DD/YYYY') as start_date, to_char(end_date, 'HH24:MI') as end_time, nvl(a. name, e.name) as name, - nvl(e.description, a.description) as description + nvl(e.description, a.description) as description, + recurrence_id from acs_activities a, acs_events e, timespans s,