side by side
lines around each change
Show the changes in full context
White space changes
Jan 10, 2008, 3:02:23 AM (
This code is ALPHA at present, and NOT suitable for general use.
I'll post it up when its basically working with an initial state; the goal for that point is backwards-compatibility to Trac notifications.
!TicketChangeProducer, !AttachmentChangeProducer. These both plug into the respective I*!ChangeListener's, and so any change to a ticket-- including adding/removing attachments-- are converted into announcement events and sent through. Notably, attachments on wiki pages aren't yet but just because talking about changes to attachments without their parent wiki would be silly. !WikiChangeProducer is top of the list once I start receiving emails from the system :)
!StaticTicketSubscriber adds a static subscription to every event; its essentially identical to smtp_always_bcc. !LegacyTicketSubscriber mimics the behavior of always_notify_(owner|reporter|updater) but allows users to opt-out of these decisions. !CarbonCopySubscriber mimics the CC field behavior. !RuleBasedTicketSubscriber to do simple filtering on ticket events is about half done.
!EmailDistributor is basically done-- what with liberal theft from trac.notifications meaning I didn't have to re-implement the actual /sending/. :) Eventually I'm going to make it launch an external process (without waiting) I think -- as an option. I don't want a blocking SMTP going bad screwing up Trac.
Subscriptions can provide either a name, or an address; in the case of an address (such as !StaticTicketSubscriber) its just sent. In the case of a name though, an address has to be obtained. !SessionEmailResolver grabs the email address associated with a session. !DefaultEmailResolver appends a set domain name on the end of the user name that's specified in trac.ini (The theory is that if you are hooking your Trac up to a corporate authentication, and your username is the same as your email, this can turn 'shansen' into 'email@example.com'). !SpecifiedEmailResoler allows a user to (in preferences) specifically choose an alternate email address (separate from the one obtained anywhere else) that they'd like to send to.
* It's worth noting, ''which'' resolvers that are used are set in a trac.ini option and in order. So for my sit I'd set it to !SpecifiedEmailResolver, !SessionEmailResolver. So the email address used is the one specified in the session-- unless someone picks a different one. And yes I know they can change their main address, I do have a situation where it is undesirable to random notices to the main trac address but still desirable for said address to remain.
== Bugs/Feature Requests ==
Hosting sponsored by