Two weeks to go until live! This week, I migrated our school curriculum map from a custom system I authored into Drupal. This allows us to ensure the longevity of this web site resource, take advantage of Drupal’s strengths in structuring content storage and display, and provide teachers with a very usable editing interface. The curriculum map stores over a thousands nodes and can be added to an existing Drupal site. This article assumes familiarity with Drupal 6 views, content construction kit, blocks, and very basic custom function programming. This isn’t a step-by-step tutorial (maybe one day).
Curriculum map course content type holds courses. The description field is not yet populated but available for course descriptions. Taxonomy categories for division, grades, and subjects are applied to this content type. A node reference field is used to connect each curriculum map course node to as many curriculum map units as necessary. The autocomplete node reference widget is used to allow the user to re-order the units as desired. It may be difficult for a user to find the correct unit node using autocomplete if it is not named creatively. It may be a good upgrade to use a view to display more identifying information than the title for the autocomplete search.
Curriculum map unit content type has a textarea field for each curriculum map category. We use the following: essential questions, habits of mind, content, skills and processes, assessment, resources, multicultural dimension, and integrated learning. In retrospect, having so many categories created a lot of work for teachers, who had to populate some of these categories x each unit x each course they teach.
We authored module cgs_curriculum_map.module to migrate content from our old system into Drupal. It creates content and unit nodes, establishes node reference links between them, populates content fields, and attaches taxonomy terms. This is not necessary for schools starting a curriculum map from scratch.
When the system displays a curriculum map course node, the units also load in a table below the course description. This is accomplished by loading a block view that displays the curriculum map category content for each unit node referenced in the course node. The view is loaded into the content_bottom template region, so that it appears just below the course description field. A simple function in cgs_curriculum_map.module returns a + delimited list of node ids of the unit nodes attached to the currently loaded course node. The display setting for the node reference field in the course content type is set to hidden to prevent unit links from appearing above the unit content itself.
If a user wants to display a single unit in a more readable form, one may link the unit title to its node. The conventional node CCK field display presents fairly well.
A page view with exposed filters lists courses, so that a user may view courses in the desired divisions, grades, or subjects. This is a good starting point for a user.
The user interface for adding new units is currently weak. It would be clever to load the curriculum map unit node add form in a lightbox above the curriculum map course page, so that a teacher could create a new unit on the fly and still have it show up in the node reference autocomplete field. Also, some node edit form elements are named in such a way that may confuse teachers. For example, the edit tab on the curriculum map course node page will likely be construed as providing editing access to the unit nodes (you actually have to view the unit before you can edit it).
I am currently having difficulty using both arguments and filters together. The argument limits the initial course list to a single division in the division pages, but the filters attach additional criteria using ? arguments. When both exist, the view returns no nodes. It may be that the view is applying terms from one taxonomy to the other, where they don’t exist, causing the empty result set.
Use pathauto on the curriculum map content types and menu block visibility to load the correct secondary navigation menu when the view is displaying curriculum map entries.