");
+ wprintf("- ");
+ if (p != NULL) {
+ escputs((char *)icalproperty_get_comment(p));
+ }
+ wprintf("");
+ wprintf("\n");
+ wprintf("");
wDumpContent(1);
if (created_new_vtodo) {
@@ -545,7 +590,8 @@ void display_edit_individual_task(icalcomponent *supplied_vtodo, long msgnum, ch
* \param supplied_vtodo the task to save
* \param msgnum number of the mesage in our db
*/
-void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from, int unread) {
+void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from, int unread)
+{
char buf[SIZ];
int delete_existing = 0;
icalproperty *prop;
@@ -570,7 +616,7 @@ void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from
icalcomponent_get_first_component(
vtodo, ICAL_VTODO_COMPONENT),
msgnum, from, unread
- );
+ );
return;
}
}
@@ -584,61 +630,84 @@ void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from
/** Replace values in the component with ones from the form */
while (prop = icalcomponent_get_first_property(vtodo,
- ICAL_SUMMARY_PROPERTY), prop != NULL) {
+ ICAL_SUMMARY_PROPERTY), prop != NULL) {
icalcomponent_remove_property(vtodo, prop);
icalproperty_free(prop);
}
- if (havebstr("summary")) {
-
- icalcomponent_add_property(vtodo,
- icalproperty_new_summary(bstr("summary")));
- } else {
- icalcomponent_add_property(vtodo,
- icalproperty_new_summary("Untitled Task"));
- }
+ if (havebstr("summary")) {
+
+ icalcomponent_add_property(vtodo,
+ icalproperty_new_summary(bstr("summary")));
+ } else {
+ icalcomponent_add_property(vtodo,
+ icalproperty_new_summary("Untitled Task"));
+ }
while (prop = icalcomponent_get_first_property(vtodo,
- ICAL_DESCRIPTION_PROPERTY), prop != NULL) {
+ ICAL_DESCRIPTION_PROPERTY), prop != NULL) {
icalcomponent_remove_property(vtodo, prop);
icalproperty_free(prop);
}
- icalcomponent_add_property(vtodo,
- icalproperty_new_description(bstr("description")));
+ if (!IsEmptyStr(bstr("description"))) {
+ icalcomponent_add_property(vtodo,
+ icalproperty_new_description(bstr("description")));
+ }
while (prop = icalcomponent_get_first_property(vtodo,
- ICAL_DTSTART_PROPERTY), prop != NULL) {
+ ICAL_DTSTART_PROPERTY), prop != NULL) {
icalcomponent_remove_property(vtodo, prop);
icalproperty_free(prop);
}
- icaltime_from_webform(&t, "dtstart");
- icalcomponent_add_property(vtodo,
- icalproperty_new_dtstart(t)
- );
-
+ if (IsEmptyStr(bstr("nodtstart"))) {
+ icaltime_from_webform(&t, "dtstart");
+ icalcomponent_add_property(vtodo,
+ icalproperty_new_dtstart(t)
+ );
+ }
+ while(prop = icalcomponent_get_first_property(vtodo,
+ ICAL_STATUS_PROPERTY), prop != NULL) {
+ icalcomponent_remove_property(vtodo,prop);
+ icalproperty_free(prop);
+ }
+ if (!IsEmptyStr(bstr("status"))) {
+ icalproperty_status taskStatus = icalproperty_string_to_status(
+ bstr("status"));
+ icalcomponent_set_status(vtodo, taskStatus);
+ }
while (prop = icalcomponent_get_first_property(vtodo,
- ICAL_DUE_PROPERTY), prop != NULL) {
+ ICAL_CATEGORIES_PROPERTY), prop != NULL) {
+ icalcomponent_remove_property(vtodo,prop);
+ icalproperty_free(prop);
+ }
+ if (!IsEmptyStr(bstr("category"))) {
+ prop = icalproperty_new_categories(bstr("category"));
+ icalcomponent_add_property(vtodo,prop);
+ }
+ while (prop = icalcomponent_get_first_property(vtodo,
+ ICAL_DUE_PROPERTY), prop != NULL) {
icalcomponent_remove_property(vtodo, prop);
icalproperty_free(prop);
}
- icaltime_from_webform(&t, "due");
- icalcomponent_add_property(vtodo,
- icalproperty_new_due(t)
- );
-
+ if (IsEmptyStr(bstr("nodue"))) {
+ icaltime_from_webform(&t, "due");
+ icalcomponent_add_property(vtodo,
+ icalproperty_new_due(t)
+ );
+ }
/** Give this task a UID if it doesn't have one. */
lprintf(9, "Give this task a UID if it doesn't have one.\n");
if (icalcomponent_get_first_property(vtodo,
- ICAL_UID_PROPERTY) == NULL) {
+ ICAL_UID_PROPERTY) == NULL) {
generate_uuid(buf);
icalcomponent_add_property(vtodo,
- icalproperty_new_uid(buf)
- );
+ icalproperty_new_uid(buf)
+ );
}
/** Increment the sequence ID */
lprintf(9, "Increment the sequence ID\n");
while (prop = icalcomponent_get_first_property(vtodo,
- ICAL_SEQUENCE_PROPERTY), (prop != NULL) ) {
+ ICAL_SEQUENCE_PROPERTY), (prop != NULL) ) {
i = icalproperty_get_sequence(prop);
lprintf(9, "Sequence was %d\n", i);
if (i > sequence) sequence = i;
@@ -648,8 +717,8 @@ void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from
++sequence;
lprintf(9, "New sequence is %d. Adding...\n", sequence);
icalcomponent_add_property(vtodo,
- icalproperty_new_sequence(sequence)
- );
+ icalproperty_new_sequence(sequence)
+ );
/**
* Encapsulate event into full VCALENDAR component. Clone it first,
@@ -717,7 +786,8 @@ void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from
void display_using_handler(long msgnum, int unread,
icalcomponent_kind which_kind,
void (*callback)(icalcomponent *, long, char*, int)
- ) {
+ )
+{
char buf[1024];
char from[128] = "";
char mime_partnum[256];
@@ -744,9 +814,9 @@ void display_using_handler(long msgnum, int unread,
mime_length = extract_int(&buf[5], 5);
if ( (!strcasecmp(mime_content_type, "text/calendar"))
- || (!strcasecmp(mime_content_type, "application/ics"))
- || (!strcasecmp(mime_content_type, "text/vtodo"))
- ) {
+ || (!strcasecmp(mime_content_type, "application/ics"))
+ || (!strcasecmp(mime_content_type, "text/vtodo"))
+ ) {
strcpy(relevant_partnum, mime_partnum);
}
}
@@ -771,10 +841,10 @@ void display_using_handler(long msgnum, int unread,
/** Subcomponents of desired type */
for (c = icalcomponent_get_first_component(cal,
- which_kind);
- (c != 0);
- c = icalcomponent_get_next_component(cal,
- which_kind)) {
+ which_kind);
+ (c != 0);
+ c = icalcomponent_get_next_component(cal,
+ which_kind)) {
callback(c, msgnum, from, unread);
}
icalcomponent_free(cal);
@@ -791,8 +861,8 @@ void display_using_handler(long msgnum, int unread,
*/
void display_calendar(long msgnum, int unread) {
display_using_handler(msgnum, unread,
- ICAL_VEVENT_COMPONENT,
- display_individual_cal);
+ ICAL_VEVENT_COMPONENT,
+ display_individual_cal);
}
/**
@@ -801,8 +871,8 @@ void display_calendar(long msgnum, int unread) {
*/
void display_task(long msgnum, int unread) {
display_using_handler(msgnum, unread,
- ICAL_VTODO_COMPONENT,
- display_individual_cal);
+ ICAL_VTODO_COMPONENT,
+ display_individual_cal);
}
/**
@@ -810,18 +880,18 @@ void display_task(long msgnum, int unread) {
*/
void display_edit_task(void) {
long msgnum = 0L;
-
+
/** Force change the room if we have to */
if (havebstr("taskrm")) {
- gotoroom(bstr("taskrm"));
+ gotoroom((char *)bstr("taskrm"));
}
msgnum = lbstr("msgnum");
if (msgnum > 0L) {
/** existing task */
display_using_handler(msgnum, 0,
- ICAL_VTODO_COMPONENT,
- display_edit_individual_task);
+ ICAL_VTODO_COMPONENT,
+ display_edit_individual_task);
}
else {
/** new task */
@@ -838,8 +908,8 @@ void save_task(void) {
msgnum = lbstr("msgnum");
if (msgnum > 0L) {
display_using_handler(msgnum, 0,
- ICAL_VTODO_COMPONENT,
- save_individual_task);
+ ICAL_VTODO_COMPONENT,
+ save_individual_task);
}
else {
save_individual_task(NULL, 0L, "", 0);
@@ -856,8 +926,8 @@ void display_edit_event(void) {
if (msgnum > 0L) {
/* existing event */
display_using_handler(msgnum, 0,
- ICAL_VEVENT_COMPONENT,
- display_edit_individual_event);
+ ICAL_VEVENT_COMPONENT,
+ display_edit_individual_event);
}
else {
/* new event */
@@ -875,8 +945,8 @@ void save_event(void) {
if (msgnum > 0L) {
display_using_handler(msgnum, 0,
- ICAL_VEVENT_COMPONENT,
- save_individual_event);
+ ICAL_VEVENT_COMPONENT,
+ save_individual_event);
}
else {
save_individual_event(NULL, 0L, "", 0);
@@ -905,8 +975,8 @@ void do_freebusy(char *req) {
len = strlen(who);
if ( (!strcasecmp(&who[len-4], ".vcf"))
- || (!strcasecmp(&who[len-4], ".ifb"))
- || (!strcasecmp(&who[len-4], ".vfb")) ) {
+ || (!strcasecmp(&who[len-4], ".ifb"))
+ || (!strcasecmp(&who[len-4], ".vfb")) ) {
who[len-4] = 0;
}
@@ -928,4 +998,3 @@ void do_freebusy(char *req) {
free(fb);
}
-
|