HUGE PATCH. This moves all of mime_parser.c and all
[citadel.git] / webcit / calendar.c
index 59cfe2715165bbf8598c33729df88edae9090777..3ced19b1d177605966ae6a6630a3836d18bcb918 100644 (file)
@@ -170,7 +170,7 @@ void cal_process_object(icalcomponent *cal,
                        }
                        else {
                                tt = icaltime_as_timet(t);
-                               fmt_date(buf, tt, 0);
+                               webcit_fmt_date(buf, tt, 0);
                                wprintf("<dt>");
                                wprintf(_("Starting date/time:"));
                                wprintf("</dt><dd>%s</dd>", buf);
@@ -181,7 +181,7 @@ void cal_process_object(icalcomponent *cal,
                if (p != NULL) {
                        t = icalproperty_get_dtend(p);
                        tt = icaltime_as_timet(t);
-                       fmt_date(buf, tt, 0);
+                       webcit_fmt_date(buf, tt, 0);
                        wprintf("<dt>");
                        wprintf(_("Ending date/time:"));
                        wprintf("</dt><dd>%s</dd>", buf);
@@ -254,8 +254,9 @@ void cal_process_object(icalcomponent *cal,
                                                _("CONFLICT:")
                                        )
                                );
+                               wprintf("</dt><dd>");
                                escputs(conflict_message);
-                               wprintf("</dt>\n");
+                               wprintf("</dd>\n");
                        }
                }
                lprintf(9, "...done.\n");
