About

Mission

Druplinars.com’s mission is to provide top-quality education and training resources for everyone involved with Drupal, including newcomers, users, site administrators, and developers. As Drupal is an open-source project, Druplinars.com is an open-learning site: any qualified member of the community can teach a course, any interested person can learn from it, and everyone can contribute.

Founder

Druplinars.com was created by Barry Jaspan, an entrepreneur and Drupal developer in Boston, Massachusetts, USA.

Technology

Druplinars.com is (surprise!) powered by Drupal. Since this is a teaching site, we think it is appropriate to explain how we built it almost completely out of existing core and contributed Drupal modules. This information is current as of the initial site construction in February 2007.

Data

Each primary entity is a CCK type: Instructor, Druplinar (a seminar), and Session (a specific scheduled Druplinar class).

Each Instructor has an imagefield for the headshot photo and a text field for the biography. The photos are formatted with imagecache; see below. Each Druplinar has a text field for its body plus a viewfield for displaying its own Upcoming Sessions view (see below). Each Session has a Date to indicate when it is being held along with a nodereference to the Druplinar being taught and one or more nodereferences to the Instructors for that Session.

We use Views to display almost everything:

  • The Druplinars and Instructors links in the primary menu are both basic Page Teaser views for all Druplinar and Instructor nodes.

  • The Upcoming Druplinars list on the front page is a Block Table view of all Sessions whose date is in the future. The Title column of the table displays the Session’s Druplinar nodereference as a link to the referenced Druplinar and the Instructor nodereference as a link to the referenced Instructor.

  • The Upcoming link in the primary menu uses the same view as Upcoming Druplinars but as a Page instead of a Block. It uses a custom theme function. For each upcoming Session, the function loads the referenced Seminar object and outputs its teaser view once; each Seminar uses a viewfield to show all of its own upcoming sessions. The Session table is also custom, displaying product details (price, number of seats remaining) and a link to purchase a seat using the E-Commerce package.

Most static text fields, such as this page’s content, Instructor bios, and Druplinar descriptions, use the Markdown format implemented by the marksmarty input filter.

E-Commerce

Sales are handled by the E-Commerce package. The only custom modifications are:

  • A Ticket module to provide a non-shippable product type with inventory management so we can limit the number of seats sold per Session but do not ask for Shipping details as we would have to with the tangible product type.

  • A substantially improved Authorize.Net module which supports credit card authorization separate from capture (so we can authorize a card on purchase but not charge until the Session occurs), voids, and refunds.

Demonstrating one of Drupal’s great strengths, we use E-Commerce’s ability to transform any Session object into a Ticket product type, thus allowing it to have a price, be added to the shopping cart, and be purchased. If we wish to offer a free Session, we simply do not transform that Session into a Ticket product.

Security

Druplinars.com uses PHP session cookies with browser-session-only lifetimes, so the user’s login session is destroyed automatically when his/her browser exits, decreasing the likelihood of a stolen session. We use Persistent Login to provide the Remember Me checkbox during user login. This allows users to remain logged in without having to type their password every time they visit but is substantially more secure than a longer life PHP session cookie.

We use securepages to SSL-protect security-critical pages such as the user login form, password change form, and the shopping cart/credit card information pages.

Theme

We use the Friends Electric theme with nothing more than simple CSS changes. The Teaser and Body view of our CCK types is defined by Contemplate. For our Instructor headshot photos, we use imagecache to automatically create appropriately sized images for the Teaser and Body views (see this article for details).

Web conferencing

Druplinars are actually held using WebEx Training Center which provides a highly flexible, interactive, cross-platform (Windows, MacOS X, Linux, Solaris) environment for online classes. See our Help pages for details about system and browser requirements.