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.40 -r1.41 --- openacs-4/packages/calendar/www/cal-item-new.tcl 7 Aug 2017 23:48:05 -0000 1.40 +++ openacs-4/packages/calendar/www/cal-item-new.tcl 30 Apr 2018 13:54:38 -0000 1.41 @@ -1,5 +1,5 @@ ad_page_contract { - + Creating a new Calendar Item @author Dirk Gomez (openacs@dirkgomez.de) @@ -40,7 +40,7 @@ if { ![ad_form_new_p -key cal_item_id] } { set calendar_id [db_string get_calendar_id { select on_which_calendar as calendar_id - from cal_items + from cal_items where cal_item_id = :cal_item_id } -default ""] } else { @@ -60,17 +60,17 @@ {title:text(text) {label "[_ calendar.Title_1]"} - {html {size 45} maxlength 255} + {html {size 45 maxlength 255}} } {date:date {label "[_ calendar.Date_1]"} {format "YYYY MM DD"} {after_html { \[[_ calendar.y-m-d]\]} } } - {time_p:text(radio) + {time_p:text(radio) {label " "} {options {{"[_ calendar.All_Day_Event]" 0} - {"[_ calendar.Use_Hours_Below]" 1} }} + {"[_ calendar.Use_Hours_Below]" 1} }} } {start_time:date,optional @@ -82,11 +82,24 @@ {label "[_ calendar.End_Time]"} {format {[lc_get formbuilder_time_format]}} } + {location:text(text),optional + {label "[_ calendar.Location]"} + {html {size 44 maxlength 255}} + } {description:text(textarea),optional {label "[_ calendar.Description]"} {html {cols 45 rows 10}} } + {related_link_url:text(text),optional + {label "[_ calendar.RelatedLink]"} + {html {size 45 maxlength 255}} + } + {related_link_text:text(hidden),optional + } + {redirect_to_rel_link_p:text(hidden),optional + } + {calendar_id:integer(radio) {label "[_ calendar.Sharing]"} {options $calendar_options} @@ -95,23 +108,23 @@ template::add_body_script -script { function TimePChanged(elm) { - var form_name = "cal_item"; + var form_name = "cal_item"; - if (elm == null) return; - if (document.forms == null) return; - if (document.forms[form_name] == null) return; - if (elm.value == 0) { - disableTime(form_name); - } else { - enableTime(form_name); - } + if (elm == null) return; + if (document.forms == null) return; + if (document.forms[form_name] == null) return; + if (elm.value == 0) { + disableTime(form_name); + } else { + enableTime(form_name); + } } } if { [ad_form_new_p -key cal_item_id] } { ad_form -extend -name cal_item -form { - {repeat_p:text(radio) + {repeat_p:text(radio) {label "[_ calendar.Repeat_1]"} {options {{"[_ calendar.Yes]" 1} {"[_ calendar.No]" 0} }} @@ -121,8 +134,8 @@ ad_form -extend -name cal_item -form { {edit_what:text(radio) {label "[_ calendar.Apply_Changes_to]"} - {options {{"[_ calendar.This_Event]" this} - {"[_ calendar.All_Past_and_Future_Events]" all} + {options {{"[_ calendar.This_Event]" this} + {"[_ calendar.All_Past_and_Future_Events]" all} {"[_ calendar.This_and_All_Future_Events]" future}}} } } @@ -140,10 +153,10 @@ while { $format_string ne "" } { # Snip off the next token regexp {([^/\-.: ]*)([/\-.: ]*)(.*)} \ - $format_string match word sep format_string + $format_string match word sep format_string # Extract the trailing "t", if any regexp -nocase $template::util::date::token_exp $word \ - match token type + match token type # Output the widget set fragment_def $template::util::date::fragment_widgets([string toupper $token]) @@ -171,7 +184,7 @@ } -ad_form -extend -name cal_item -validate { +ad_form -extend -name cal_item -validate { {title {[string length $title] <= 4000} "Title is too long" } @@ -181,54 +194,58 @@ } -new_request { # Seamlessly create a private calendar if the user doesn't have one if { ![calendar::have_private_p -party_id $user_id] } { - set calendar_id [calendar::new \ - -owner_id $user_id \ - -private_p "t" \ - -calendar_name "Personal" \ - -package_id $package_id] - } - + set calendar_id [calendar::new \ + -owner_id $user_id \ + -private_p "t" \ + -calendar_name "Personal" \ + -package_id $package_id] + } + set date [calendar::from_sql_datetime -sql_date $ansi_date -format "YYY-MM-DD"] set repeat_p 0 if {[info exists start_time] && $start_time ne "" && $start_time != 0} { - # Set the start time - set start_hour $start_time - set start_time "{} {} {} $start_time 0 {} {HH24:MI}" - set end_time "{} {} {} [expr {$start_hour + 1}] 0 {} {HH24:MI}" - set time_p 1 + # Set the start time + set start_hour $start_time + set start_time "{} {} {} $start_time 0 {} {HH24:MI}" + set end_time "{} {} {} [expr {$start_hour + 1}] 0 {} {HH24:MI}" + set time_p 1 } else { - set time_p 0 - set start_hour $start_time - set start_time "{} {} {} 0 0 {} {HH24:MI}" - set end_time "{} {} {} 0 0 {} {HH24:MI}" + set time_p 0 + set start_hour $start_time + set start_time "{} {} {} 0 0 {} {HH24:MI}" + set end_time "{} {} {} 0 0 {} {HH24:MI}" set js "disableTime('cal_item');" } # set the calendar_id before setting item_types form element (see top of script) DAVEB set calendar_id [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) - set ansi_end_date $cal_item(end_date_ansi) - set start_time $cal_item(start_time) - set end_time $cal_item(end_time) - set title $cal_item(name) - set description $cal_item(description) - set repeat_p $cal_item(recurrence_id) - set item_type $cal_item(item_type) - set item_type_id $cal_item(item_type_id) - set calendar_id $cal_item(calendar_id) - set time_p $cal_item(time_p) + 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) + set ansi_end_date $cal_item(end_date_ansi) + set start_time $cal_item(start_time) + set end_time $cal_item(end_time) + set title $cal_item(name) + set description $cal_item(description) + set location $cal_item(location) + set related_link_url $cal_item(related_link_url) + set related_link_text $cal_item(related_link_text) + set redirect_to_rel_link_p $cal_item(redirect_to_rel_link_p) + set repeat_p $cal_item(recurrence_id) + set item_type $cal_item(item_type) + set item_type_id $cal_item(item_type_id) + set calendar_id $cal_item(calendar_id) + set time_p $cal_item(time_p) if { $time_p == 0 } { - set js "disableTime('cal_item');" + set js "disableTime('cal_item');" } else { - set js "enableTime('cal_item');" + set js "enableTime('cal_item');" } if { $repeat_p eq "" } { set repeat_p 0 @@ -244,26 +261,21 @@ element set_properties cal_item edit_what -widget hidden element set_value cal_item edit_what 0 } - # To support green calendar - # set date [template::util::date::from_ansi $ansi_start_date] - # set date [lindex $ansi_start_date 0] - set date [calendar::from_sql_datetime -sql_date $ansi_start_date -format "YYY-MM-DD"] + 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]] + 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 [calendar::to_sql_datetime -date $date -time ""] + set formatted_date "" + append formatted_date \ + [template::util::date::get_property year $date] " " \ + [template::util::date::get_property month $date] " " \ + [template::util::date::get_property day $date] + set date $formatted_date - 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] + 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 @@ -273,29 +285,35 @@ -end_date $end_date \ -name $title \ -description $description \ + -location $location \ + -related_link_url $related_link_url \ + -related_link_text $related_link_text \ + -redirect_to_rel_link_p $redirect_to_rel_link_p \ -calendar_id $calendar_id \ -item_type_id $item_type_id] if {$repeat_p} { ad_returnredirect [export_vars -base cal-item-create-recurrence { return_url cal_item_id}] } else { if {$return_url ne "./" } { - ad_returnredirect $return_url - } else { - ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] - } - } + 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 [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]" + # + # Format date + # + set formatted_date "" + append formatted_date \ + [template::util::date::get_property year $date] " " \ + [template::util::date::get_property month $date] " " \ + [template::util::date::get_property day $date] + set date $formatted_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 @@ -331,19 +349,24 @@ -end_date $end_date \ -name $title \ -description $description \ + -location $location \ + -related_link_url $related_link_url \ + -related_link_text $related_link_text \ + -redirect_to_rel_link_p $redirect_to_rel_link_p \ -item_type_id $item_type_id \ -edit_all_p $edit_all_p \ -edit_past_events_p $edit_past_events_p \ -calendar_id $calendar_id if {$return_url ne "./" } { - ad_returnredirect $return_url + ad_returnredirect $return_url } else { - ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] + ad_returnredirect [export_vars -base cal-item-view { cal_item_id }] } ad_script_abort - + } -on_request { + template::add_event_listener -id cal_item:elements:time_p:0 -script {TimePChanged(this);} template::add_event_listener -id cal_item:elements:time_p:1 -script {TimePChanged(this);} template::add_event_listener -id cal_item.date-button -script {showCalendarWithDateWidget('date', 'y-m-d');} @@ -360,7 +383,6 @@ - # Local variables: # mode: tcl # tcl-indent-level: 4