X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fcalendar_view.c;h=0e8ac9843385bc217f6326014f2110af9c2033cd;hb=fb6f6fa4ec4e3277e30d84326d48e6850822d318;hp=5960ff5328ecd2f69f40cf796596cd43af5b5dfb;hpb=46b0e48e8a165b23c4477c66f06db474c55fa515;p=citadel.git
diff --git a/webcit/calendar_view.c b/webcit/calendar_view.c
index 5960ff532..0e8ac9843 100644
--- a/webcit/calendar_view.c
+++ b/webcit/calendar_view.c
@@ -1,7 +1,15 @@
/*
- * $Id$
- *
* Handles the HTML display of calendar items.
+ *
+ * Copyright (c) 1996-2012 by the citadel.org team
+ *
+ * This program is open source software. You can redistribute it and/or
+ * modify it under the terms of the GNU General Public License, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
#include "webcit.h"
@@ -26,7 +34,7 @@ void embeddable_mini_calendar(int year, int month)
long weekstart = 0;
char url[256];
char div_id[256];
-
+
snprintf(div_id, sizeof div_id, "mini_calendar_%d", rand() );
/* Determine what day to start. If an impossible value is found, start on Sunday.
@@ -61,15 +69,15 @@ void embeddable_mini_calendar(int year, int month)
localtime_r(&thetime, &tm);
}
- wprintf("
\n", div_id);
+ wc_printf("
\n", div_id);
/* Previous month link */
localtime_r(&previous_month, &tm);
- wprintf("
«",
+ wc_printf("
«",
(int)(tm.tm_year)+1900, tm.tm_mon + 1);
wc_strftime(colheader_label, sizeof colheader_label, "%B", &starting_tm);
- wprintf(" "
+ wc_printf(" "
"
"
"%s %d"
""
@@ -77,20 +85,20 @@ void embeddable_mini_calendar(int year, int month)
/* Next month link */
localtime_r(&next_month, &tm);
- wprintf("
»",
+ wc_printf("
»",
(int)(tm.tm_year)+1900, tm.tm_mon + 1);
- wprintf("
"
+ wc_printf(""
"");
colheader_time = thetime;
for (i=0; i<7; ++i) {
colheader_time = thetime + (i * 86400) ;
localtime_r(&colheader_time, &colheader_tm);
wc_strftime(colheader_label, sizeof colheader_label, "%A", &colheader_tm);
- wprintf("%c | ", colheader_label[0]);
+ wc_printf("%c | ", colheader_label[0]);
}
- wprintf("
\n");
+ wc_printf("\n");
/* Now do 35 or 42 days */
@@ -101,21 +109,21 @@ void embeddable_mini_calendar(int year, int month)
/* Before displaying Sunday, start a new row */
if ((i % 7) == 0) {
- wprintf("");
+ wc_printf("
");
}
if (tm.tm_mon == month-1) {
- snprintf(url, sizeof url, "readfwd?calview=day&year=%d&month=%d&day=%d",
+ snprintf(url, sizeof url, "readfwd?calview=day?year=%d?month=%d?day=%d",
tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday);
- wprintf("%d | ", url, tm.tm_mday);
+ wc_printf("%d | ", url, tm.tm_mday);
}
else {
- wprintf(" | ");
+ wc_printf(" | ");
}
/* After displaying one week, end the row */
if ((i % 7) == 6) {
- wprintf("
\n");
+ wc_printf("\n");
}
}
@@ -123,7 +131,7 @@ void embeddable_mini_calendar(int year, int month)
thetime += (time_t)86400; /* ahead 24 hours */
}
- wprintf("
" /* end of inner table */
+ wc_printf("
" /* end of inner table */
"
\n");
StrBufAppendPrintf(WC->trailing_javascript,
@@ -174,7 +182,7 @@ void calendar_month_view_display_events(int year, int month, int day)
time_t tt;
if (GetCount(WCC->disp_cal_items) == 0) {
- wprintf("
\n");
+ wc_printf("
\n");
return;
}
@@ -245,6 +253,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"));
@@ -253,40 +269,45 @@ void calendar_month_view_display_events(int year, int month, int day)
if (p != NULL) {
if (all_day_event) {
- wprintf("
"
+ wc_printf(""
""
);
}
- wprintf(""
+
+ wc_printf(""
""
+ ,
(Cal->unread)?"_unread":"_read",
Cal->cal_msgnum,
year, month, day
- );
+ );
- wprintf("%s: %s ", _("From"), Cal->from);
- wprintf("%s ", _("Summary:"));
+ escputs((char *) icalproperty_get_comment(p));
+
+ wc_printf("");
+
+ wc_printf("%s: %s ", _("From"), Cal->from);
+ wc_printf("%s ", _("Summary:"));
escputs((char *)icalproperty_get_comment(p));
- wprintf(" ");
-
+ wc_printf(" ");
+
q = icalcomponent_get_first_property(
Cal->cal,
ICAL_LOCATION_PROPERTY);
if (q) {
- wprintf("%s ", _("Location:"));
+ wc_printf("%s ", _("Location:"));
escputs((char *)icalproperty_get_comment(q));
- wprintf(" ");
+ wc_printf(" ");
}
-
+
/*
* Only show start/end times if we're actually looking at the VEVENT
* component. Otherwise it shows bogus dates for e.g. timezones
*/
if (icalcomponent_isa(Cal->cal) == ICAL_VEVENT_COMPONENT) {
-
+
q = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY);
if (q != NULL) {
int no_end = 0;
@@ -320,17 +341,17 @@ void calendar_month_view_display_events(int year, int month, int day)
wc_strftime(buf, sizeof buf, "%x", &d_tm);
if (no_end || !icaltime_compare(t, end_t)) {
- wprintf("%s %s ",
+ wc_printf("%s %s ",
_("Date:"), buf);
}
else {
- wprintf("%s %s ",
+ wc_printf("%s %s ",
_("Starting date:"), buf);
d_tm.tm_year = end_t.year - 1900;
d_tm.tm_mon = end_t.month - 1;
d_tm.tm_mday = end_t.day;
wc_strftime(buf, sizeof buf, "%x", &d_tm);
- wprintf("%s %s ",
+ wc_printf("%s %s ",
_("Ending date:"), buf);
}
}
@@ -338,43 +359,41 @@ void calendar_month_view_display_events(int year, int month, int day)
tt = icaltime_as_timet(t);
webcit_fmt_date(buf, 256, tt, DATEFMT_BRIEF);
if (no_end || !icaltime_compare(t, end_t)) {
- wprintf("%s %s ",
+ wc_printf("%s %s ",
_("Date/time:"), buf);
}
else {
- wprintf("%s %s ",
+ wc_printf("%s %s ",
_("Starting date/time:"), buf);
tt = icaltime_as_timet(end_t);
webcit_fmt_date(buf, 256, tt, DATEFMT_BRIEF);
- wprintf("%s %s ", _("Ending date/time:"), buf);
+ wc_printf("%s %s ", _("Ending date/time:"), buf);
}
-
+
}
}
-
+
}
-
+
q = icalcomponent_get_first_property(Cal->cal, ICAL_DESCRIPTION_PROPERTY);
if (q) {
- wprintf("%s ", _("Notes:"));
+ wc_printf("%s ", _("Notes:"));
escputs((char *)icalproperty_get_comment(q));
- wprintf(" ");
+ wc_printf(" ");
}
-
- wprintf("\">");
- escputs((char *)
- icalproperty_get_comment(p));
- wprintf(" \n");
-
+
+ wc_printf("");
+ wc_printf(" \n");
+
if (all_day_event) {
- wprintf(" |
");
+ wc_printf("
");
}
-
+
}
-
+
}
-
-
+
+
}
DeleteHashPos(&Pos);
}
@@ -399,20 +418,16 @@ 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;
-
+
time_format = get_time_format_cached ();
if (time_format == WC_TIMEFORMAT_24) timeformat="%k:%M";
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)) {
@@ -435,11 +450,11 @@ void calendar_month_view_brief_events(time_t thetime, const char *daycolor) {
if ((event_tms.tm_year == today_tm.tm_year)
&& (event_tms.tm_mon == today_tm.tm_mon)
&& (event_tms.tm_mday == today_tm.tm_mday)) {
-
-
+
+
char sbuf[255];
char ebuf[255];
-
+
p = icalcomponent_get_first_property(
Cal->cal,
ICAL_SUMMARY_PROPERTY);
@@ -459,36 +474,36 @@ void calendar_month_view_brief_events(time_t thetime, const char *daycolor) {
difftime=(event_tte-event_tts)/60;
hours=(int)(difftime / 60);
minutes=difftime % 60;
- wprintf("
%i:%2i | "
+ wc_printf(" |
%i:%2i | "
""
"",
daycolor,
hours, minutes,
- (Cal->unread)?"_unread":"_read",
+ (Cal->unread)?"_unread":"_read",
daycolor,
Cal->cal_msgnum,
bstr("year"),
bstr("month"),
bstr("day")
);
-
+
escputs((char *)
icalproperty_get_comment(p));
/* \todo: allso ammitime format */
wc_strftime(&sbuf[0], sizeof(sbuf), timeformat, &event_tms);
wc_strftime(&ebuf[0], sizeof(sbuf), timeformat, &event_tme);
-
- wprintf(" | "
+
+ wc_printf(""
"%s | %s |
",
daycolor,
sbuf,
daycolor,
ebuf);
}
-
+
}
-
-
+
+
}
}
DeleteHashPos(&Pos);
@@ -501,15 +516,23 @@ void calendar_month_view_brief_events(time_t thetime, const char *daycolor) {
void calendar_month_view(int year, int month, int day) {
struct tm starting_tm;
struct tm tm;
+ struct tm today_tm;
time_t thetime;
int i;
time_t previous_month;
time_t next_month;
time_t colheader_time;
+ time_t today_timet;
struct tm colheader_tm;
char colheader_label[32];
long weekstart = 0;
+ /*
+ * Make sure we know which day is today.
+ */
+ today_timet = time(NULL);
+ localtime_r(&today_timet, &today_tm);
+
/*
* Determine what day to start. If an impossible value is found, start on Sunday.
*/
@@ -544,46 +567,45 @@ void calendar_month_view(int year, int month, int day) {
}
/* Outer table (to get the background color) */
- wprintf("