I've just started work on a "scheduler" module. The basic idea is similar to the volunteer module, but is designed for use in a phone bank or similar kind of situation: it assumes that sign-up is for some set of "shifts" at a set location, and it makes it very simple to create a weekly schedule for that site.

This is development quality code, but it already works. I haven't seen anything really like it either in the current list of modules here on Drupal.org, and I don't believe that the CivicSpace people have anything quite like it either.

The module was developed for Drupal 4.6 and Civicspace 0.8.1, although I'd guess it will run fine on Civicspace 0.8.2 as well (YMMV). It requires both CiviCRM 1.1 and the current Location module.

Since this code is pretty new, there's very little documentation just yet. You probably should not be playing with this code if you're not pretty comfortable fixing broken Drupal installs. And you'd best back up your database before installing it, although none of your existing tables will be altered.

Currently, the actual module name is rsvp_resource.module. This will change very soon (to either "scheduler.module" or "signup.module", most likely). Don't assume that there will be upgrading code either. Caveat Hacker :-)

So here's what I'm doing, and what I'd like to do:

  • I'm going to post an archive with the code as an attachment to this post.
  • I'm going to apply again for a CVS account (I was previously rejected), using the procedure in Bruce Mann's post. Hopefully the second time's the charm.
  • Whenever it makes sense to so do, I'll create a project on this site. It isn' clear to me what the procedure is; anyone who can tell me, much obliged.

The code is released under GPL v. 2 (I used a copy of the license file from the ecommerce module).

Have fun with it, and I look forward to any comments about how the code works for people.

Regards,
Rob
Torenware Networks
http://www.torenware.com

Comments

Torenware’s picture

Can't seem to find any way to attach my archive to a forum post. As soon as I figure out how to upload this stuff, I'll add a comment pointing to this.

Rob Thorne
Torenware Networks
http://www.torenware.com

Rob Thorne
Torenware Networks

venkat-rk’s picture

Interesting module, but there will probably be a naming clash as there are already scheduler.module and signup.module.

What do you think about adding the features of this proposed module to either the event or rsvp modules? During the rewrite of the events module for 4.6, the ability for people to sign up/volunteer for specific days/sections of an event was a much requested feature, especially on Civicspacelabs.org

Torenware’s picture

I'm pretty familiar with the event module, since I've submitted patches for it. There's a definite overlap of purpose with what I'm doing with the event module, the rsvp module, and the volunteer module. But after looking at the code of all of them, it looked easier to start from scratch than to modify any of the three to add my features.

The main thing my module adds is UI: it creates a DHTML table that presents a weekly schedule for a site with multiple shifts during the day. At first glance, this is most similar to the event module. But modifying any of event's UI to do what I want was actually harder than starting from scratch. So I decided to code something clean. The current event API doesn't really have the hooks I need for this, although arguably you could integrate my code as a new display type. But I think that would be harder than what I actually did.

I'm actually using a bit of heavily modified code from the the new version of the volunteer module, since I like the way it interfaces with CiviCRM. And my database tables are modeled after volunteer's tables. But volunteer is very tightly integrated with event, and it wasn't obvious how to "shake it loose". So I used that code as a model, but modified it to allow someone to volunteer to a shift, rather than to an event.

Also: you're right about the name conflicts. I've tentatively renamed the module "shift_signup", subject to approval by Those Who Decide around here.

Rob Thorne
Torenware Networks
http://www.torenware.com

Rob Thorne
Torenware Networks

kbahey’s picture

You cannot attach fles to the forum.

Post it on your web site and provide a link to it.

Please do not use generic names like scheduler or signup.

There is already a totally different scheduler module, and signup can be confused with many things.

Rename it so it is something that is descriptive of what it does (volunteer signup, volunteer schedule, ...etc.)

--
Drupal development and customization: 2bits.com
Personal: Baheyeldin.com

--
Drupal performance tuning and optimization, hosting, development, and consulting: 2bits.com, Inc. and Twitter at: @2bits
Personal blog: Ba

Torenware’s picture

You can find an archive of my code uploaded as a "volunteer" module issue.

Rob Thorne
Torenware Networks
http://www.torenware.com

Rob Thorne
Torenware Networks

schwa’s picture

I'll be very interested in where you go with this, as I'm currently searching for a room-scheduling solution. Sounds like this might do the trick (or much of the trick).

For my purposes, I need multiple "shifts" (or time slots) during the day - shifts that are:

1) configurable in duration/repetition
2) bookable
3) calendarized by day/week/month views & overviews
4) not (necessarily) linked to specific events/nodes - but linked to a specific resource (i.e., conference room 1, ballroom, etc)

You might consider hawking this module as "roomscheduler" or somesuch, since there must be a solid need for that kind of functionality, and that gives it a distinct profile I haven't found in many hours of searching through modules.

Cheers, and thanks for your work! I've been wrassling with reconfiguring WebCalendar, but that wouldn't be nearly as neat a solution as an integrated scheduler. (I'm brand-new & only running Drupal 4.6, not CivicSpace, so not sure whether I can test your module out. I'll fiddle)

Torenware’s picture

schwa,

Much thanks for your thanks :-)

Being able to use this contraption as a "room scheduler" was indeed one of the things I was thinking about. (1), (2) and (4) are major features. Mostly, (2) and (4) is the main idea of the design.

(1) I want to do, but since I had a specific application in mind short run, my "nodes" are a one week schedule for a site, with the days of the week as columns, and the shifts as rows. In the initial version, you have to reenter the shifts for each week. This was "good enough" for what I need to do now. I'll eventually change the design in such a way that you set up a "site" once, and generate weekly calendars from that.

(3) is probably my lowest priority, since at least for the sort of things I'm doing now, a week is a good "planning horizon". But I suspect that other people will also need the other views as well, so eventually, it's likely to happen.

As for not using Civicspace: the only thing you'll need to install that's at all exotic is CiviCRM 1.1, which is compatible with a vanilla install of Drupal 4.6. You'd have to install it manually, but having done that, I'll tell you that it isn't too bad to do (although definitely read the instructions very carefully).

Civicspace 0.8.2 will have CiviCRM as part of the default configuration, which will make it much easier to use my module. But even now, if you're comfortable installing Drupal 4.6, you should be OK.

Rob Thorne
Torenware Networks
http://www.torenware.com

Rob Thorne
Torenware Networks

ajwwong’s picture

This looks awesome. Thanks!!!

I'm trying to set up a 24-hour support line. This is exactly what I need. (Hopefully! :-) )

Albert Wong
Communities of Support
www.ithou.org

nrasmus’s picture

Just want to throw in my enthusiastic support for a "meeting room scheduling" mod. I don't have much drupal experience, but am more than willing to help sketch out and/or test this. I think it's something many could use (certainly our library's intranet).

ossfi’s picture

I would like to give my support too. I just posted a query for this type of module. I have searched for this as a reservations module (apparently the wrong word :) ).

See my post at:
http://drupal.org/node/50169

Nico

Anonymous’s picture

Ok, sign me up on the "Me Too!" bandwagon. I am really starting to like Drupal, especially the developers and the chatty forums. It's pretty refreshing to actually get an answer or two to a question. :)

It looks like your new module will handle what I need, what do you think?

Thanx!
Richard

rcross’s picture

Hi,

I'm looking for a module that will do alot of what is described here. Did this ever become a module? Any suggestions for how to get this type functionality for drupal 5?

--Ryan
www.ryancross.com
www.jamescrossinc.com