}
else {
tt = icaltime_as_timet(t);
- webcit_fmt_date(buf, tt, 0);
+ webcit_fmt_date(buf, tt, DATEFMT_FULL);
StrBufAppendPrintf(Target, "<dt>");
StrBufAppendPrintf(Target, _("Starting date/time:"));
StrBufAppendPrintf(Target, "</dt><dd>%s</dd>", buf);
if (p != NULL) {
t = icalproperty_get_dtend(p);
tt = icaltime_as_timet(t);
- webcit_fmt_date(buf, tt, 0);
+ webcit_fmt_date(buf, tt, DATEFMT_FULL);
StrBufAppendPrintf(Target, "<dt>");
StrBufAppendPrintf(Target, _("Ending date/time:"));
StrBufAppendPrintf(Target, "</dt><dd>%s</dd>", buf);
void cal_process_attachment(wc_mime_attachment *Mime)
{
icalcomponent *cal;
-
+
cal = icalcomponent_new_from_string(ChrPtr(Mime->Data));
FlushStrBuf(Mime->Data);
if (cal == NULL) {
if (supplied_vtodo != NULL) {
vtodo = supplied_vtodo;
- /**
+ /*
+ * It's safe to convert to UTC here because there are no recurrences to worry about.
+ */
+ ical_dezonify(vtodo);
+
+ /*
* If we're looking at a fully encapsulated VCALENDAR
* rather than a VTODO component, attempt to use the first
* relevant VTODO subcomponent. If there is none, the
else
IcalTime = icaltime_current_time_with_zone(get_default_icaltimezone());
display_icaltimetype_as_webform(&IcalTime, "dtstart", 0);
+
+ wprintf("<INPUT TYPE=\"CHECKBOX\" NAME=\"dtstart_time\" ID=\"dtstart_time\" VALUE=\"yes\"");
+ if (!IcalTime.is_date) {
+ wprintf("CHECKED=\"CHECKED\"");
+ }
+ wprintf(">");
+ wprintf(_("Time associated"));
wprintf("</TD></TR>\n");
wprintf("<TR><TD>");
else
IcalTime = icaltime_current_time_with_zone(get_default_icaltimezone());
display_icaltimetype_as_webform(&IcalTime, "due", 0);
-
+
+ wprintf("<INPUT TYPE=\"CHECKBOX\" NAME=\"due_time\" ID=\"due_time\" VALUE=\"yes\"");
+ if (!IcalTime.is_date) {
+ wprintf("CHECKED=\"CHECKED\"");
+ }
+ wprintf(">");
+ wprintf(_("Time associated"));
wprintf("</TD></TR>\n");
todoStatus = icalcomponent_get_status(vtodo);
wprintf("<TR><TD>\n");
icalproperty_new_summary(bstr("summary")));
} else {
icalcomponent_add_property(vtodo,
- icalproperty_new_summary("Untitled Task"));
+ icalproperty_new_summary(_("Untitled Task")));
}
while (prop = icalcomponent_get_first_property(vtodo,
icalproperty_free(prop);
}
if (IsEmptyStr(bstr("nodtstart"))) {
- icaltime_from_webform(&t, "dtstart");
+ if (yesbstr("dtstart_time")) {
+ icaltime_from_webform(&t, "dtstart");
+ }
+ else {
+ icaltime_from_webform_dateonly(&t, "dtstart");
+ }
icalcomponent_add_property(vtodo,
icalproperty_new_dtstart(t)
);
icalcomponent_remove_property(vtodo,prop);
icalproperty_free(prop);
}
+ while(prop = icalcomponent_get_first_property(vtodo,
+ ICAL_PERCENTCOMPLETE_PROPERTY), prop != NULL) {
+ icalcomponent_remove_property(vtodo,prop);
+ icalproperty_free(prop);
+ }
+
if (havebstr("status")) {
- icalproperty_status taskStatus = icalproperty_string_to_status(
- bstr("status"));
+ icalproperty_status taskStatus = icalproperty_string_to_status(bstr("status"));
icalcomponent_set_status(vtodo, taskStatus);
+ icalcomponent_add_property(vtodo,
+ icalproperty_new_percentcomplete(
+ (strcasecmp(bstr("status"), "completed") ? 0 : 100)
+ )
+ );
+ }
+ else {
+ icalcomponent_add_property(vtodo, icalproperty_new_percentcomplete(0));
}
while (prop = icalcomponent_get_first_property(vtodo,
ICAL_CATEGORIES_PROPERTY), prop != NULL) {
icalproperty_free(prop);
}
if (IsEmptyStr(bstr("nodue"))) {
- icaltime_from_webform(&t, "due");
+ if (yesbstr("due_time")) {
+ icaltime_from_webform(&t, "due");
+ }
+ else {
+ icaltime_from_webform_dateonly(&t, "due");
+ }
icalcomponent_add_property(vtodo,
icalproperty_new_due(t)
);
/* Force change the room if we have to */
if (havebstr("taskrm")) {
- gotoroom((char *)bstr("taskrm"));
+ gotoroom(sbstr("taskrm"));
}
msgnum = lbstr("msgnum");
InitModule_CALENDAR
(void)
{
+ RegisterPreference("daystart", _("Calendar day view begins at:"), PRF_INT, NULL);
+ RegisterPreference("dayend", _("Calendar day view ends at:"), PRF_INT, NULL);
+ RegisterPreference("weekstart", _("Week starts on:"), PRF_INT, NULL);
+
WebcitAddUrlHandler(HKEY("display_edit_task"), display_edit_task, 0);
WebcitAddUrlHandler(HKEY("save_task"), save_task, 0);
WebcitAddUrlHandler(HKEY("display_edit_event"), display_edit_event, 0);