Over the past couple of weeks I've put a ton of time into a couple of modules that extend the functionality provided by the fantastic Signup module. Both of these modules come as a result of requirements defined by a project I've got going at work. We're creating a course catalog and the Signup module was our pick for how users "register" for courses. The base module is pretty solid, but we needed some additional functionality to meet the requirements of the registration system.
Signup Scheduler provides users with the ability to administer a node's signups (either by being the node creator or by being a global signup administrator) to set open and close dates for signups on the node. Signups are then opened and closed based on the defined schedule via cron.
While the scheduler module is pretty slick, I'm really excited about the Signup Status module - mostly because it solves several problems for our registration system. The goal of the module is to add the concept of "status" to a user's signup to a node, with status meaning any number of things. User's could be marked as "complete," allowing the node creator (in this case, course instructor) to mark a user as having completed a course. Other states could be "incomplete," "no-show," etc. By default, the module provides two states, "Approved" (the default state) and "Wait Listed," and any number of other states can be added by site administrators that users can then assign to signed-up users.
This functionality essentially provides two major requirements for us - arbitrary status assignment and wait listing. I've still got a bit more work to do on the wait listing functionality to make it really work without confusing the node creator, but essentially the idea is that the "wait listed" state, and any other states an administrator creates, could be marked as modifying the signup total. This will allow node creators to specify, for example, that a course has 10 wait list seats available.
The Signup Scheduler module provides some other notable functionality, as well. Node creators can now print a roster of attendees and signup other users for the node. It also provides what I hope will be a solid API for other modules to tie into, including a couple of hooks that allow other modules to act upon the status change for a user. I'm hoping to spend some time helping getting the base Signup module itself to a state where it has some nice integration points in it like this, too. For example, right now it's not possible to tie into the event of a user's signup being cancelled, or the event of signing-up a user (at least as far as I can tell).
There will be some more fun stuff along these lines over the coming days and weeks, so stay tuned!