Archive for April, 2008

* Drupal Vacation Week

Posted on April 18th, 2008 by Phil. Filed under CCK, CVS, Drupal, Install Profiles, MySQL, SQL, SVN, Views.


I don’t know about where you live, but this week coming up is school vacation week around here. As the father of two of bundles of joy, I’ll be taking next week off have some Q.T. with the family as we parade around northern New England, doing what families do (e.g. goofing off, yelling, getting chocolate out of the kids’ hair, etc.).

That means, sadly, that I’ll have to tear myself away from Drupal 6 for a week (really, not a problem, believe me). In preparation for the week off I’ve been busy as all get out trying to reach the milestone that we’ve dubbed the first code merge. By that I mean it’s the first chance for Pete and I to merge the work we’ve been doing on the first phase of our rebuild, the new TV Programs and Schedule module.

Up until now, we’ve working separately (a separate peace, if you will), developing on our own Drupal installs on our development server. Pete has been creating a theme to match the current WGBH.org template (look and feel changes to the site will come in phase 2). I’ve been busy getting the PBS/TV Guide XML data import running, as well as working up the basic functionality of our Programs A-Z page and the Full Day Schedules by Channel pages.

Anyway, it’s high time that we finally incorporated each other’s changes into our own working install. So, this week was devoted to working out a process, not just for a one time code merge, but for rolling out our development work to each other, as well as to a staging area and to live installs going forward.

Currently, we’ve basically got a theme and a custom module for TV schedules. Managing the code is easy; everything is managed in a local SVN repository. Core Drupal and contributed modules and themes are pulled down via CVS and checked into SVN. So the entire code tree can be easily managed across multiple developers and pushed up to staging and live environments via SVN commands.

The tricky part - scratch that - the headache inducing part - no, sorry, scratch that too - the bang-your-head-against-the-wall-in-frustration part - is managing all of the information that’s stored in MySQL. How do we track changes to database structures (DDL) and the actual content that needs to be shared across installs (DML)?

Good question. The answer? Well, there is no easy answer that I’m aware of. The first guess is do a database dump (that’s what it’s called, I swear) of all of the structures and content. In theory that file can be managed via SVN or CVS. Problem there is you usually have lots of junk in your development database that you don’t want to replicate to staging or live environments, or even other development installs. So then you have to start weeding stuff out of the dump, which gets messy fast.

What to do, then? Here’s the strategy we’re going to use, and which i spent most of the week working on:

(1) Create a custom Drupal installation profile. This is used when first setting up a Drupal site. The WGBH profile installs a bunch of modules, sets the default theme (our WGBH.org theme) as well the administration theme (currently Zen Classic, a sub-theme of Zen - nice and clean and simple).

(2) TV Schedules module installation file. This is where most of the action is. Here we do a whole of bunch things like:

  • Create CCK content types (e.g. TV Channel, TV Program, etc.)
  • Create nodes for certain content types (e.g. channels)
  • Create Views (e.g. Programs A-Z)
  • Create a number of blocks and position them on our themes
  • Add menu links
  • Tweak a number of variable settings

I’d like to use the module install and upgrade files to manage changes to database objects and content. The install and upgrade files can be managed in SVN and used to roll out changes to development/staging/live environments. The tricky part is extracting the relevant changes from the database. That’s where it gets messy.

For this initial code merge, I relied mainly on the CCK export/import functionality to get the content type definitions. In theory, this is pretty straightforward. I used the export function on my development install to generate the code to recreate the content types. I added the code to module install file. That should have been it for the content types.

Except that it wasn’t.

CCK (like Views) on Drupal 6 is still in an alpha state, meaning there are unfinished bits, bugs, and general unforeseen shenanigans involved in using it. I found that the export/import process was a bit lacking. It copied the basic content type and field definitions just fine. However, field groupings were lost, and certain field attributes didn’t survive the transfer.

