Readloop remove special cases
[citadel.git] / webcit / calendar_view.c
index c40b5a064b957ad829680f6dc233aeefc8597606..c8820b22c6333092e972889fc79f4bfaae8b7e6f 100644 (file)
@@ -1,12 +1,12 @@
 /*
  * Handles the HTML display of calendar items.
  *
- * Copyright (c) 1996-2010 by the citadel.org team
+ * Copyright (c) 1996-2011 by the citadel.org team
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software.  You can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
 #include "webcit.h"
@@ -188,7 +188,7 @@ void calendar_month_view_display_events(int year, int month, int day)
        time_t tt;
 
        if (GetCount(WCC->disp_cal_items) == 0) {
-               wc_printf("<br /><br /><br />\n");
+               wc_printf("<br>\n");
                return;
        }
 
@@ -259,6 +259,14 @@ void calendar_month_view_display_events(int year, int month, int day)
                 * If we determined that this event occurs today, then display it.
                 */
                if (show_event) {
+
+                       /* time_t logtt = icaltime_as_timet(t);
+                       syslog(LOG_DEBUG, "Match on %04d-%02d-%02d for event %x%s on %s",
+                               year, month, day,
+                               (int)Cal, ((all_day_event) ? " (all day)" : ""),
+                               ctime(&logtt)
+                       ); */
+
                        p = icalcomponent_get_first_property(Cal->cal, ICAL_SUMMARY_PROPERTY);
                        if (p == NULL) {
                                p = icalproperty_new_summary(_("Untitled Event"));
@@ -286,10 +294,10 @@ void calendar_month_view_display_events(int year, int month, int day)
 
                                wc_printf("<span class=\"tooltip\"><span class=\"btttop\"></span><span class=\"bttmiddle\">");
 
-                               wc_printf("<i>%s: %s</i><br />", _("From"), Cal->from);
+                               wc_printf("<i>%s: %s</i><br>", _("From"), Cal->from);
                                wc_printf("<i>%s</i> ",          _("Summary:"));
                                escputs((char *)icalproperty_get_comment(p));
-                               wc_printf("<br />");
+                               wc_printf("<br>");
 
                                q = icalcomponent_get_first_property(
                                        Cal->cal,
@@ -297,7 +305,7 @@ void calendar_month_view_display_events(int year, int month, int day)
                                if (q) {
                                        wc_printf("<i>%s</i> ", _("Location:"));
                                        escputs((char *)icalproperty_get_comment(q));
-                                       wc_printf("<br />");
+                                       wc_printf("<br>");
                                }
 
                                /*
@@ -377,11 +385,11 @@ void calendar_month_view_display_events(int year, int month, int day)
                                if (q) {
                                        wc_printf("<i>%s</i> ", _("Notes:"));
                                        escputs((char *)icalproperty_get_comment(q));
-                                       wc_printf("<br />");
+                                       wc_printf("<br>");
                                }
 
                                wc_printf("</span><span class=\"bttbottom\"></span></span>");
-                               wc_printf("</a></font><br />\n");
+                               wc_printf("</a></font><br>\n");
 
                                if (all_day_event) {
                                        wc_printf("</td></tr></table>");
@@ -416,7 +424,6 @@ void calendar_month_view_brief_events(time_t thetime, const char *daycolor) {
        icalproperty *e;
        struct icaltimetype t;
        disp_cal *Cal;
-       int month, day, year;
        int all_day_event = 0;
        char *timeformat;
        int time_format;
@@ -427,9 +434,6 @@ void calendar_month_view_brief_events(time_t thetime, const char *daycolor) {
        else timeformat="%I:%M %p";
 
        localtime_r(&thetime, &today_tm);
-       month = today_tm.tm_mon + 1;
-       day = today_tm.tm_mday;
-       year = today_tm.tm_year + 1900;
 
        Pos = GetNewHashPos(WCC->disp_cal_items, 0);
        while (GetNextHashPos(WCC->disp_cal_items, Pos, &hklen, &HashKey, &vCal)) {
@@ -569,8 +573,7 @@ void calendar_month_view(int year, int month, int day) {
        }
 
        /* Outer table (to get the background color) */
-       wc_printf("<div class=\"fix_scrollbar_bug\">"
-               "<table class=\"calendar\"> \n <tr><td>"); 
+       wc_printf("<table class=\"calendar\"> \n <tr><td>"); 
 
        wc_printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>\n");
 
@@ -579,7 +582,7 @@ void calendar_month_view(int year, int month, int day) {
        localtime_r(&previous_month, &tm);
        wc_printf("<a href=\"readfwd?calview=month?year=%d?month=%d?day=1\">",
                (int)(tm.tm_year)+1900, tm.tm_mon + 1);
-       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/prevdate_32x.gif\" border=\"0\"></a>\n", _("previous"));
+       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/webcit_icons/essen/32x32/back.png\" border=\"0\"></a>\n", _("previous"));
 
        wc_strftime(colheader_label, sizeof colheader_label, "%B", &starting_tm);
        wc_printf("&nbsp;&nbsp;"
@@ -591,7 +594,7 @@ void calendar_month_view(int year, int month, int day) {
        localtime_r(&next_month, &tm);
        wc_printf("<a href=\"readfwd?calview=month?year=%d?month=%d?day=1\">",
                (int)(tm.tm_year)+1900, tm.tm_mon + 1);
-       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/nextdate_32x.gif\" border=\"0\"></A>\n", _("next"));
+       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/webcit_icons/essen/32x32/forward.png\" border=\"0\"></A>\n", _("next"));
 
        wc_printf("</td></tr></table>\n");
 
@@ -662,8 +665,8 @@ void calendar_month_view(int year, int month, int day) {
        }
 
        wc_printf("</table>"                    /* end of inner table */
-               "</td></tr></table>"            /* end of outer table */
-               "</div>\n");
+               "</td></tr></table>\n"          /* end of outer table */
+       );
 }
 
 /*
@@ -705,8 +708,7 @@ void calendar_brief_month_view(int year, int month, int day) {
        }
 
        /* Outer table (to get the background color) */
