Open Bug 151994 (thunderbirthday) Opened 23 years ago Updated 10 months ago

Provide option to show calendar events for birthdays from address book

Categories

(Calendar :: General, enhancement)

enhancement

Tracking

(Not tracked)

People

(Reporter: alik, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: parity-Outlook)

Attachments

(1 file)

There is a useful feature in good PIMs where they have Birthday and Anniversary fields in their address book. When a card is filled for a contact and a birthday and/or anniversary is added, it automatically shows up in the calendar as a every year repeating event. This allows you to remember important days in the life of your contacts. About a year back i added a RFE in bugzilla asking for more fields in Address book (custom fields cannot be used for this purpose) stating that someday someone might want to make a mozilla calendar and this would be a useful thing to have. http://bugzilla.mozilla.org/show_bug.cgi?id=85344 Unfortunately, the RFE did not make it to 1.0. Fortunately, the calendar project is here and what a wonderful job you guys have done. Even the Is it possible to add these fields to the address book and somehow link them to the calendar? I hope enough people find this suggestion useful to add it to the final requirement list. Two address book bugs on this are: http://bugzilla.mozilla.org/show_bug.cgi?id=13595 http://bugzilla.mozilla.org/show_bug.cgi?id=85344
Someone can take this on if they would like.
Assignee: mikep → nobody
Status: UNCONFIRMED → NEW
Ever confirmed: true
Addressbook has birthYear, birthMonth, birthDay fields in the database, just not in the UI. It's possible to import records with those fields. Calendar part to get a list of addresscards and scan for those fields should be easy , but not very usefull until there is addressbook UI for this.
I just wrote a 'prototype' module for importing birthdays from the addressbook. Would need some cleanup and probably menu-hooks. At the moment I don't have plans to finish this, i'll attach it here so it won't get lost. Feel free to pick it up and use this.
Some functions to access the AddressBook. Would need some cleanup. Also needs check for duplicates. *Feel free to pick it up and use this code*
Depends on: 85344
Just checking to see if we have any progress on this. I wanna kill my outlook for good and move to mozilla completely!..
Default QA Contact for Calendar has changed. If you wish to remain the QA contact for this bug, feel free to change it back.
QA Contact: colint → brantgurganus2001
Another birthday/anniversary/calendard feature related to this is the display of year and/or date. Example: On Epoc OS (Psion), Agendas give the option to show the year, age or both of a birthday/anniversary. Say Joe was born in 1974, the calendar entry for his birthday could read "* Joe (1974, 29 years)" I hope I'm making myself clear. I would *love* this feature to be added as well.
The birthday field has not yet implemented in the UI but seperate fields already exist for day, month and year. I think an additional field should combine these seperate fields to a "complete" date string. Additionally it should correctly be imported by the OL import function and correctly sync'ed by the Palm conduit.
This depends on Bug 13595 "Add birthday fields to address book", which has a patch waiting for review.
Depends on: 13595
Attachment #87935 - Attachment mime type: application/octet-stream → text/plain
QA Contact: gurganbl → general
Regarding #8, if you keep the fields separate you steer clear of any international format variations; if you combine them you must deal with formatting (element order, separator characters).
Is this Project still under dev? This is a feathure that I believe would help attract the hesitant user to move over. I checked Bug 13595 and it looks like it has been idle for some time also.
There already exists extensions (e.g. MoreColsForAddressBook) that add the birthday field to the Thunderbird address book. There is also an extension in development that displays the birthdays from the address book in Lightning: ThunderBirthDay, available for testing from <https://addons.mozilla.org/thunderbird/addon/5337>.
A good address book should have a birthday-field in standard (without add-on). There are some other bugs, about adding some other fields. I think the birthday-field should also be implemented in Thunderbird and also in Lightning/Sunbird without add-on. The birthday field should also be availible as complete date-field (not only birthyear), which can be displayed in the address book list. The missing birthday-field (and other fields) prevent me to use Thunderbird for mailing and I think I am not the only one who wants a better address book.
Since a couple of days, ThunderBirthDay is open for public use. You can download it from https://addons.mozilla.org/thunderbird/addon/5337. Feedback on the website there is very welcome!
Thanks for this useful extensions. It should be bundled with Thunderbird, or at least with Lightning by default! Please find my comments here: https://addons.mozilla.org/de/thunderbird/discussions/comments.php?DiscussionID=4536
Ingo, thanks for giving me credit :) * General style: Your tabs are strange. Consider expanding tabs to 4 spaces. If you like I can give you the full calendar style review. See [1] for how we do it. By no means required though. * The first part All it does, is create a get name() { var calMgr = ...; return calMgr.getCalendarPref(this, "name"); } set name(v) { var calMgr = ...; calMgr.setCalendarPref(this, "name", v); return v; } for the current object and also the same for suppressAlarms. * add/delete/modifyItem calls: I think its fine to throw CAL_IS_READONLY as you probably already read in bug 395956. If you return the original item, then it will be added to the views which is not really what you want. * addItem/adoptItem Notifying with onAddItem is correct, there is no onAdoptItem * getItem: Don't worry too much about it, its not used anywhere currently. I don't even know if my getItem works correctly. If we do decide to use it, we will probably shift to using calIItemBase's hashId, which is globally unique. * Other code convertAbCardToEvent: - You are setting recurrenceStartDate, which is by definition readonly. This should be automatically calculated using the recurrence rule. - You should set lastModifiedTime using setProperty("LAST-MODIFIED"), also since it is readonly. Additionally, you must set that date as late as possible, since setting anything else (i.e privacy) will modify the date Helper functions: - You could load calUtils via chrome://calendar/content/calUtils.js directly, then you don't have to include all those calendar specific helpers. See bug 391506 for how I did it. Future features: * calListenerBag (bug 389397) makes it easier to call notifiers, available with lightning 0.7 * extension dependencies: You can use <em:requires> to require lightning and the other extension. This is also currently possible since you don't support sunbird. See [2] and the linked detailed description. This keep people from wondering why it doesn't work without ltn installed ;) * I'd agree that its probably better to replace the event dialog with the addressbook properties card. When that card is saved, you can notify with the onModifyItem listener. This doesn't have to happen in a modifyItem call. * For creating new events, you could make the addItem call open the new addressbook card and asynchronously call the onOperationComplete listener when the user saves the card. [1] http://wiki.mozilla.org/Calendar:Style_Guide [2] http://wiki.mozilla.org/Calendar:Creating_an_Extension#Extension_Dependencies
Assignee: nobody → ingomu
Thanks a lot for reviewing my code!! I'll work through the list probably this week-end. I'll post here again, if I have questions or when I'm done :-)
Status: NEW → ASSIGNED
Flags: wanted-calendar0.8?
Setting wanted0.8- as this cannot be fixed on the Calendar side, but only on the mail/addressbook side.
Flags: wanted-calendar0.8? → wanted-calendar0.8-
re-requesting. This can be fixed by using an overlay in lightning. afaik, the backend code to store the birthday in the addressbook is possible.
Flags: wanted-calendar0.8- → wanted-calendar0.8?
Fixing this with an overlay in Lightning is the wrong choice IMO. This is a core addressbook functionality and should therefore be fixed in the Core.
Just to make sure everyone knows this: there already is a functionality for birthday and anniversary storage in the addressbook of thunderbird (see http://www.xulplanet.com/references/xpcomref/ifaces/nsIAbCard.html). ThunderBirthDay already uses this as source. Still, the fact, that it isn't connected to the GUI remains a problem.
This bug is not important enough to warrant wanted0.8 status.
Flags: wanted-calendar0.8? → wanted-calendar0.8-
Flags: wanted-calendar0.8-
May be the bug is not important enough to block, but it's a wish to get it soon fixed. Is it possible to change the "product"? It should better be Thunderbird or addressbook, or?
Flags: wanted-calendar0.9+
This feature is already available by using the extension from Comment #14. I'd say the Thunderbird part is covered by the bugs listed in the Depends On section. Please only request flags and leave the final decision up to the release drivers.
Flags: wanted-calendar0.9+
I think this feature is a generally function of addressbook and calendar and should not be an add-on! see also comments #13 and #15. As I understand you, this bug is only waiting until the depending bugs are solved and then this bug will also be solved? Sorry for setting a flag. How do I request the flag "wanted-calendar0.9"? Just writing it here as comment or setting the "?" ?
Nominating/Requesting the flag is done by setting '?'. Nominating wanted‑calendar0.9?.
Flags: wanted-calendar0.9?
Flags: wanted-calendar0.9? → wanted-calendar0.9-
Ok, Mark, so I'm aksing my questions here (see bug 456080 for details): 1) Do you agree that I shouldn't store additional fields for events in the address book (like last date of lasts acknowledgment of alarm)? 2) Does anyone know a possibility to uniquely and permanently identify an address book card? 3) Is there any way to include an ID field to the nsIAbCard interace?
Bug 13595 is fixed, Nominating wanted‑calendar1.0?
Flags: wanted-calendar1.0?
Alias: thunderbirthday
What is the status on this? Now that the Birthday field is in TB 3.0, we would just have to display this. Ingo, are you still working on this?
I am working on this in the sense that I ported ThunderBirthDay to Thunderbird 3. Compatible versions (0.3.*) can be found on https://addons.mozilla.org/en-US/thunderbird/addons/versions/5337. For the moment, it is still "only" an extension, and there are no plans of integrating it into Lightning (yet). In principle, I am open to this idea, but it will for sure not happen for Lightning 1.0.
No longer depends on: 85344
Flags: wanted-calendar1.0?
(In reply to bege10 from comment #38) Perfectly right. It is important to accurately distinguish between * core features, which can be regarded as essential for a PIM: should be handled by the core * only additional functions, which can be regarded as optional: can be handled by the core or by addons This has not always been done. Often times the decision whether to insource or outsource a feature has been made for convenience (addon already on hand) rather than based on the feature being essential or optional.
Hello all. I understand that you would like to see this feature in core, and in fact it has already been decided years ago that we are ok with this. I don't agree this is urgent, as there are many other more urgent issues. That said, if someone is willing to spend time to integrate the add-on into Lightning, I am happy to mentor them on this bug. If you would like this bug to be fixed, please use the voting feature instead of commenting.
I've been viewing what seems to be the page of ThunderBirthDay at GitHub (https://github.com/ingomueller-net/ThunderBirthDay), and I believe that Ingo Müeller will not feel like doing this integration into Lightning. If you check the Issue #3 ( https://github.com/ingomueller-net/ThunderBirthDay/issues/3 ), he mentions that he stopped using Thunderbird years ago.
Please note that this bug is meant for technical discussion around the integration. I understand that you would like to see this bug move forward, but this is not the place to discuss bugzilla features. As for votes, it is not the definitive indicator for prioritization, but it does help understand what bugs users would like to see fixed most. As this has attracted a larger amount of advocacy and off topic comments, I am restricting commenting on this bug. If you have a relevant comment to moving this bug forward you are welcome to contact me via email. Thank you for your understanding.
Restrict Comments: true
ThunderBirthDay 0.8.3 works with Thunderbird 60 although the web site states otherwise. Just download the *.xpi and install: https://addons.thunderbird.net/en-US/thunderbird/addon/thunderbirthday/versions/0.8.3
Assignee: ingomu → nobody
Status: ASSIGNED → NEW

Precise summaries can help to understand ideas better, which may increase their chance of implementation...
Even more topical now as calendar has been integrated into Thunderbird.
Birthday field is pretty pointless if calendar doesn't pick this up.
Turned positively, I'm sure many users would love this as a candy feature.

Proposal for implementation:

  • Add a checkmark [x] Show in calendar near the birthday field in address book
  • When checkmark gets checked, pick contact's birthday and name and show prefilled dialog for creating a yearly recurring event
  • When checkmark gets unchecked, remove all birthday events associated with that contact (that looks like the tricky part, see comment 29 with pertinent questions by Ingo Müller who was once willing to work on this and never got replies...)
  • 29 Feb birthdays to be considered as a special case

Philipp, regardless of non-urgency and technical details, does that sound like a good general direction for this bug?

Flags: needinfo?(philipp)
Summary: Birthday Field From Address Book → Calendar should create recurring events for birthdays from address book
Summary: Calendar should create recurring events for birthdays from address book → Provide option to create yearly recurring calendar events for birthdays from address book

As a general policy I think we should try not to mix up application preferences into the address book, which should be primarily about the actual contact data. We may want to have some kind of contact preferences, but those should likely be kept separate. We have at least a couple of them already and they will cause problems...
So, a general pref for pulling in birthdays is likely much better.

See Also: → 85344

(In reply to Magnus Melin [:mkmelin] from comment #49)

As a general policy I think we should try not to mix up application preferences into the address book, which should be primarily about the actual contact data. We may want to have some kind of contact preferences, but those should likely be kept separate. We have at least a couple of them already and they will cause problems...

Understood, we want our contact data to be compatible with common standards, so extra contact data - which we'll certainly continue to be in need of - should live separate somehow. Maybe a separate database where the card id links to the card, then in the database we can keep whatever is needed using the card id.

So, a general pref for pulling in birthdays is likely much better.

That's an implementation-level argument and imho, a general pref for pulling in all birthdays of my entire address book into the calendar would be pretty useless in terms of UX, unless it would still ask me for each card with a new birthday.
I might routinely collect birthdays from all of my friends and customers to have a better idea of their age for various communications, which does not imply that I want everyone's birthdays to clutter my calendar. So this does look like a feature which needs a per-contact choice. Maybe this doesn't need a per-contact pref or property if we can identify another intelligent way of linking the card uniquely to the event series, then at runtime, when card is displayed, we can check for the matching event and present the edit card UI accordingly.

How about, instead of a pref or a checkmark, add a "Add birthday to calendar" (or something shorter) button to the card? When pressing the button, the recurring event is created. Like this, no pref has to be set and the calendar and the Address book are separated. Maybe the event can have a mailto: URI to make it possible to write a message. The only negative could be that you can multiple times press the button which creates duplicates.

Exactly, and to avoid duplicate entries, you need to know if the event is already in calendar (boolean), so essentially that's the checkmark (boolean). The crux is how to identify a unique and reliable link between the AB card and the series of calendar events, ideally without extra/non-standard properties on either side. Not sure if that's possible (I doubt it), but I think we'll need some way of storing extra properties for AB cards anyway. We cannot use per-contact prefs as that would create unlimited prefs clutter. We cannot use a simple global pref to auto-create birthdays in calendar either, as that would create unlimited calendar clutter. Asking for each birthday would come with its own complications, ultimately you always come back to the checkbox, and the need for a unique and reliable link.

Or the function that creates the event could check if there is already a event at this date with the same name. If not, it creates the event and if yes, none is needed.

(In reply to Thomas D. (:thomas8) from comment #48)

Proposal for implementation:

  • Add a checkmark [x] Show in calendar near the birthday field in address book
  • When checkmark gets checked, pick contact's birthday and name and show prefilled dialog for creating a yearly recurring event
  • When checkmark gets unchecked, remove all birthday events associated with that contact (that looks like the tricky part, see comment 29 with pertinent questions by Ingo Müller who was once willing to work on this and never got replies...)
  • 29 Feb birthdays to be considered as a special case

Philipp, regardless of non-urgency and technical details, does that sound like a good general direction for this bug?

My preferred approach would indeed be a calendar provider that is able to emit events, like ThunderBirthday used to do it. For the new calendar webextension API I've been pushing to make the cached mode the only possible mode, which would indeed require creating static events instead of dynamically returning them on getItems, but I think that is ok. rsjtdrjgfuzkfg's provider PoC is a great start.

I don't think the user should need to create pre-filled recurring events, having a show birthdays in calendar preference somewhere in the Thunderbird preferences should be enough. Having another preference to indicate if leap year birthdays should be moved to the day after/before or if they should be omitted also sounds good to me.

Flags: needinfo?(philipp)
See Also: → 1668338
Priority: -- → P2
Summary: Provide option to create yearly recurring calendar events for birthdays from address book → Provide option to show calendar events for birthdays from address book
Severity: normal → S3
Priority: P2 → --
Whiteboard: [parity-Outlook]
Keywords: parity-Outlook
Whiteboard: [parity-Outlook]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: