* All OS-level includes are now included from webcit.h instead of from
[citadel.git] / webcit / event.c
index 832bac7a48b916840001667e104cc8550af62b4f..7211a2c7b9e012c8e962849884b477d909fa4b7f 100644 (file)
@@ -5,25 +5,6 @@
  *
  */
 
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/socket.h>
-#include <limits.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <string.h>
-#include <pwd.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
 #include "webcit.h"
 #include "webserver.h"
 
@@ -92,7 +73,37 @@ void display_edit_individual_event(icalcomponent *supplied_vevent, long msgnum)
                "</div>\n<div id=\"content\">\n"
        );
 
-       wprintf("<center><table border=0 width=99%% bgcolor=\"#ffffff\"><tr><td>\n");
+       wprintf("<script type=\"text/javascript\">"
+               "function grey_all_day() { "
+                       "if (document.EventForm.alldayevent.checked) {"
+                               "document.EventForm.dtstart_hour.value='0';"
+                               "document.EventForm.dtstart_hour.disabled = true;"
+                               "document.EventForm.dtstart_minute.value='0';"
+                               "document.EventForm.dtstart_minute.disabled = true;"
+                               "document.EventForm.dtend_hour.value='0';"
+                               "document.EventForm.dtend_hour.disabled = true;"
+                               "document.EventForm.dtend_minute.value='0';"
+                               "document.EventForm.dtend_minute.disabled = true;"
+                               "document.EventForm.dtend_month.disabled = true;"
+                               "document.EventForm.dtend_day.disabled = true;"
+                               "document.EventForm.dtend_year.disabled = true;"
+                       "}"
+                       "else {"
+                               "document.EventForm.dtstart_hour.disabled = false;"
+                               "document.EventForm.dtstart_minute.disabled = false;"
+                               "document.EventForm.dtend_hour.disabled = false;"
+                               "document.EventForm.dtend_minute.disabled = false;"
+                               "document.EventForm.dtend_month.disabled = false;"
+                               "document.EventForm.dtend_day.disabled = false;"
+                               "document.EventForm.dtend_year.disabled = false;"
+                       "}"
+               "}"
+               "</script>\n"
+       );
+
+
+       wprintf("<div id=\"fix_scrollbar_bug\">"
+               "<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
 
        /************************************************************
         * Uncomment this to see the UID in calendar events for debugging
@@ -178,33 +189,8 @@ void display_edit_individual_event(icalcomponent *supplied_vevent, long msgnum)
        display_icaltimetype_as_webform(&t_start, "dtstart");
 
        wprintf("<INPUT TYPE=\"checkbox\" NAME=\"alldayevent\" "
-               "VALUE=\"yes\" onClick=\""
-""
-"                      if (this.checked) { "
-"                              this.form.dtstart_hour.value='0'; "
-"                              this.form.dtstart_hour.disabled = true; "
-"                              this.form.dtstart_minute.value='0'; "
-"                              this.form.dtstart_minute.disabled = true; "
-"                              this.form.dtend_hour.value='0'; "
-"                              this.form.dtend_hour.disabled = true; "
-"                              this.form.dtend_minute.value='0'; "
-"                              this.form.dtend_minute.disabled = true; "
-"                              this.form.dtend_month.disabled = true; "
-"                              this.form.dtend_day.disabled = true; "
-"                              this.form.dtend_year.disabled = true; "
-"                      } "
-"                      else { "
-"                              this.form.dtstart_hour.disabled = false; "
-"                              this.form.dtstart_minute.disabled = false; "
-"                              this.form.dtend_hour.disabled = false; "
-"                              this.form.dtend_minute.disabled = false; "
-"                              this.form.dtend_month.disabled = false; "
-"                              this.form.dtend_day.disabled = false; "
-"                              this.form.dtend_year.disabled = false; "
-"                      } "
-" "
-" "
-"              \" %s >All day event",
+               "VALUE=\"yes\" onClick=\"grey_all_day();\""
+               " %s >All day event",
                (t_start.is_date ? "CHECKED" : "" )
        );
 
@@ -272,7 +258,7 @@ void display_edit_individual_event(icalcomponent *supplied_vevent, long msgnum)
                        striplt(organizer_string);
                        lprintf(9, "ISME %s\n", organizer_string);
                        serv_printf("ISME %s", organizer_string);
-                       serv_gets(buf);
+                       serv_getln(buf, sizeof buf);
                        lprintf(9, "%s\n", buf);
                        if (buf[0] == '2') {
                                organizer_is_me = 1;
@@ -373,35 +359,11 @@ void display_edit_individual_event(icalcomponent *supplied_vevent, long msgnum)
 
        wprintf("</FORM>\n");
        
+       wprintf("</td></tr></table></div>\n");
        wprintf("<script type=\"text/javascript\">"
-               "<!--"
-                       "if (document.EventForm.alldayevent.checked) {"
-                               "document.EventForm.dtstart_hour.value='0';"
-                               "document.EventForm.dtstart_hour.disabled = true;"
-                               "document.EventForm.dtstart_minute.value='0';"
-                               "document.EventForm.dtstart_minute.disabled = true;"
-                               "document.EventForm.dtend_hour.value='0';"
-                               "document.EventForm.dtend_hour.disabled = true;"
-                               "document.EventForm.dtend_minute.value='0';"
-                               "document.EventForm.dtend_minute.disabled = true;"
-                               "document.EventForm.dtend_month.disabled = true;"
-                               "document.EventForm.dtend_day.disabled = true;"
-                               "document.EventForm.dtend_year.disabled = true;"
-                       "}"
-                       "else {"
-                               "document.EventForm.dtstart_hour.disabled = false;"
-                               "document.EventForm.dtstart_minute.disabled = false;"
-                               "document.EventForm.dtend_hour.disabled = false;"
-                               "document.EventForm.dtend_minute.disabled = false;"
-                               "document.EventForm.dtend_month.disabled = false;"
-                               "document.EventForm.dtend_day.disabled = false;"
-                               "document.EventForm.dtend_year.disabled = false;"
-                       "}"
-               "//-->"
+               "grey_all_day();"
                "</script>\n"
        );
-
-       wprintf("</td></tr></table></center>\n");
        wDumpContent(1);
 
        if (created_new_vevent) {
@@ -419,7 +381,7 @@ void save_individual_event(icalcomponent *supplied_vevent, long msgnum) {
        icalcomponent *vevent, *encaps;
        int created_new_vevent = 0;
        int all_day_event = 0;
-       struct icaltimetype event_start;
+       struct icaltimetype event_start, t;
        icalproperty *attendee = NULL;
        char attendee_string[SIZ];
        int i;
@@ -494,14 +456,12 @@ void save_individual_event(icalcomponent *supplied_vevent, long msgnum) {
                        all_day_event = 0;
                }
 
-               event_start = icaltime_from_webform("dtstart");
                if (all_day_event) {
-                       event_start.is_date = 1;
-                       event_start.hour = 0;
-                       event_start.minute = 0;
-                       event_start.second = 0;
+                       icaltime_from_webform_dateonly(&event_start, "dtstart");
+               }
+               else {
+                       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
@@ -532,9 +492,9 @@ void save_individual_event(icalcomponent *supplied_vevent, long msgnum) {
                }
 
                if (all_day_event == 0) {
+                       icaltime_from_webform(&t, "dtend");     
                        icalcomponent_add_property(vevent,
-                               icalproperty_new_dtend(icaltime_normalize(
-                                       icaltime_from_webform("dtend"))
+                               icalproperty_new_dtend(icaltime_normalize(t)
                                )
                        );
                }
@@ -613,7 +573,7 @@ void save_individual_event(icalcomponent *supplied_vevent, long msgnum) {
 
                /* Now iterate! */
                for (i=0; i<num_tokens(form_attendees, '\n'); ++i) {
-                       extract_token(buf, form_attendees, i, '\n');
+                       extract_token(buf, form_attendees, i, '\n', sizeof buf);
                        striplt(buf);
                        if (strlen(buf) > 0) {
                                lprintf(9, "Attendee: <%s>\n", buf);
@@ -646,7 +606,7 @@ STARTOVER:  lprintf(9, "Remove unlisted attendees\n");
                                striplt(attendee_string);
                                foundit = 0;
                                for (i=0; i<num_tokens(form_attendees, '\n'); ++i) {
-                                       extract_token(buf, form_attendees, i, '\n');
+                                       extract_token(buf, form_attendees, i, '\n', sizeof buf);
                                        striplt(buf);
                                        if (!strcasecmp(buf, attendee_string)) ++foundit;
                                }
@@ -672,14 +632,14 @@ STARTOVER:        lprintf(9, "Remove unlisted attendees\n");
                lprintf(9, "Serializing it for saving\n");
                if ( (encaps != NULL) && (!strcasecmp(bstr("sc"), "Save")) ) {
                        serv_puts("ENT0 1|||4|||1|");
-                       serv_gets(buf);
+                       serv_getln(buf, sizeof buf);
                        if (buf[0] == '8') {
                                serv_puts("Content-type: text/calendar");
                                serv_puts("");
                                serv_puts(icalcomponent_as_ical_string(encaps));
                                serv_puts("000");
                        }
-                       while (serv_gets(buf), strcmp(buf, "000")) {
+                       while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
                                lprintf(9, "ENT0 REPLY: %s\n", buf);
                        }
                        icalcomponent_free(encaps);
@@ -705,7 +665,7 @@ STARTOVER:  lprintf(9, "Remove unlisted attendees\n");
        lprintf(9, "Checking to see if we have to delete an old event\n");
        if ( (!strcasecmp(bstr("sc"), "Delete")) && (msgnum > 0L) ) {
                serv_printf("DELE %ld", atol(bstr("msgnum")));
-               serv_gets(buf);
+               serv_getln(buf, sizeof buf);
        }
 
        if (created_new_vevent) {