In the end what I did was perform the export/import in the module install file to create the basic types and fields (and related database objects) and then overwrite the data in the CCK definition tables using a database dump of that content from my development database. That part was put into a SQL file which, for now, has to be manually run in MySQL after the module is loaded.

It’s a bit clunky and not ideal, but I figure that part can go away once CCK for D6 is finished.

The good news is the Views export/import process worked much more smoothly. I was able to take the export code and run it from the module install file and the views were created as expected. No (or minimal) data tweaking was necessary. Yay!

Aside from that, creating actual nodes, blocks and menu links in the install file was all pretty straightforward. All in all, though, it took the better of the week to work it all out and get the process in good enough shape to hand off the Pete for testing.

Going forward, it will continue to be a bit of work to continue this process of tracking database changes. But, for now, it’s the best way I know of to proceed. If anybody has a better suggestion, I’m all ears! Please share.

Oh yeah, one annoying issue I’ve had with Views 2 is the lack of support for argument handling. Where the heck did that go? Am I missing something obvious? I found that the views object has a view_php attribute/method which seems to function the same way (I put my D5 view handling code in there), but there is no place in Views UI that I could find to add that code to a view. I had to do it manually.

Again, if you know more about this, let me know! That little problem alone gave 5 or 6 new gray hairs.

There you have it! For now, I need a break from the code and all that cursing.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Pownce
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • TwitThis



* Two Thoughts

Posted on April 8th, 2008 by Phil. Filed under Drupal, Views.


While I take a quick break for a large shot of Ibuprofen in order to douse the big headache that Drupal 6 (contributed) code is giving me, allow me to toss out two quick thoughts:

(1) Views 2 needs - to put it mildly - a LOT of work, which, to be fair, is not shocking since it is only in an alpha state.

(2) Enough with the drag and drop and fancy JS controls and functionality in the D6 admin screens. There’s already way too much of it for my liking.

Right. So, back to pounding my head against the wall, I mean coding.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Pownce
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • TwitThis



* And We’re Done!

Posted on April 1st, 2008 by Phil. Filed under CCK, CVS, Drupal, SVN, Views, theme.


Forgive me, Father, for it’s been 12 days since my last post, mainly because we’ve been very busy here at WGBH Online. The good news is all of that busy-ness has paid off because…

(drum roll please)

the WGBH.org rebuild has been completed! That’s right! Check her out.

Ok, I’m lying. It’s a lame attempt at an April Fools joke.

But I wasn’t lying about the being busy part. Busy we sure have been.

Since our last chat we now have our new development server up and running. With the help of IT I have configured a new development environment, where by core and contributed Drupal code is being downloaded from the Drupal CVS repository and managed locally in our new SVN repository.

Wheeeee!

Pete and I are now working away in this new environment. Pete is working at replicating the current look and feel and styles of WGBH.org in a WGBH theme. I’ve been porting the TV Programs and Schedules code that I had already written in Drupal 5 to Drupal 6.

Building on Drupal 6 has already proved to be an adventure (think Survivorman - but more dangerous), as we’re currently working with the HEAD versions of CCK and Views (and a few other modules). Needless to say, I’ve already had a few bang-my-head-against-the-wall moments with buggy code. But we will persevere!

Oh yeah and we’ve also decided (for now) to go with Zen Classic as our administration theme. I like the clean, plain simpleness of it. It’s also close to the look our of current CMS, so should be less of a shock to the systems of our content producers when they’re introduced to it. This choice, of course, is subject to change…

Meanwhile, IT continues to build out the new hardware and reconfigure the old hardware that will all be used for the new version of WGBH.org. Specification meetings continue apace and, oh yeah, we’re still looking for a project manager for the whole rebuild.

All that and Spring has sprung!

That’s about where we’re at.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Pownce
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • TwitThis



    www.flickr.com
    This is a Flickr badge showing public photos and videos from WGBH.org Development Blog. Make your own badge here.

Archives:

Categories:

  • Disclaimer

  • The opinions expressed in here are those of the writers/contributors and do not necessarily represent the views or opinions of the WGBH Educational Foundation.