I'm beginning work on a module to provide wish list/gift registry functionality to Ubercart. I'd appreciate comments or questions about its design so that it can be a useful contribution to the Drupal community.
As I see it, the module would add these features to Ubercart:
1. Users could save products to wish lists as they now add products to shopping carts. An 'add to wishlist' button would be added in the same places as the 'add to cart' button appears. Users could also view and modify their wishlists as they view and modify the shopping cart.
2. Users could send e-mails notifying others about their wishlist.
3. Wishlists could be located by searching for the user by name (also, by link from the notification e-mail). When an item from a wishlist is purchased, the customer and time are recorded. The customer can send the gift to either the wishlist owner's address or to himself.
I anticipate reusing some of the uc_cart code, and using a database schema like:
{uc_wishlists}
wid (int) -- wishlist id
uid (int) -- user id
title (text) -- wishlist name
date (int) -- event date/deadline
{uc_wishlist_products}
wid (int) -- wishlist id
nid (int) -- node id of product
qty (int) -- requested quantity
changed (int) -- timestamp of last update
data (text) -- product data, including attributes
purchase (text) -- purchase data for each in total quantity, including user, timestamp
I'll update this forum topic with progress on the development. I'd appreciate any suggestions or advice on best implementing this design.




I'll give it a go.





detour,
This project sounds great. Honestly, I sometimes feel like anything we can do to follow in Amazon's shoes is a good move. (Ok, so maybe not everything.
)
Your idea seems to be right on, and I've got a little bit of feedback and some questions about potential problems.
First, the ideas: this may be outside the scope of your module, but it would be cool for users to have a place in their user account where they could copy/paste HTML to link to their wishlists from blogs or wherever else. Administrators could define either a text message or an image on their server to be used as the link.
The more important idea was the need for anonymous users to be able to keep wishlists. You can use a wishlist ID system similar to the cart, in that the session ID is the ID for anonymous users. While they wouldn't have all the features, they could still build up a wishlist and e-mail it to themselves or their friends. (Obviously would need some flood checking to make sure it doesn't get hijacked by spammers.)
One problem I thought of was how to handle mailing products to the owner of the wishlist. Currently, users who have not checked out an order will not have any address information stored in the database. Your module would either need to let people attach an address to a wishlist or we'd have to rework the way addresses are being stored in core... Obviously, the first option will be the easiest at the moment, since it doesn't depend on me being available to collaborate on the changes. I'm up for reviewing the system, though.
You know... I feel like I had something else to comment on, but maybe it was just the anonymous user idea. If I think of it, I'll post back here.
I'm excited to see what you come up with. aswalla just released http://www.magmaweb.com yesterday and probably would've loved to have some native wishlist support. (see here)