Index: openacs-4/packages/calendar/www/cal-item-new.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/cal-item-new.tcl,v diff -u -r1.20.2.2 -r1.20.2.3 --- openacs-4/packages/calendar/www/cal-item-new.tcl 24 Nov 2003 16:39:26 -0000 1.20.2.2 +++ openacs-4/packages/calendar/www/cal-item-new.tcl 25 Nov 2003 00:07:19 -0000 1.20.2.3 @@ -20,23 +20,14 @@ set package_id [ad_conn package_id] set user_id [ad_conn user_id] -if { [string equal $calendar_id "-1"] || [empty_string_p $calendar_id]} { - # Seamlessly create a private calendar if the user doesn't have one - - if { ![calendar_have_private_p $user_id] } { - calendar::new -owner_id $user_id -private_p "t" -calendar_name "Personal" -package_id $package_id - } -} else { - ad_require_permission $calendar_id cal_item_create -} - if {![info exists item_type_id]} { set item_type_id "" } set date [calendar::adjust_date -date $date -julian_date $julian_date] set ansi_date $date set calendar_list [calendar::calendar_list] +set calendar_options [calendar::calendar_list -privilege create] # TODO: Move into ad_form @@ -90,10 +81,9 @@ {label "[_ calendar.Description]"} {html {cols 60 rows 3 wrap soft} maxlength 255} } - {calendar_id:integer(radio) {label "[_ calendar.Sharing]"} - {options $calendar_list} + {options $calendar_options} } } @@ -162,6 +152,11 @@ "Title is too long" } } -new_request { + # Seamlessly create a private calendar if the user doesn't have one + if { ![calendar_have_private_p $user_id] } { + calendar::new -owner_id $user_id -private_p "t" -calendar_name "Personal" -package_id $package_id + } + set date [template::util::date::from_ansi $date] set repeat_p 0 if {[info exists start_time] && ![empty_string_p $start_time] && $start_time != 0} { @@ -176,9 +171,12 @@ set start_time "{} {} {} 0 0 {} {HH24:MI}" set end_time "{} {} {} 0 0 {} {HH24:MI}" } - set calendar_id [lindex [lindex $calendar_list 0] 1] + set calendar_id [lindex [lindex $calendar_options 0] 1] } -edit_request { calendar::item::get -cal_item_id $cal_item_id -array cal_item + + permission::require_write_permission -object_id $cal_item_id -creation_user $cal_item(creation_user) + set cal_item_id $cal_item(cal_item_id) set n_attachments $cal_item(n_attachments) set ansi_start_date $cal_item(start_date_ansi) @@ -200,7 +198,7 @@ } set edit_all_p $repeat_p if { !$repeat_p } { - element set_property cal_item edit_all_p -widget hidden + element set_properties cal_item edit_all_p -widget hidden } set date [template::util::date::from_ansi $ansi_start_date] set start_time [template::util::date::from_ansi $ansi_start_date [lc_get formbuilder_time_format]] @@ -209,12 +207,17 @@ 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] - set cal_item_id [calendar::item::new -start_date $start_date \ - -end_date $end_date \ - -name $title \ - -description $description \ - -calendar_id $calendar_id \ - -item_type_id $item_type_id] + if { ![calendar::personal_p -calendar_id $calendar_id] } { + permission::require_permission -object_id $calendar_id -privilege create + } + + set cal_item_id [calendar::item::new \ + -start_date $start_date \ + -end_date $end_date \ + -name $title \ + -description $description \ + -calendar_id $calendar_id \ + -item_type_id $item_type_id] if {$repeat_p} { ad_returnredirect [export_vars -base cal-item-create-recurrence { cal_item_id }] @@ -224,6 +227,12 @@ ad_script_abort } -edit_data { + # Require write permission on the item and create on the calendar into which we're putting it + permission::require_write_permission -object_id $cal_item_id + if { ![calendar::personal_p -calendar_id $calendar_id] } { + permission::require_permission -object_id $calendar_id -privilege create + } + # 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]