-       wc_printf("<div class=\"fix_scrollbar_bug\">"
-               "<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" "
+       wc_printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" "
                "bgcolor=#204B78><tr><td>\n");
 
        wc_printf("<table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>\n");
@@ -716,7 +718,7 @@ void calendar_brief_month_view(int year, int month, int day) {
        localtime_r(&previous_month, &tm);
        wc_printf("<a href=\"readfwd?calview=month?year=%d?month=%d?day=1\">",
                (int)(tm.tm_year)+1900, tm.tm_mon + 1);
-       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/prevdate_32x.gif\" border=\"0\"></a>\n", _("previous"));
+       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/webcit_icons/essen/32x32/back.png\" border=\"0\"></a>\n", _("previous"));
 
        wc_strftime(month_label, sizeof month_label, "%B", &tm);
        wc_printf("&nbsp;&nbsp;"
@@ -728,7 +730,7 @@ void calendar_brief_month_view(int year, int month, int day) {
        localtime_r(&next_month, &tm);
        wc_printf("<a href=\"readfwd?calview=month?year=%d?month=%d?day=1\">",
                (int)(tm.tm_year)+1900, tm.tm_mon + 1);
-       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/nextdate_32x.gif\" border=\"0\"></a>\n", _("next"));
+       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/webcit_icons/essen/32x32/forward.png\" border=\"0\"></a>\n", _("next"));
 
        wc_printf("</td></tr></table>\n");
 
@@ -785,15 +787,15 @@ void calendar_brief_month_view(int year, int month, int day) {
        }
 
        wc_printf("</table>"                    /* end of inner table */
-               "</td></tr></table>"            /* end of outer table */
-               "</div>\n");
+               "</td></tr></table>\n"          /* end of outer table */
+       );
 }
 
 /*
  * Calendar week view -- not implemented yet, this is a stub function
  */
 void calendar_week_view(int year, int month, int day) {
-       wc_printf("<center><i>week view FIXME</i></center><br />\n");
+       wc_printf("<center><i>week view FIXME</i></center><br>\n");
 }
 
 
@@ -952,16 +954,16 @@ void calendar_day_view_display_events(time_t thetime,
                                );
                                 escputs((char *) icalproperty_get_comment(p));
                                wc_printf("<span class=\"tooltip\"><span class=\"btttop\"></span><span class=\"bttmiddle\">");
