Hi all,
I've been lurking and learning having just gotten into Drupal this past fall. I got a kick out of the Drupal card game discussion, especially the link to the Board Game Geek as I've spent a good bit of time there. It actually relates to my situation I'm about to throw out here in the hopes of getting some feedback. To be clear, I've got plenty of database experience, relatively minor web experience and almost a complete lack of php and css experience. If you need a visual, http://www.social-networkreviews.com is the first Drupal site I've completed and is a good display of my lack of graphical and theming talent :D But my question involves a different project:
The situation - I run a yearly board gaming event that involves around 125 or so attendees. Since discovering Drupal, it's been my goal to move our registration and history from a YahooGroup to a Drupal site. One of the main goals is to integrate registration with a historical record (i.e. invitees and organizers can see a record of what years people attended, information from those years, etc.)
I've had no issues implementing Ubercart and UC Node Checkout in order to provide registration functionality. What I'm struggling with figuring out is the best way to maintain node relations throughout the process.
For example, User A wants to register not only himself but his wife and child who don't even have accounts on the site. Additionally, we want to keep a record of what years each of those people have attended and the specific information they had that year (like we assign everyone a silly nickname each year).
My initial idea was to utilize Content Profile for each invitees general information and then link each profile to each registration node. However, as I mentioned, some users don't have accounts, and Content Profile only allows for one profile per user. My next thought was to simply create a content called Invitee and let each user be able to create more than one Invitee node. The challenge then becomes allowing each person to only create registrations for Invitees that they created AND create a node relationship between the Invitee node and the Registration node, all while allowing the Ubercart process to take place in a very user-friendly manner. I know about CCK node reference and have used it successfully in another the site I mentioned. If this were a one user to one invitee profile relationship I think I could pull it off no problem.
This is the point at which I've thought to myself, "ah, here is where I wish I knew php as I'm under the impression I could make all this happen fairly readily with a bit of code. As it is, however, I'm trying to avoid any custom coding as much as possible, especially since I may need to hand the reigns over to another organizer at some point. I'm aware of the Signup module and how it allows you to sign up more than yourself. My understanding however, is that it doesn't create nodes for those signups which would be integral to us maintaining the data as a searchable/viewable archive.
Right now, since our numbers are fairly small, I'm considering just allowing people to use what I've built and do the "node matching" manually on the back end (i.e. after they create a registration node, insert the node reference for the invitee profile once an order is complete).
Before doing so, however, I thought I'd run it by people with much more experience to see if there's something I might be missing. The good news is we don't open registration for this event for 4 more months so I have plenty of time to learn and tinker.
Apologies for my verbosity. Thank you for any guidance/feedback you might offer.
Cheers!
Rob
Comments
Take a look at CiviEvent
CiviEvent may be a lot more than you want, but glancing quickly at what you want to do, I think it would work for you. It allows multiple registrations. You'll want to look at and set the dedupe role to have multiple records for a single email address.
Take a look at http://en.flossmanuals.net/CiviCRM/CiviEventsWhatis. This manual is really good.
There's more documentation at CiviEvent Admin, http://wiki.civicrm.org/confluence/display/CRMDOC32/Administrator%27s+Guide, and at http://wiki.civicrm.org/confluence/display/CRMDOC32/CiviEvent.
I'm using CiviEvent just for conference registration for an annual conference (http://nctech4good.org) but plan to gradually add more function -- forums, wiki, organic groups. NCTech4Good is currently a Meetup.com group, http://www.meetup.com/NCTech4Good/
Judy Hallman
CiviEvent Stand Alone? and Drupal Commons
Yes, I probably should have mentioned that I did look at CiviCRM/Event and it definitely appears to be major overkill. Of course, if it already accomplishes what we need, it may be worth it. What threw me initially was that the CiviCRM pages seemed to indicate that you have to download the full package. You seem to be indicating that CiviEvent can be utilized by itself. Can you actually implement it as a stand alone mod? Or did you simply not activate all the many other pieces of CiviCRM that didn't apply?
As for your project, have you considered implementing Drupal Commons to cover the other pieces for your group? I'm waiting for 1.3 to be released to utilize that for yet another local group I'm creating a site for. It covers forums, OG, Wiki and more.
Thank you for the feedback!
Rob Reinhardt
Yes, you download the full
Yes, you download the full package. You don't need to enable all the components and even if you enable a few you aren't using it doesn't do any harm. You need CiviContribute to handle payments. I do NOT have CiviMail, CiviGrant or CiviCase enabled. For now I'm just using simple mail. But CiviMail is high on my TODO list because I really should be using it and I can't send email to more than 50 at a time and I need unsubscribe and more. I'm still struggling with custom data and profiles. I seem to always have something not quite right. And I haven't done much with reports. The logistics people exported what they needed and created lists from Excel.
Judy Hallman
Custom Data and Profiles
Hmm.. the part where you mention struggling with custom data and profiles concerns me since one of the things we really want to do is be able to add custom fields and look at various views and reports involving that data. Still, I'm intrigued enough to tinker with this and see if it might work.
I think the problem is me. I
I think the problem is me. I don't have skills in databases or interfaces. I don't see or don't quite understand a lot of Drupal stuff and seem to learn by trial and error. Which sort-of works if I remember to take notes and can find my notes because I find myself repeating old mistakes. But I am learning a lot!
Judy Hallman
Views and CCK option
I'd think about doing this with three CCK content types.
The work flow would be something like:
Event Coordinator creates the event type (you probably should include a status (e.g., not finalized, open for enrollment, closed, etc).
An attendee logs on and "registers" by creating an Registration Entry...
The Person info Node reference field options can be populated by a view that lists all Person Info nodes the current user has created. (and an options to create a new one displayed via that CCK field info...)
The Event node reference can be populated by a similar view... or you can probably use one of the many "prepopulate forms" methods out there.
I think with this set up, you can create a wide variety of views (using references which are like DB foriegn key relationships) to display "who's coming to the event" or what events people related to user id X have come... and the like.
You might also want to look at the content_permissions_module. This lets you define which Roles can modify specific CCK fields. It's a bit of a pain to get the permissions set up but it would let you have fields in the Registration Entry that only the Coordinator can update (like a "has paid" or "check in") fields.
The basics would not require any programming knowledge, just CCK and Views knowledge...
How to Pass the Info & Integrate with UberCart
CG, thank you for the input! You've essentially described exactly how I've been coming at this, which makes me feel more confident in the approach. I've even already set up the content permissions module specifically for the purpose you describe and thought of using Views to restrict people to registering only the profiles they have created. Where I get stuck in that process is how to then integrate that with Ubercart. Utilizing Ubercart and uc node checkout, it assumes you are going to navigate to the "Event Node" product in the catalog and click "Add to Cart" which creates the Registration Node as a line item and prompts the user to fill out the fields.
I guess what I'm failing to wrap my head around is how to THEN bump that to a view or use some other method to allow the user to only register Persons they create OR reverse the process such that they can create a Registration product directly from the View you mention. I suppose that one thing I should investigate is how Ubercart constructs the links that adds things to a cart.. that my give me an answer there such that I can construct the links for adding them to a cart from a different view.
The thing I'm most intrigued by in your response is the concept of prepopulating forms from Views. That is something I'm not familiar with. Are there any links you could point me to where I could read up on that?
Rob Reinhardt
UberCart / Prepopulate Module
Not a real UberCart expert but I from your description, I was thinking that your events might be like some PC Gaming LANs I've been to... (Nor'Easter in Boston comes to mind) People can register a few months ahead and reserve seats next to their friends... but they don't have to pay until a month or so before the entry (and prices go up as the event gets closer..).
So, in my mind, I was considering registration and payment are two separate things... the trick then becomes how to link in the registration id when they click the "pay" button. I'm sure Uber has some way to do this... one possibility might be the pre-populate module ( http://drupal.org/node/228167 ).
Prepopulate Might Work
We actually offer two options for payment. They get a reduced rate if they register and pay at least a month before the event, but in any case, they are supposed to pay as they register. The prepopulate module definitely falls into that apparently well-known Drupal realm of "mods I've always wanted but didn't know existed". Looks promising with the one caveat being hiding some of the pre-populated fields from the users view. Looks like some people are already aware of and working on that concept. Thank you for pointing me there!
Rob