Ready to fly: DrupalCon SF

DrupalCon San Francisco will mark my first time traveling with a rolling carry-on instead of the duffel I've brought to every conference / camp since Barcelona. It's a good thing, because Packt was kind enough to send along several copies of their new Ubercart book for me to give away in the Commerce Guys Ubercart Training. I look forward to shedding those pounds on Sunday and replacing them with some sweet new Drupal shirts throughout the week.

Assuming the rest of the team makes it through the volcanic ash, I'm also looking forward to getting on stage in the Sponsor Theater (E. Mezzanine, 236-238) to talk about the latest news with Commerce Guys. Our sponsorship affords us the opportunity to bring together the whole crew for the first time to talk about our vision for the future of e-commerce on Drupal and how we're working to make it a reality. Mark the time in your schedule - Tuesday, 9:45 - 10:45 AM - or stop by the Commerce Guys booth to get the skinny in person / express your interest in relocating to Jackson, MI...

I'll be unveiling the Drupal Commerce demo site during our sponsor spotlight and will discuss it in further detail in my session, From Ubercart to Drupal Commerce. The session will be on Wednesday, 9:45 - 10:45 AM in room 306 Trellon. We had a great crowd in Portland show up to see / hear the latest last week, and I look forward to delivering a slightly more organized presentation in San Francisco.

I'm looking forward to a lot of great sessions, too, and I can't wait to meet up with some old Drupal friends and new contributors to Drupal Commerce. If you're eager to meet up, leave me a note in the comments or use my contact form. I'm happy to hook up for dinner or find you around the venue, and you can always stop by the Commerce Guys table to get in touch.

E-commerce will be huge on Drupal 7, and DrupalCon will be the kick-off. We'll be following up with Drupal Commerce presentations at the CMS Expo in early May, Web Content 2010 in early June, and hopefully a Drupal Camp or two in June / July. But first... I have to survive this next week.

Paris Drupal Commerce Sprint Wrap-Up

The Paris Drupal Commerce Sprint has been a huge success for the project. AF83 has been an incredible host, granting us use of the conference room for the full week, the espresso machine throughout the day, and of course DamZ. I flew out with Mike to represent Commerce Guys, and we gleaned some excellent advice from the folks who came in from i-KOS. It was super helpful to have Bojhan and fago join us to better plan our IA / User Experience and Rules integration. What a great team!

Unfortunately, the end of the week has come too soon for me to spend more than a few minutes on a wrap-up post. We're still in the process of moving our discussion notes into the forums and issue tracker. Those notes will communicate our proposed implementation of Orders / Carts and Price handling on Drupal 7 / Rules and hopefully garner some global feedback.

We'll also post the roadmap for people to check out and contribute where possible. The roadmap summarizes a majority of our work this week in specifying and planning the development required to have a working checkout by the end of March. Ideally we'll follow that up with a sprint in the Eastern U.S. that lays our plans up to DrupalCon San Francisco and the CMS Expo.

There are a few days left to vote up the DrupalCon session where we'll demo the current code express a healthy dose of geeky jubilation at the power Drupal 7. We're really excited to be working with the new APIs and will talk them up as much as possible. Mega kudos to the contributors to the entity and field systems.

Finally, we were able to review the product / product reference code, add product Token and Rules support, and get product tests written in time to close out the sprint. I've just exported the results from the main Drupal Commerce Git repository to the dev branch in CVS with a lot of help from fago (see also his blog post on the topic). These repositories will be kept in sync, so the latest code is always available for forkers on GitHub and patch authors on d.o. If you want to give it a go, you'll need the 7.x dev branches for Views and Rules, or you can wait for me to fly home and update the commercedev installation profile / get it on d.o with a drush make file.

That's all for now, though I could really go on more about all the wonderful people who helped in the meetings and showed us around town. Paris was wonderful, and I can't wait to come back. Now it's time to pack and sleep to wake up for the taxi in 7 hours.

Au revoir!

Coming to a Paris Near You

January seemed to breeze along without really stopping to say hello, and February doesn't look to be slowing down either. af83 will be hosting a Drupal Commerce Sprint in Paris from February 22 - 26, and we'll be doing as much as we can to make sure it's a productive time. I'll be flying over with mikejoconnor to join DamZ, Bojhan, fago, and whoever else shows up to work on the core Commerce modules and Rules 2 for Drupal 7. We're very excited about the week and doubly excited about the chance to work with Bojhan and fago early in DC's development.

If you're interested in joining us for a week of hard core Drupal in Paris, sound off in the forum thread for the sprint. We'll keep potential attendees notified of plans / IRC meetings through that thread. We're looking to finalize attendees by the 15th and draw up our battle plans to maximize our time together. I can't wait!

Costs will mostly be covered by Commerce Guys and af83. However, if you can't make it but would happily send someone in your stead, stay tuned and we'll post up links to the appropriate chip-ins.

Special Considerations for Views Exposed Filters

I've taken to building customized administrative interfaces for clients using Views that are restricted by user role and plugged into the administration menu with a normal menu item. My latest creation was on an educational site that uses the Quiz module to test users who listen to online lectures. There's a special user role that has the ability to create quizzes for lectures, and we needed a simple way for them to locate any quiz or question node without having administer nodes access (as required by the default Content administration page). Thus the Quizzes and Questions View was born!

I didn't expect any hiccups, as I'd just be making a quickie table View that included quiz nodes and question nodes. Since access to the View is restricted by user role, I didn't even have to bother filtering out unpublished content. As I was adding the Node: Type filter, I decided on the fly to expose the filter so the administrators could easily drill down to a specific question type if necessary. I then added the necessary fields and went to my preview, where I discovered that forum nodes were included in the results. Yikes!

My first thought was that I'd messed up the settings on the filter, so I reviewed. I had selected the filter to only show Multi-choice question, Matching, True/false question, and Quiz nodes. The operator was locked, selection was limited to a single option, and I'd even checked the box to limit the options to the node types I'd selected. However, it appears that I had a faulty understanding of the Optional checkbox that needed correction.

I've made exposed filters before, and I knew that if I marked a filter as Optional it would default to an <Any> option. Because I limited my options to the node types I had selected, I expected it to still filter my results against all the possible node type options and limit it further based on my selection in the exposed filter. However, as long as the <Any> option was selected, the View simply would not filter for node type at all. The simple solution was to add a second node type filter that was not exposed and limited the nodes to the same types that I made available in the exposed filter. This doubling up gave me the behavior I was expecting.

This same method should hold true for any other exposed filter where you want the user to select from a subset of all the available options. As always, if there's an easier way, post it up in the comments.