@@ -263,14 +264,15 @@ void cal_process_object(icalcomponent *cal,
                wprintf("</dl>");
 
                /** Display the Accept/Decline buttons */
-               wprintf("<p id=\"%s_question\" class=\"buttons\">"
+               wprintf("<p id=\"%s_question\">"
                        "%s "
+                       "&nbsp;&nbsp;&nbsp;<span class=\"button_link\"> "
                        "<a href=\"javascript:RespondToInvitation('%s_question','%s_title','%ld','%s','Accept');\">%s</a>"
-                       "<span> | </span>"
+                       "</span>&nbsp;&nbsp;&nbsp;<span class=\"button_link\">"
                        "<a href=\"javascript:RespondToInvitation('%s_question','%s_title','%ld','%s','Tentative');\">%s</a>"
-                       "<span> | </span>"
+                       "</span>&nbsp;&nbsp;&nbsp;<span class=\"button_link\">"
                        "<a href=\"javascript:RespondToInvitation('%s_question','%s_title','%ld','%s','Decline');\">%s</a>"
-                       "</p>\n",
+                       "</span></p>\n",
                        divname,
                        _("How would you like to respond to this invitation?"),
                        divname, divname, msgnum, cal_partnum, _("Accept"),
@@ -291,12 +293,13 @@ void cal_process_object(icalcomponent *cal,
                 ***********/
 
                /** Display the update buttons */
-               wprintf("<div id=\"%s_question\" class=\"buttons\">"
-                       "%s"
+               wprintf("<p id=\"%s_question\" >"
+                       "%s "
+                       "&nbsp;&nbsp;&nbsp;<span class=\"button_link\"> "
                        "<a href=\"javascript:HandleRSVP('%s_question','%s_title','%ld','%s','Update');\">%s</a>"
-                       "<span> | </span>"
+                       "</span>&nbsp;&nbsp;&nbsp;<span class=\"button_link\">"
                        "<a href=\"javascript:HandleRSVP('%s_question','%s_title','%ld','%s','Ignore');\">%s</a>"
-                       "</p>\n",
+                       "</span></p>\n",
                        divname,
                        _("Click <i>Update</i> to accept this reply and update your calendar."),
                        divname, divname, msgnum, cal_partnum, _("Update"),
@@ -307,7 +310,7 @@ void cal_process_object(icalcomponent *cal,
 
        /** Trailing HTML for the display of this object */
        if (recursion_level == 0) {
-               wprintf("</div>\n");
+               wprintf("<p>&nbsp;</p></div>\n");
        }
 }
 
@@ -358,8 +361,7 @@ void respond_to_request(void) {
        serv_getln(buf, sizeof buf);
 
        if (buf[0] == '2') {
-               wprintf("<table border=0 cellpadding=0><tr><td>");
-               wprintf("<td><img align=\"center\" src=\"static/calarea_48x.gif\"></td><td><b><i>");
+               wprintf("<img src=\"static/calarea_48x.gif\"><span>");
                if (!strcasecmp(bstr("sc"), "accept")) {
                        wprintf(_("You have accepted this meeting invitation.  "
                                "It has been entered into your calendar.")
@@ -375,10 +377,11 @@ void respond_to_request(void) {
                }
                wprintf(" ");
                wprintf(_("A reply has been sent to the meeting organizer."));
-               wprintf("</i></b></td></tr></table>");
+               wprintf("</span>");
        } else {
-               wprintf("<img align=\"center\" src=\"static/error.gif\">&nbsp;<b><i>");
+               wprintf("<img align=\"center\" src=\"static/error.gif\"><span>");
                wprintf("%s\n", &buf[4]);
+               wprintf("</span>");
        }
 
        end_ajax_response();
@@ -402,8 +405,7 @@ void handle_rsvp(void) {
        serv_getln(buf, sizeof buf);
 
        if (buf[0] == '2') {
-               wprintf("<table border=0 cellpadding=0><tr><td>");
-               wprintf("<td><img align=\"center\" src=\"static/calarea_48x.gif\"></td><td><b><i>");
+               wprintf("<img src=\"static/calarea_48x.gif\"><span>");
                if (!strcasecmp(bstr("sc"), "update")) {
                        wprintf(_("Your calendar has been updated to reflect this RSVP."));
                } else if (!strcasecmp(bstr("sc"), "ignore")) {
@@ -411,9 +413,10 @@ void handle_rsvp(void) {
                                "Your calendar has <b>not</b> been updated.")
                        );
                }
-               wprintf("</i></b></td></tr></table>");
+               wprintf("</span>");
        } else {
-               wprintf("<img src=\"static/error.gif\" align=center> %s\n", &buf[4]);
+               wprintf("<img src=\"static/error.gif\"><span> %s\n", &buf[4]);
+               wprintf("</span>");
        }
 
        end_ajax_response();
@@ -443,15 +446,15 @@ void handle_rsvp(void) {
  * \param cal Our calendar to process
  * \param msgnum number of the mesage in our db
  */
-void display_individual_cal(icalcomponent *cal, long msgnum) {
-
-       WC->num_cal += 1;
-
-       WC->disp_cal = realloc(WC->disp_cal,
-                       (sizeof(struct disp_cal) * WC->num_cal) );
-       WC->disp_cal[WC->num_cal - 1].cal = icalcomponent_new_clone(cal);
-
-       WC->disp_cal[WC->num_cal - 1].cal_msgnum = msgnum;
+void display_individual_cal(icalcomponent *cal, long msgnum)
+{
+       struct wcsession *WCC = WC;     /* stack this for faster access (WC is a function) */
+
+       WCC->num_cal += 1;
+       WCC->disp_cal = realloc(WC->disp_cal, (sizeof(struct disp_cal) * WCC->num_cal) );
+       WCC->disp_cal[WCC->num_cal - 1].cal = icalcomponent_new_clone(cal);
+       ical_dezonify(WCC->disp_cal[WCC->num_cal - 1].cal);
+       WCC->disp_cal[WCC->num_cal - 1].cal_msgnum = msgnum;
 }
 
 
@@ -497,15 +500,14 @@ void display_edit_individual_task(icalcomponent *supplied_vtodo, long msgnum) {
        }
 
        output_headers(1, 1, 2, 0, 0, 0);
-       wprintf("<div id=\"banner\">\n"
-               "<TABLE class=\"calendar_banner\"><TR>"
-               "<TD><img src=\"static/taskmanag_48x.gif\"></TD>"
-               "<td><SPAN CLASS=\"titlebar\">");
+       wprintf("<div id=\"banner\">\n");
+       wprintf("<img src=\"static/taskmanag_48x.gif\">");
+       wprintf("<h1>");
        wprintf(_("Edit task"));
-       wprintf("</SPAN>"
-               "</TD></TR></TABLE>\n"
-               "</div>\n<div id=\"content\">\n"
-       );
+       wprintf("</h1>");
+       wprintf("</div>\n");
+
+       wprintf("<div id=\"content\" class=\"service\">\n");
 
        wprintf("<div class=\"fix_scrollbar_bug\">"
                "<table class=\"calendar_background\"><tr><td>");
@@ -635,9 +637,15 @@ void save_individual_task(icalcomponent *supplied_vtodo, long msgnum) {
                        icalcomponent_remove_property(vtodo, prop);
                        icalproperty_free(prop);
                }
-               icalcomponent_add_property(vtodo,
-                       icalproperty_new_summary(bstr("summary")));
-               
+               if (!IsEmptyStr(bstr("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) {
                        icalcomponent_remove_property(vtodo, prop);
@@ -770,7 +778,8 @@ void display_using_handler(long msgnum,
        char *relevant_source = NULL;
        icalcomponent *cal, *c;
 
-       sprintf(buf, "MSG0 %ld|0", msgnum);     /* unfortunately we need the mime headers */
+       relevant_partnum[0] = '\0';
+       sprintf(buf, "MSG4 %ld", msgnum);       /* we need the mime headers */
        serv_puts(buf);
        serv_getln(buf, sizeof buf);
        if (buf[0] != '1') return;
@@ -786,6 +795,9 @@ void display_using_handler(long msgnum,
                        if (!strcasecmp(mime_content_type, "text/calendar")) {
                                strcpy(relevant_partnum, mime_partnum);
                        }
+                       else if (!strcasecmp(mime_content_type, "text/vtodo")) {
+                               strcpy(relevant_partnum, mime_partnum);
+                       }
 
                }
        }