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.26 -r1.27 --- openacs-4/packages/calendar/www/cal-item-new.tcl 13 Jan 2005 13:56:28 -0000 1.26 +++ openacs-4/packages/calendar/www/cal-item-new.tcl 8 Aug 2006 21:26:18 -0000 1.27 @@ -15,6 +15,7 @@ {start_time ""} {end_time ""} {view "month"} + {return_url "./"} } auth::require_login @@ -38,8 +39,9 @@ from cal_items where cal_item_id = :cal_item_id } -default ""] +} else { + set calendar_id [lindex [lindex $calendar_options 0] 1] } - # TODO: Move into ad_form if { [exists_and_not_null cal_item_id] } { set page_title "One calendar item" @@ -49,22 +51,18 @@ set ad_form_mode edit } -ad_form -name cal_item -form { +ad_form -name cal_item -export { return_url } -form { {cal_item_id:key} {title:text(text) {label "[_ calendar.Title_1]"} - {html {size 60} maxlength 255} + {html {size 45} maxlength 255} } - - {date:text(text) + {date:date {label "[_ calendar.Date_1]"} - {html {id sel1}} - {after_html { \[y-m-d \] - }} - - } - + {format "YYYY MM DD"} + {html {id date} } + {after_html { \[[_ calendar.y-m-d]\]} } } {time_p:text(radio) {label " "} {html {onClick "javascript:TimePChanged(this);"}} @@ -84,7 +82,7 @@ {description:text(textarea),optional {label "[_ calendar.Description]"} - {html {cols 60 rows 3 wrap soft} maxlength 255} + {html {cols 45 rows 10 wrap soft} maxlength 255} } {calendar_id:integer(radio) {label "[_ calendar.Sharing]"} @@ -102,7 +100,7 @@ } } else { ad_form -extend -name cal_item -form { - {edit_all_p:text(radio) + {edit_all_p:text(radio) {label "[_ calendar.Apply_to_all]"} {options {{"[_ calendar.Yes]" 1} {"[_ calendar.No]" 0} }} @@ -146,7 +144,8 @@ ad_form -extend -name cal_item -form { {item_type_id:integer(select),optional {label "[_ calendar.Type_1]"} - {options {$cal_item_types}} + {options {$cal_item_types} } + {help_text "[_ calendar.Type_Help]"} } } } @@ -156,14 +155,16 @@ {title {[string length $title] <= 4000} "Title is too long" } + {description {[string equal [set msg [ad_html_security_check $description]] ""]} + $msg + } } -new_request { # Seamlessly create a private calendar if the user doesn't have one if { ![calendar::have_private_p -party_id $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 date $ansi_date + set date [calendar::from_sql_datetime -sql_date $ansi_date -format "YYY-MM-DD"] set repeat_p 0 if {[info exists start_time] && ![empty_string_p $start_time] && $start_time != 0} { # Set the start time @@ -177,11 +178,13 @@ set start_time "{} {} {} 0 0 {} {HH24:MI}" set end_time "{} {} {} 0 0 {} {HH24:MI}" } + # set the calendar_id before setting item_types form element (see top of script) DAVEB 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) @@ -203,29 +206,39 @@ } else { set repeat_p 1 } - set edit_all_p $repeat_p + # Make the user explicitly choose edit all or not + # this is a usability issue, since it prevents unexpected + # behavior. According to carlb, this is how palm os works + # and that sounds like a reasonable interface to emulate + # set edit_all_p $repeat_p if { !$repeat_p } { element set_properties cal_item edit_all_p -widget hidden + element set_value cal_item edit_all_p 0 } # To support green calendar # set date [template::util::date::from_ansi $ansi_start_date] - set date [lindex $ansi_start_date 0] + # set date [lindex $ansi_start_date 0] + set date [calendar::from_sql_datetime -sql_date $ansi_start_date -format "YYY-MM-DD"] set start_time [template::util::date::from_ansi $ansi_start_date [lc_get formbuilder_time_format]] set end_time [template::util::date::from_ansi $ansi_end_date [lc_get formbuilder_time_format]] } -new_data { + # To support green calendar - set date [split $date "-"] - lappend date "" - lappend date "" - lappend date "" - lappend date "YYYY MM DD" + # set date [split $date "-"] + # lappend date "" + # lappend date "" + # lappend date "" + # lappend date "YYYY MM DD" + # set date [calendar::to_sql_datetime -date $date -time ""] + + set date "[template::util::date::get_property year $date] [template::util::date::get_property month $date] [template::util::date::get_property day $date]" + 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] 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 \ @@ -235,19 +248,25 @@ -item_type_id $item_type_id] if {$repeat_p} { - ad_returnredirect [export_vars -base cal-item-create-recurrence { cal_item_id }] + ad_returnredirect [export_vars -base cal-item-create-recurrence { return_url cal_item_id}] } else { - ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] - } + if { [string compare $return_url "./"] } { + ad_returnredirect $return_url + } else { + ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] + } + } ad_script_abort } -edit_data { - set date [split $date "-"] - lappend date "" - lappend date "" - lappend date "" - lappend date "YYYY MM DD" + #set date [split $date "-"] + #lappend date "" + #lappend date "" + #lappend date "" + #lappend date "YYYY MM DD" + # set date [calendar::to_sql_datetime -date $date -time ""] + set date "[template::util::date::get_property year $date] [template::util::date::get_property month $date] [template::util::date::get_property day $date]" # 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 @@ -259,6 +278,8 @@ 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] + + # Do the edit calendar::item::edit \ -cal_item_id $cal_item_id \ @@ -270,7 +291,11 @@ -edit_all_p $edit_all_p \ -calendar_id $calendar_id - ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] + if { [string compare $return_url "./"] } { + ad_returnredirect $return_url + } else { + ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] + } ad_script_abort }