sprintf(divname, "rsvp%04x", ++divcount);
+ /* Convert timezones to something easy to display.
+ * It's safe to do this in memory because we're only changing it on the
+ * display side -- when we tell the server to do something with the object,
+ * the server will be working with its original copy in the database.
+ */
+ if ((cal) && (recursion_level == 0)) {
+ ical_dezonify(cal);
+ }
+
/* Leading HTML for the display of this object */
if (recursion_level == 0) {
StrBufAppendPrintf(Target, "<div class=\"mimepart\">\n");
/* See what we need to do with this */
if (method != NULL) {
- the_method = icalproperty_get_method(method);
char *title;
+ the_method = icalproperty_get_method(method);
StrBufAppendPrintf(Target, "<div id=\"%s_title\">", divname);
StrBufAppendPrintf(Target, "<img src=\"static/calarea_48x.gif\">");
StrBufAppendPrintf(Target, "</dd>\n");
}
+ if (icalcomponent_get_first_property(cal, ICAL_RRULE_PROPERTY)) {
+ /* Unusual string syntax used here in order to re-use existing translations */
+ StrBufAppendPrintf(Target, "<dt>%s:</dt><dd>%s.</dd>\n",
+ _("Recurrence"),
+ _("This is a recurring event")
+ );
+ }
+
/* If the component has attendees, iterate through them. */
for (p = icalcomponent_get_first_property(cal, ICAL_ATTENDEE_PROPERTY);
(p != NULL);
/* If this is a REPLY, display update button */
if (the_method == ICAL_METHOD_REPLY) {
- /* In the future, if we want to validate this object before
- * continuing, we can do it this way:
- serv_printf("ICAL whatever|%ld|%s|", msgnum, cal_partnum);
- serv_getln(buf, sizeof buf);
- }
- ***********/
-
/* Display the update buttons */
StrBufAppendPrintf(Target, "<p id=\"%s_question\" >"
"%s "
}
-/**
- * \brief process calendar mail atachment
- * Deserialize a calendar object in a message so it can be processed.
- * (This is the main entry point for these things)
- * \param part_source the part of the message we want to parse
- * \param msgnum number of the mesage in our db
- * \param cal_partnum the number of the calendar item
+/*
+ * Deserialize a calendar object in a message so it can be displayed.
+ *
*/
void cal_process_attachment(wc_mime_attachment *Mime)
{
icalrecur_iterator *ritr = NULL;
struct icaltimetype next;
int num_recur = 0;
+ int stop_rr = 0;
dtstart = icaltime_null_time();
dtend = icaltime_null_time();
ritr = icalrecur_iterator_new(recur, dtstart);
if (!ritr) return;
- int stop_rr = 0;
while (next = icalrecur_iterator_next(ritr), ((!icaltime_is_null_time(next))&&(!stop_rr)) ) {
++num_recur;
if (num_recur > 1) { /* Skip the first one. We already did it at the root. */
+ icalcomponent *cptr;
/* lprintf(9, "REPEATS: %s\n", icaltime_as_ical_string(next)); */
/* Note: anything we do here, we also have to do above for the root event. */
memcpy(Cal->from, from, len + 1);
Cal->cal_msgnum = msgnum;
- icalcomponent *cptr;
if (icalcomponent_isa(Cal->cal) == ICAL_VEVENT_COMPONENT) {
cptr = Cal->cal;
}
created_new_vtodo = 1;
}
- // TODO: Can we take all this and move it into a template?
+ /*/ TODO: Can we take all this and move it into a template? */
output_headers(1, 1, 1, 0, 0, 0);
wprintf("<!-- start task edit form -->");
p = icalcomponent_get_first_property(vtodo, ICAL_SUMMARY_PROPERTY);
- // Get summary early for title
+ /* Get summary early for title */
wprintf("<div class=\"box\">\n");
wprintf("<div class=\"boxlabel\">");
wprintf(_("Edit task"));
wprintf("<FORM METHOD=\"POST\" action=\"save_task\">\n");
wprintf("<div style=\"display: none;\">\n ");
wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
- wprintf("<INPUT TYPE=\"hidden\" NAME=\"msgnum\" VALUE=\"%ld\">\n",
- msgnum);
+ wprintf("<INPUT TYPE=\"hidden\" NAME=\"msgnum\" VALUE=\"%ld\">\n", msgnum);
+ wprintf("<INPUT TYPE=\"hidden\" NAME=\"return_to_summary\" VALUE=\"%d\">\n",
+ ibstr("return_to_summary"));
wprintf("</div>");
wprintf("<table class=\"calendar_background\"><tr><td>");
wprintf("<TABLE STYLE=\"border: none;\">\n");
}
wprintf(" >");
wprintf("</TD></TR>");
- // start category field
+ /* start category field */
p = icalcomponent_get_first_property(vtodo, ICAL_CATEGORIES_PROPERTY);
wprintf("<TR><TD>");
wprintf(_("Category:"));
}
wprintf("\">");
wprintf("</TD></TR>\n ");
- // end category field
+ /* end category field */
wprintf("<TR><TD>");
wprintf(_("Description:"));
wprintf("</TD><TD>");
icalcomponent_free(vtodo);
}
- /** Go back to the task list */
- readloop(readfwd);
+ /* Go back to wherever we came from */
+ if (ibstr("return_to_summary") == 1) {
+ summary();
+ }
+ else {
+ readloop(readfwd);
+ }
}
/* Force change the room if we have to */
if (havebstr("taskrm")) {
- gotoroom((char *)bstr("taskrm"));
+ gotoroom(sbstr("taskrm"));
}
msgnum = lbstr("msgnum");