Art Cancro [Sun, 11 Jan 2009 03:56:02 +0000 (03:56 +0000)]
* Updated render_MIME_ICS() to do the right thing if the calendar attachment happens to be at the MSG4 top level and is already resident. The previous behavior was to attempt to load it using DLAT with msgnum=0, which erased the copy in memory so it didn't render. Invitations sent by Exchange now render properly. Invitations sent by Google Calendar are displaying twice now, which is probably because they do a multipart/alternative *and* send it as an attachment. I don't know why.
* move addressbook popup code back from trailing javascript; its not printed in this usecase.
* did 'svn -R propset svn:ignore -F .svnignore .' to activate .svnignore.
* move some more vars from the session context to strbuf (the use of StrBufAppendTemplate demands this)
* move the default template params to a standard structure, so adding further controll structures here gets more easy
* move some cases to GetServerStatus() to evaluate the server status feedback to queries.
Art Cancro [Wed, 7 Jan 2009 21:46:27 +0000 (21:46 +0000)]
* Tasks in summary view are now clickable too. I also found the bug report; it was an internal report at my office rather than something in Bugzilla. Closed it.
Art Cancro [Wed, 7 Jan 2009 16:15:12 +0000 (16:15 +0000)]
* Any URL may now contain a parameter called 'gotofirst' which specifies a room in which the operation should be carried out. If present, a GOTO to that room will be performed prior to attempting any other action.
Matt [Tue, 6 Jan 2009 10:14:26 +0000 (10:14 +0000)]
+ New function: StrECMAEscAppend, does string escaping for javascript output, things like " -> \" etc.
! changed the if in StrIsNumber to be the other, sensible way around.. I don't use this func anymore however.
Art Cancro [Tue, 6 Jan 2009 04:14:37 +0000 (04:14 +0000)]
* Restored the original date/time display behavior by replacing DATESTR template variable with DATEBRIEF (for summary views) and DATEFULL (for the full date/time to be displayed in messages).
Art Cancro [Mon, 5 Jan 2009 21:30:46 +0000 (21:30 +0000)]
* locate_user_vcard() wasn't using either of its supplied parameters. Removed the parameters and renamed the function to locate_user_vcard_in_this_room()
Art Cancro [Mon, 5 Jan 2009 21:04:57 +0000 (21:04 +0000)]
* icaltime_from_webform() now populates struct icaltimetype directly instead of converting tm->time_t->icaltimetype. This fixes an edge case where the user submits a date that falls during DST but the *current* date is not DST, or vice versa; the old code got it wrong in this case.
* add gettext tokens to the tabbed api
* remove all templates that just contain translated strings needed before...
* exit configure if openssl features were requested, but the library wasn't detected.
Art Cancro [Fri, 26 Dec 2008 07:11:54 +0000 (07:11 +0000)]
* Added another way for recurrence to be forced out of scope during conflict checking: if a conflict is reported, force the recurrence out of scope because there is no point in comparing any further recurrences of the same event pair.
* fix dropdown
* demand url parameters on goto* and friends
* add function to overwrite url params
* adjust the actual url so we don't gotonext on selecting s.th. from the dropdown
Art Cancro [Tue, 23 Dec 2008 18:29:12 +0000 (18:29 +0000)]
* Conflict checker loop now stops iterating over existing events when it goes out of scope for the proposed event. Saves a lot of time but it's still taking too long. And we also need to make it timezone aware.
Art Cancro [Tue, 23 Dec 2008 05:08:05 +0000 (05:08 +0000)]
* WebDAV PROPFIND method now offers the <getlastmodified> property on individual messages, both individually and as part of a collection. This is not necessary for GroupDAV (and probably not for CalDAV either) but for ordinary WebDAV it's nice to see. Also helpful for debugging with clients like Cadaver.
Art Cancro [Mon, 22 Dec 2008 22:30:51 +0000 (22:30 +0000)]
* Added 'overflow:hidden' to the stylesheet for 'mimepart' divs. This prevents the insanely long URL's included in Google Calendar invitations from running outside the box and all over the screen.
Art Cancro [Mon, 22 Dec 2008 22:14:57 +0000 (22:14 +0000)]
* When displaying calendar attachments embedded inside an email message, call ical_dezonify() to convert all timestamps to UTC. It's safe to do this because we're only effecting that single display instance -- when we act on that object, the server will be working with its own copy.
Art Cancro [Mon, 22 Dec 2008 16:29:05 +0000 (16:29 +0000)]
* ICAL PUTICS mode is now working properly with timezones. Each VTIMEZONE attached to a bulk calendar is now kept in memory during the operation, and attached to any individual VEVENT or VTODO component containing tzid= properties which refer to them. In the event of a tzid= parameter which refers to a timezone that was not supplied, we also attempt to find the timezone in our built-in tzdata.
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)