Currently the way we make rooms, timeslots, and timeslot combos is very tedious. We should make a wizard that helps users get their first event up and running without having to go through tons of node/add/* pages.

Please take a look at, and roll patches against the '2009512-scheduler' branch if you're interested in helping!

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

ezra-g’s picture

Title: Create an event wizard to simplify creation of rooms, timeslots, etc » Simplify creation of rooms, timeslots, etc

Another approach to consider is letting folks enter this information into a spreadsheet and import it into the site from CSV or similar. I think mrconnerton may have said something about working on this feature.

kclarkson’s picture

Here are two suggestions:

-Use something like Inline Entity Form where all of the rooms and timeslots could be added on session content type. Similar to Drupal Commerce.

--Forget about the Room Conflict Feature: While the room / time-slot conflict feature is great, it really isn't hard to notice whether or not there is a conflict in the schedule. This way you could just have both the Rooms and the timeslot a basic field on the sessions.

The question to ask: Is the Room/Time-slot conflict feature worth the effort ?

chrisguindon’s picture

-Use something like Inline Entity Form where all of the rooms and timeslots could be added on session content type. Similar to Drupal Commerce.

I like this idea, we could add an inline entity form for rooms, timeslots & schedule items within the Event node. This would allow an admin to see all the rooms, timeslots & schedule for each event and make it easier to create each of those nodes.

aburrows’s picture

The feedback I have got from DrupalDevDays organisors is we need it all in one place, so inline_entity_form sounds like the way to go. So are we looking at creating this as part of the installation profile for the cod distribution then in the cod_support have this as an additional feature for the content types?

kclarkson’s picture

My vote would be to build it standard into the content types so that it is the same for everyone.

japerry’s picture

Currently the room CT holds data on what is allowed in what rooms at what times. This is because we want to span a room across multiple timezones, and we're dealing with three subjects here:

* Rooms
* Time Slots
* What sessions are allowed

Previously, we had no event CT to hold this data, so we used to the Room because it made the most sense then. However, now that we're using an event CT to hold event data, it makes sense to move it into here. Field collections will already give us the ability to create a form, so we shouldn't need an inline entity form. It'll take a bit of refactoring -- though it would give a better end user experience and may even simplify the crazy views we use.

As I was refreshing myself on this topic, its very apparent that not having an event CT, even for one event, makes data aggregation very difficult. I think moving the field collection into the event CT will make things much easier.

japerry’s picture

I'm also going to suggest we have a different page for setting up the schedule. For small events (less than 20 items), having everything on one form is okay. Once you go past 20, things get unwieldy and really slow.

aburrows’s picture

Any chance of a wireframe on how you want this to look? So I can get this built this week at DC

japerry’s picture

FileSize
130.03 KB

Hi Alex,

Sorry I was on vacation this week -- attached is a wireframe of what I think it could look like with some notes. also, we would need to alter the field_select_ct widget to show a textfield instead of checkmarks. (I'll make this a new issue)

aburrows’s picture

Looks good i'll get to work on this

japerry’s picture

FileSize
173.98 KB

Today we've been working on a jQuery mockup. This should simplify a bunch of the end user experience.

After looking at how we do timeslots and rooms, it seems like we need to make both Rooms and Timeslots entities (preferably not nodes), and still have the timeslot combo be a field collection. By having it being a field collection we can use views on sessions to save the reference. We could also do another CT or Entity, but they both provide additional overhead that we don't really need. Multi-field doesn't really work because we cannot reference a part of the event CT, and we probably don't want the entity referencing individual sessions.

The screenshot above put a date type in the field collection in event instead of a timeslot. This becomes very problematic when you need to change a time and you have say 10 rooms, you'd have to change the slots 10 times.

But instead of doing a simple entity reference, we should be using inline entity form for each, as long as we can also select previous timeslots and rooms as well.

aburrows’s picture

Sounds great, ive actually been playing with multifield https://drupal.org/project/multifield on another site and to have multiple fields as we want it works a charm and is less clunky!

japerry’s picture

Issue summary: View changes
Issue tags: +cod_paloalto_sprint
jyee’s picture

Added a small patch for what i'd started on hook_entity_info. I had more, but I think it was going down a wrong path, so i trashed it.... not sure if this helps. *shrug*

tim.plunkett’s picture

FileSize
5.14 KB

Here's a bit more work done on this. The add/edit forms don't actually work yet, and I might have messed up the fieldability.

japerry’s picture

FileSize
9.95 KB

Yay now we can add, edit, and delete rooms! Take this for a spin, although its not totally complete. Can't display the entity yet. But we're getting there.

japerry’s picture

This has gotten too big to keep doing in patches. I've started work in a new branch called '2009512-scheduler' for those who want to help patch against it.

Please roll any patches against that branch. We will roll that into the cod upstream when its done!

japerry’s picture

Issue summary: View changes
rixter’s picture

(comment removed by author)

rixter’s picture

Have a question about applying the patches mentioned here: Can these be applied against COD version cod-7.x-1.0-alpha4+1-dev? Where would I find the '2009512-scheduler' branch? I originally installed COD from a zip file, but do not see the code development of COD resides at drupal.org.
Thanks much....

rixter’s picture

Well, I gave up on applying those patches, which seems out of my league for my level of understanding Drupal development.

However, I have learned of a key step in creating a Schedule in COD: after you have created the Rooms and the Timeslots, you need to go into the Conference/Events, and edit the Dashboard. Here you must assign the 'allowed types' for each and every room/timeslot for each day. This is tedious task, which could be improved (which is what the above thread is talking about), but apparently is what you need to do to get sessions to appear in the schedule.

Once this is done, you can bring up the cod_session_schedule, and put in the Event node number in the 'Preview with contextual filters' field (usually a 1, if you have just one Event), and, voila! the schedule appears...(this only took me about a month and using a Drupal consultant to figure out.)

Needless to say, the documentation in COD for creating the schedule according to these steps could be improved....

finedesign’s picture

Thank you Rick. I have had varying levels of success but the schedule is still not happening. Maybe I can explain my setup?

Events: only 1 paid event lasting 6 days
Plenary sessions: several each day, mostly mornings
Breakout sessions: several simultaneous each afternoon

To add items to the schedule, this was my process:
--------------------
1) Add all the timeslots (for sessions & schedule items)
2) Add a room
I added “Parking area” room because we have transportation in the schedule and trying to enter “schedule item” doesn’t seem to work because it doesn’t populate the timeslot(s) field with options.
When adding the “parking area” room it asks about the allowed slot types. I chose “schedule item” and “Session” then picked a time for one of the many time slots.
I clicked “add another item” and added another timeslot.
I do the same as above for “registration”. I add a “room” called “lobby” then add a few time slots each morning.
3) Visit schedule
I visit /node/1/program/schedule and see the entry for transport but not registration. It says only one time, then “busses leave..” then the “parking lot” room. I don’t know why registration is not listed.
4) Add a room for “Hall A”
Add a ton of time slots since this room is used a lot.
3) I attempt to create a session with a speaker (occurring in Hall A), but “Session Time Slot(s)” is not prepopulated either. I save anyway.
I click to edit the session just created again, and see that it contains the time slots designated. I choose one of them and save.
I refresh the schedule page, but nothing is added again.

After all the above, I tried visiting the dashboard you mention above, but I don't see anything to edit. It is at
/node/1/dashboard
and I only see "Room/Timeslot Scheduler with one date and a "confirm this time slot for..." button. I don't see anything about "allowed types".

This is in desperate need of documentation!

japerry’s picture

Status: Active » Fixed

We've merged this branch into the upstream 7.x-1.x branch.

While there are probably still issues with the scheduler, the main simplification UI has been pretty much finished. Please make new, specific issues as you find things that need work with the scheduler.

  • Commit eb91a7d on 7.x-1.x by japerry:
    Issue #2009512 by japerry: Move scheduler from cod_events to...

  • Commit 46c67c3 on 7.x-1.x by japerry:
    Issue #2009512 by japerry: Move scheduling related fields from...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

jmary’s picture

Regarding whole design I don't really understand why it is necessary to carry such thing as time slots ... It is not intuitive at all.

Event has venues starting date finishing date.
venues have rooms,
Room have sessions or scheduled items, starting time, ending time.
Sessions have speakers.

So that once my event is created I can add venues referring to event, then rooms referring to venues, sessions referring too rooms, speakers referring to sessions.

That's a tree. When session is created, it could carry directly a starting and finishing time field

What's the timeslot stuff is coming to do in the design ? What is the purpose ? Can someone explain ?