Archive for Website Development

From FUpload to SWFUpload

Community contributed extensions are a double-edged sword in the free, open-source software world. On the one hand, the user community creates and maintains hundreds of modules for a web application that is free to download and install. A for-profit company could never create such an expansive set of plugins on their own. On the other hand, volunteer commitment to a module can wane over time.

An upgrade to PHP version 5.3 broke our Drupal 6 Image FUpload plug-in. Apparently, this problem was discovered two years ago and has not yet been entirely fixed. Not coincidentally, the Image FUpload project is seeking a new maintainer.

Fortunately, the SWFUpload project is in better shape, so we switched to it this weekend. Project usage statistics confirm that at least a thousand other site managers have made the same decision.

Both modules rely on the same SWFUpload Google project, so they operate in similar fashion. SWFUpload seems simpler and behaves more consistently than Image FUpload. Previously uploaded photo gallery images are stored and presented by ImageField and FileField, so past photo galleries do not depend on the choice of uploader.

What batch image uploader will be available for Drupal 7? Neither Image FUpload nor SWFUpload has a Drupal 7 version in development. FileField is now integrated into Drupal 7 core, so perhaps a partial rewrite is required for one of these modules to advance to D7.

Many thanks to Drupal community developers for your work. This project would not be possible without you. If you are interested in automatically creating Drupal users based on LDAP accounts, check out my contribution to the LDAPsync module.

Visual Website Design

Our admission, website, and communication teams have worked together to reorganize the admission section of the school’s website. Not only did we want to simplify and clarify navigation, but we also wanted to present information in visual ways.

Our website is very text-heavy, much of it written eight years ago and only edited since then. In much of the site, we present all of the important content as text and then add some photos for aesthetic or emotional effect. In today’s media-rich culture, people have a lot of practice consuming information visually. We can actually communicate content, not just feelings, through photographic badges. This also forces us to distill the “landing page” message to three key ideas.

In recent years, affordability has become increasingly important to families. Our website statistics show a rise in page views in the tuition, financial aid, and scholarship pages. We respond by both providing easy access to the information people are seeking and by promoting the response that we wish to convey.

Before


After

Taleo Recruitment System

Let it not be said that I always choose the do-it-yourself solution! Our new Taleo recruitment (job application) system has been terrific so far, feature-rich, easy to use, well-integrated with our website, and one-third of the cost of our previous recruiting website. Their system permits a HTML wrapper, which we populate with our own site template code to make it look like the rest of the site.

To facilitate integration, we use Drupal’s built-in aggregator module to display currently open positions on the top-level employment web page and include them within search.

One Year Old

The Catlin Gabel website recently turned one! After a gestation period of six months, the website launched on July 1, 2009.

The Drupal-based website held up well last year. Dedicated hardware helped ensure that performance would remain high. The site received high ratings for usability. We improved the site throughout the year in response to user feedback and continue to develop it now.

Drupal 6 itself matured over the course of the year. Code and SQL errors resolved themselves as the community released patches and we installed the updated versions.

The year validated our decision to integrate password-protected, community content throughout the site. When logged in, users access protected content and tools based on their group membership. Users get to these tools in their expected locations on the site, rather than having to enter a separate community portal.

This year, we plan to build a complete online admission application, improve the design of section landing pages, and make a lot of small features more usable.

Drupal 6.17 and session cookies

I have had no problems with Drupal core updates for years. I finally got burned when I installed Drupal 6.17. This update no longer removes “www.” from admin-set cookie domains, which was preventing admins from using different cookie domains for www.example.com and example.com websites. The change broke login for many of our users until I solved the problem.

How did this seemingly esoteric issue affect us? In addition to www.catlin.edu, we also run live development and test copies of our website, so that we may build new features and try changes without affecting users. Some time ago, we manually set $cookie_domain in settings.php so that sites could have separate cookies, allowing a developer to log into the different sites as different users. However, users had saved cookies that used the old method, which introduced a cookie mismatch when they visited www.catlin.edu and had a saved cookie for catlin.edu. I still don’t understand why the browser didn’t just save a new cookie when they logged in instead of silently failing.

Clearing cookies resolved the problem for individual users, but I needed a solution that would work for off-campus users with saved cookies. Ultimately, I followed the release announcement and set $cookie_domain to “.catlin.edu” so that it would work whether the user’s saved cookie was for www.catlin.edu or .catlin.edu. It also means that developers are automatically logged into our development and test sites, but we can always use a separate browser when needed.

The site log showed no errors, but one could see a series of “new session for user …” entries when a user was having problems logging in. The normal behavior is that the user successfully opens a new session then either ends the session soon thereafter or leaves it open.