-                                wc_printf("<i>%s</i><br />",      _("All day event"));
-                               wc_printf("<i>%s: %s</i><br />",  _("From"), Cal->from);
+                                wc_printf("<i>%s</i><br>",      _("All day event"));
+                               wc_printf("<i>%s: %s</i><br>",  _("From"), Cal->from);
                                 wc_printf("<i>%s</i> ",           _("Summary:"));
                                 escputs((char *) icalproperty_get_comment(p));
-                                wc_printf("<br />");
+                                wc_printf("<br>");
                                q = icalcomponent_get_first_property(Cal->cal,ICAL_LOCATION_PROPERTY);
                                 if (q) {
                                         wc_printf("<i>%s</i> ", _("Location:"));
                                         escputs((char *)icalproperty_get_comment(q));
-                                        wc_printf("<br />");
+                                        wc_printf("<br>");
                                }
                                if (!icaltime_compare(t, end_t)) { /* one day only */
                                        webcit_fmt_date(buf, 256, event_tt, DATEFMT_LOCALEDATE);
@@ -977,7 +979,7 @@ void calendar_day_view_display_events(time_t thetime,
                                 if (q) {
                                         wc_printf("<i>%s</i> ", _("Notes:"));
                                         escputs((char *)icalproperty_get_comment(q));
-                                        wc_printf("<br />");
+                                        wc_printf("<br>");
                                 }
                                wc_printf("</span><span class=\"bttbottom\"></span></span>");
                                 wc_printf("</a> <span>(");
@@ -996,16 +998,16 @@ void calendar_day_view_display_events(time_t thetime,
                                );
                                escputs((char *) icalproperty_get_comment(p));
                                wc_printf("<span class=\"tooltip\"><span class=\"btttop\"></span><span class=\"bttmiddle\">");
-                                wc_printf("<i>%s</i><br />",     _("Ongoing event"));
-                               wc_printf("<i>%s: %s</i><br />", _("From"), Cal->from);
+                                wc_printf("<i>%s</i><br>",     _("Ongoing event"));
+                               wc_printf("<i>%s: %s</i><br>", _("From"), Cal->from);
                                 wc_printf("<i>%s</i> ",          _("Summary:"));
                                 escputs((char *) icalproperty_get_comment(p));
-                                wc_printf("<br />");
+                                wc_printf("<br>");
                                 q = icalcomponent_get_first_property(Cal->cal,ICAL_LOCATION_PROPERTY);
                                 if (q) {
                                         wc_printf("<i>%s</i> ", _("Location:"));
                                         escputs((char *)icalproperty_get_comment(q));
-                                        wc_printf("<br />");
+                                        wc_printf("<br>");
                                                                }
                                 webcit_fmt_date(buf, 256, event_tt, DATEFMT_BRIEF);
                                 wc_printf("<i>%s</i> %s<br>", _("Starting date/time:"), buf);
@@ -1015,7 +1017,7 @@ void calendar_day_view_display_events(time_t thetime,
                                 if (q) {
                                         wc_printf("<i>%s</i> ", _("Notes:"));
                                         escputs((char *)icalproperty_get_comment(q));
-                                        wc_printf("<br />");
+                                        wc_printf("<br>");
                                 }
                                 wc_printf("</span><span class=\"bttbottom\"></span></span>");
                                wc_printf("</a> <span>(");
@@ -1078,15 +1080,15 @@ void calendar_day_view_display_events(time_t thetime,
                                );
                                escputs((char *) icalproperty_get_comment(p));
                                wc_printf("<span class=\"tooltip\"><span class=\"btttop\"></span><span class=\"bttmiddle\">");
-                               wc_printf("<i>%s: %s</i><br />", _("From"), Cal->from);
+                               wc_printf("<i>%s: %s</i><br>", _("From"), Cal->from);
                                 wc_printf("<i>%s</i> ",          _("Summary:"));
                                 escputs((char *) icalproperty_get_comment(p));
-                                wc_printf("<br />");
+                                wc_printf("<br>");
                                 q = icalcomponent_get_first_property(Cal->cal,ICAL_LOCATION_PROPERTY);
                                 if (q) {
                                         wc_printf("<i>%s</i> ", _("Location:"));
                                         escputs((char *)icalproperty_get_comment(q));
-                                        wc_printf("<br />");
+                                        wc_printf("<br>");
                                                                }
                                if (!icaltime_compare(t, end_t)) { /* one day only */
                                        webcit_fmt_date(buf, 256, event_tt, DATEFMT_BRIEF);
@@ -1102,7 +1104,7 @@ void calendar_day_view_display_events(time_t thetime,
                                 if (q) {
                                         wc_printf("<i>%s</i> ", _("Notes:"));
                                         escputs((char *)icalproperty_get_comment(q));
-                                        wc_printf("<br />");
+                                        wc_printf("<br>");
                                 }
                                wc_printf("</span><span class=\"bttbottom\"></span></span>");
                                wc_printf("</a></dd>\n");
@@ -1163,8 +1165,6 @@ void calendar_day_view(int year, int month, int day) {
        ++tomorrow.day;
        tomorrow = icaltime_normalize(tomorrow);
 
-       wc_printf("<div class=\"fix_scrollbar_bug\">");
-
        /* Inner table (the real one) */
        wc_printf("<table class=\"calendar\" id=\"inner_day\"><tr> \n");
 
@@ -1179,18 +1179,14 @@ void calendar_day_view(int year, int month, int day) {
        if (hourlabel > (timeline - 2)) hourlabel = timeline - 2;
 
        for (hour = 0; hour < daystart; ++hour) {       /* could do HEIGHT=xx */
-               wc_printf("<dt class=\"extrahour\"      "
-                       "style=\"               "
-                       "position: absolute;    "
-                       "top: %dpx; left: 0px;  "
-                       "height: %dpx;          "
-                       "font-size: %dpx;       "
-                       "\" >                   "
+               wc_printf("<dt class=\"extrahour\">"
                        "<a href=\"display_edit_event?msgnum=0"
                        "?calview=day?year=%d?month=%d?day=%d?hour=%d?minute=0\">",
+/* TODO: what have these been used for?
                        (hour * extratimeline ),
                        extratimeline,
                        extrahourlabel,
+*/
                        year, month, day, hour
                        );
 
@@ -1210,18 +1206,14 @@ void calendar_day_view(int year, int month, int day) {
        gap = daystart * extratimeline;
 
         for (hour = daystart; hour <= dayend; ++hour) {       /* could do HEIGHT=xx */
-                wc_printf("<dt class=\"hour\"     "
-                        "style=\"               "
-                        "position: absolute;    "
-                        "top: %ldpx; left: 0px; "
-                        "height: %dpx;          "
-                       "font-size: %dpx;       "
-                        "\" >                   "
+                wc_printf("<dt class=\"hour\">"
                         "<a href=\"display_edit_event?msgnum=0?calview=day"
                         "?year=%d?month=%d?day=%d?hour=%d?minute=0\">",
+/*TODO: what have these been used for?
                         gap + ((hour - daystart) * timeline ),
                        timeline,
                        hourlabel,
+*/
                         year, month, day, hour
                        );
 
@@ -1241,18 +1233,14 @@ void calendar_day_view(int year, int month, int day) {
        gap = gap + ((dayend - daystart + 1) * timeline);
 
         for (hour = (dayend + 1); hour < 24; ++hour) {       /* could do HEIGHT=xx */
-                wc_printf("<dt class=\"extrahour\"     "
-                        "style=\"               "
-                        "position: absolute;    "
-                        "top: %ldpx; left: 0px; "
-                        "height: %dpx;          "
-                       "font-size: %dpx;       "
-                        "\" >                   "
+                wc_printf("<dt class=\"extrahour\">"
                         "<a href=\"display_edit_event?msgnum=0?calview=day"
                         "?year=%d?month=%d?day=%d?hour=%d?minute=0\">",
+/*TODO: what have these been used for?
                         gap + ((hour - dayend - 1) * extratimeline ),
                        extratimeline,
                        extrahourlabel,
+*/
                         year, month, day, hour
                 );
 
@@ -1298,15 +1286,15 @@ void calendar_day_view(int year, int month, int day) {
        wc_printf("<td align=\"center\">");
        wc_printf("<a href=\"readfwd?calview=day?year=%d?month=%d?day=%d\">",
                yesterday.year, yesterday.month, yesterday.day);
-       wc_printf("<img alt=\"previous\" align=\"middle\" src=\"static/prevdate_32x.gif\" border=\"0\"></a>");
+       wc_printf("<img alt=\"previous\" align=\"middle\" src=\"static/webcit_icons/essen/32x32/back.png\" border=\"0\"></a>");
        wc_printf("</td>");
 
        wc_strftime(d_str, sizeof d_str,
                "<td align=\"center\">"
-               "<font size='+2'>%A</font><br />"
-               "<font size='+2'>%B</font><br />"
-               "<font size='+3'>%d</font><br />"
-               "<font size='+2'>%Y</font><br />"
+               "<font size='+2'>%A</font><br>"
+               "<font size='+2'>%B</font><br>"
+               "<font size='+3'>%d</font><br>"
+               "<font size='+2'>%Y</font><br>"
                "</td>",
                &d_tm
                );
@@ -1316,7 +1304,7 @@ void calendar_day_view(int year, int month, int day) {
        wc_printf("<td align=\"center\">");
        wc_printf("<a href=\"readfwd?calview=day?year=%d?month=%d?day=%d\">",
                tomorrow.year, tomorrow.month, tomorrow.day);
-       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/nextdate_32x.gif\""
+       wc_printf("<img alt=\"%s\" align=\"middle\" src=\"static/webcit_icons/essen/32x32/forward.png\""
                " border=\"0\"></a>\n", _("next"));
        wc_printf("</td>");
 
@@ -1324,13 +1312,11 @@ void calendar_day_view(int year, int month, int day) {
        /* End todays-date-with-left-and-right-arrows */
 
        /* Embed a mini month calendar in this space */
-       wc_printf("<br />\n");
+       wc_printf("<br>\n");
        embeddable_mini_calendar(year, month);
 
        wc_printf("</td></tr>");                        /* end stuff-on-the-right */
-
-       wc_printf("</table>"                    /* end of inner table */
-               "</div>");
+       wc_printf("</table>\n");                        /* end of inner table */
 }
 
 
@@ -1399,7 +1385,7 @@ int calendar_summary_view(void) {
                                                wc_printf("<a href=\"display_edit_task"
                                                        "?msgnum=%ld"
                                                        "?return_to_summary=1"
-                                                       "?gotofirst=",
+                                                       "?go=",
                                                        Cal->cal_msgnum
                                                );
                                                escputs(ChrPtr(WCC->CurRoom.name));
@@ -1412,7 +1398,7 @@ int calendar_summary_view(void) {
                                                        "?year=%d"
                                                        "?month=%d"
                                                        "?day=%d"
-                                                       "?gotofirst=",
+                                                       "?go=",
                                                        Cal->cal_msgnum,
                                                        today_tm.tm_year + 1900,
                                                        today_tm.tm_mon + 1,
@@ -1425,7 +1411,7 @@ int calendar_summary_view(void) {
                                        if (!all_day_event) {
                                                wc_printf(" (%s)", timestring);
                                        }
-                                       wc_printf("</a><br />\n");
+                                       wc_printf("</a><br>\n");
                                        ++num_displayed;
                                }
                        }
@@ -1443,7 +1429,9 @@ int calendar_GetParamsGetServerCall(SharedMessageStatus *Stat,
                                    void **ViewSpecific,
                                    long oper,
                                    char *cmd,
-                                   long len)
+                                   long len,
+                                   char *filter,
+                                   long flen)
 {
        wcsession *WCC = WC;
        calview *c;
@@ -1551,3 +1539,10 @@ int calendar_RenderView_or_Tail(SharedMessageStatus *Stat,
        DeleteHash(&WC->disp_cal_items);
        return 0;
 }
+
+void 
+InitModule_CALENDAR_VIEW
+(void)
+{
+       WebcitAddUrlHandler(HKEY("mini_calendar"), "", 0, ajax_mini_calendar, AJAX);
+}