char weekday_labels[7][32];
char month_labels[12][32];
long weekstart = 0;
+ icalproperty *rrule = NULL;
+ struct icalrecurrencetype recur;
+
+ char *tabnames[3];
+ tabnames[0] = _("Event");
+ tabnames[1] = _("Attendees");
+ tabnames[2] = _("Recurrence");
get_pref_long("weekstart", &weekstart, 17);
if (weekstart > 6) weekstart = 0;
if (supplied_vevent != NULL) {
vevent = supplied_vevent;
+
+ /* Convert all timestamps to UTC to make them easier to process. */
+ ical_dezonify(vevent);
+
/*
* If we're looking at a fully encapsulated VCALENDAR
* rather than a VEVENT component, attempt to use the first
wprintf("<INPUT TYPE=\"hidden\" NAME=\"day\" VALUE=\"%s\">\n",
bstr("day"));
- char *tabnames[] = {
- _("Event"),
- _("Attendees"),
- _("Recurrence")
- };
tabbed_dialog(3, tabnames);
begin_tab(0, 3);
wprintf(_("Notes"));
wprintf("</B></TD><TD>\n"
"<TEXTAREA NAME=\"description\" wrap=soft "
- "ROWS=5 COLS=80 WIDTH=80>\n"
+ "ROWS=5 COLS=72 WIDTH=72>\n"
);
p = icalcomponent_get_first_property(vevent, ICAL_DESCRIPTION_PROPERTY);
if (p != NULL) {
wprintf("</TD><TD>"
"<TEXTAREA %s NAME=\"attendees\" id=\"attendees_box\" wrap=soft "
- "ROWS=3 COLS=80 WIDTH=80>\n",
+ "ROWS=10 COLS=72 WIDTH=72>\n",
(organizer_is_me ? "" : "DISABLED ")
);
i = 0;
/* Recurrence tab */
begin_tab(2, 3);
- icalproperty *rrule = NULL;
- struct icalrecurrencetype recur;
rrule = icalcomponent_get_first_property(vevent, ICAL_RRULE_PROPERTY);
if (rrule) {
wprintf("<table border=0 cellspacing=\"10\" width=100%%>\n");
- /* Table row displaying raw RRULE data, FIXME remove when finished */
- if (rrule) {
- wprintf("<tr><td><b>");
- wprintf("Raw data");
- wprintf("</b></td><td>");
- wprintf("<tt>%s</tt>", icalrecurrencetype_as_string(&recur));
- wprintf("</td></tr>\n");
- }
-
char *frequency_units[] = {
_("seconds"),
_("minutes"),
int rrymweek = rrmweek;
int rrymweekday = rrmweekday;
int rrymonth = t_start.month;
-
- lprintf(9, "FIXME: RRYMWEEK %d, RRYMWEEKDAY %d, RRYMONTH %d\n", rrymweek, rrymweekday, rrymonth);
-
int which_rryeartype_is_preselected = 0;
if ( (recur.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX)
if (supplied_vevent != NULL) {
vevent = supplied_vevent;
+
+ /* Convert all timestamps to UTC to make them easier to process. */
+ ical_dezonify(vevent);
+
/*
* If we're looking at a fully encapsulated VCALENDAR
* rather than a VEVENT component, attempt to use the first
icaltime_from_webform(&event_start, "dtstart");
}
- /*
- * The following odd-looking snippet of code looks like it
- * takes some unnecessary steps. It is done this way because
- * libical incorrectly turns an "all day event" into a normal
- * event starting at midnight (i.e. it serializes as date/time
- * instead of just date) unless icalvalue_new_date() is used.
- * So we force it, if this is an all day event.
- */
prop = icalproperty_new_dtstart(event_start);
+
if (all_day_event) {
+ /* Force it to serialize as a date-only rather than date/time */
icalproperty_set_value(prop, icalvalue_new_date(event_start));
}
/* First, strip out the parenthesized partstats. */
strcpy(form_attendees, bstr("attendees"));
- stripout(form_attendees, '(', ')');
+ do {
+ i = strlen(form_attendees);
+ stripout(form_attendees, '(', ')');
+ j = strlen(form_attendees);
+ } while (i != j);
/* Next, change any commas to newlines, because we want newline-separated attendees. */
j = strlen(form_attendees);
icalcomponent_free(vevent);
}
- /* If this was a save or delete, go back to the calendar view. */
+ /* If this was a save or delete, go back to the calendar or summary view. */
if (!havebstr("check_button")) {
- readloop("readfwd");
+ if (!strcasecmp(bstr("calview"), "summary")) {
+ summary();
+ }
+ else {
+ readloop(readfwd);
+ }
}
}