Art Cancro [Fri, 19 Dec 2008 17:53:06 +0000 (17:53 +0000)]
* ICAL 'putics' mode - did most of the work for re-encapsulating VEVENT and VTODO components properly for distribution into individual messages. Enumerating the TZID's of needed VTIMEZONES, but not yet actually attaching them...
Art Cancro [Fri, 19 Dec 2008 04:05:49 +0000 (04:05 +0000)]
* ICAL 'getics' mode (which is used for downloading the
entire calendar, e.g. when doing a WebCal fetch) now suppresses
duplicate VTIMEZONE components which carry the same TZID.
Art Cancro [Thu, 18 Dec 2008 05:18:44 +0000 (05:18 +0000)]
* ical 'getics' now frees the icalcomponent data
after serializing it but before transmitting it to
the client. TODO: suppress duplicate VTIMEZONE components
* BIG shuffle:
* move several mimepart handlers to messages.c
* move utility string formating stuff into utils.c; hopefully we get rid of that one day because of everything using strbuf
* moved vcard stuff out of messages.c into vcard_edit.c
* did some late followups of the urlhash (how did they get through?)
* move binary downloads / viewing function into downloads.c
->webcit.c is getting small ;)
* add counter and lastn to iterators:
ITERATE:N -> number of actual element in list
ITERATE:LASTN -> is this the last member?
evaluate it with ?("COND:SUBST", n, "ITERATE:LASTN", 1)
Art Cancro [Mon, 8 Dec 2008 22:16:14 +0000 (22:16 +0000)]
* Shuffled some code around in serv_calendar.c
We are preparing to add VTIMEZONE subcomponents to
meeting invitations when necessary. (Not done yet but it
compiles and the changes are harmless.)
* follow api-change in several places
* new longint-vector replacer if you just want to blast some numbers in tiny templates
* urlpart replacers so you can easily reference the actual api-name in templates (actualy needs to be enabled by the registerer of the api callback)
* cleanup and templatize the bbview-selector bar
Art Cancro [Fri, 5 Dec 2008 20:11:17 +0000 (20:11 +0000)]
* UPDATE YOUR LIBICAL FROM SVN NOW.
We are now making use of the new libical function icaltimezone_set_tzid_prefix()
which allows the application to customize the namespace of tzid's generated
from the host operating system's tzdata, for example:
/citadel.org/Tzdata/America/New_York
Art Cancro [Wed, 3 Dec 2008 18:53:48 +0000 (18:53 +0000)]
* When encapsulating a VEVENT into a full VCALENDAR
component, all TZID's referenced in timestamps are now also
encapsulated into the VCALENDAR component, making the component
fully portable across time zones. The sun is shining, birds are
chirping, free ice cream is being distributed on streetcorners, and
things are just generally good all around. For now.
Art Cancro [Wed, 3 Dec 2008 03:42:13 +0000 (03:42 +0000)]
* Correctly set ;TZID= parameter on any date properties being
encapsulated. Store the timezone in an array so we know to attach
it later. TODO: populate the newly attached VTIMEZONE subcomponents.
Art Cancro [Tue, 2 Dec 2008 21:38:52 +0000 (21:38 +0000)]
* Attach an icaltimezone pointer to any icaltimetype value
converted by icaltime_from_webform(). This will later
be detected so we can attach time zone data.
* abstract sorting algorithms. abstraction layer so far used in the message view.
* reorder subst.c so related functions are next to each other
* remove array from WC, its done through the hash...
Art Cancro [Wed, 26 Nov 2008 18:03:21 +0000 (18:03 +0000)]
* Decapsulate and dezonify calendar events as they are
being loaded into the event editor. TODO: convert back
to local time during save, otherwise we create the
shifting-hour DST problem for recurring events. We
might consider only converting to local time for
recurring events ... that's what Google Calendar does.
Art Cancro [Tue, 25 Nov 2008 19:40:00 +0000 (19:40 +0000)]
* Did a fairly significant reworking of the calendar
processing loop. We have to pass the entire chain through
to the callback function in order to gain just-in-time
dezonification and decapsulation. This will work; I saw
the recurrence stay within local time durin expansion. Right
now the expansion isn't happening at all, but I'll fix that
shortly.
Art Cancro [Tue, 25 Nov 2008 17:37:10 +0000 (17:37 +0000)]
* Update ical_dezonify() to use system tzdata
(or built-in tzdata if running on windows) to locate timezone
information, if a matching timezone was not found somewhere
within the supplied component.
* add transitional beginboxx template and move some places to the new syntax
* finish preferences settings via templates
* add new settings to pre-select from/name/handle in case of email / posting into forums
* find some more missing error messages in the templating...
* finish selectboxes in Mailedit dialogs
* new templating mechanism: if prepended by : ; _ B the tokens can be loaded via preferences / gettext / bstr
* start implementing preferences screen with templates
* fix some tiny bugs
* map room-flags into conditionals
* more work on the central token escaping
* finetune BSTR tokens...
* finish message editing post/mail diversification
* add RFCA to our message the Reply button
Art Cancro [Thu, 20 Nov 2008 22:33:24 +0000 (22:33 +0000)]
Saving events from a web form now uses icaltime_from_timet_with_zone().
This did not have the effect that I thought it would. It's converting to UTC, which results in the correct time being used, but I wanted the timezone to be attached as a parameter so a reader would convert
it on the fly.
Art Cancro [Thu, 20 Nov 2008 21:09:55 +0000 (21:09 +0000)]
Fixed a serious problem with IMAP header fetch. memreadline() returns a pointer to the *next* line, or null if we're at the end. In the IMAP header parsing routine we were checking for null at the top of a while loop, where we should have been checking for null at the end of a do-while loop. As a result, the last header line was being discarded under any circumstances.
* rework who.c so it doesn't use svput() and friends but rather preregistered callback hooks (like the other new stuff)
* more syntax error detections and warnings in the template engine...
* change trailing_js to be a static template hook too
* pre-evaluate conditionals too
* swap startup sequence so pre-evaluation actualy works (first register hooks, then parse templates)
* global function to be used by string tmplput hooks which evaluates escaping demanded by template tokens in a central place
* fix spelling in some mobile templates
* move SERV: template hooks into serv_func.c