Okay, I think I've "gone about as fur as ah c'n go" for this first version of the courseware. I'm ready to call it version 1.0, I guess, with all the caveats that go along with that.
You can see it in action on my fall course site, though I'd respectfully ask that you not post comments related to the courseware itself there--it's a production class site. This post would be a better place to discuss process.
The templates I used are linked below, but you need to know a bit about how i set the weblog up for those to be useful.
I'm using MT with mySQL, rather than the Berkeley db. That's important on the first page, where I'm using Brad Choate's MTSQL plug-in to prevent post-dated items from showing up until their date rolls around. There may be a way to do that without MTSQL, but that's the approach I used. (*Update, 9/05*: It looks like this can be done using PHP instead; see Sillybean's Using Movable Type as an events calendar.)
I'm also using php extensions on all of my files, and using php includes to put the sidebar and the titlebar files into each page. There are definitely other ways to do that, but you'd have to modify the include calls on all of the templates. One of the reasons I'm using includes is that the sidebar has the calendars, which are process-intensive to build--but putting that into a separate file, the MT engine only has to build it once, rather than for every single page. It also makes it a lot easier to change the navigation and design of the site, since all the pages call the same include files.
I turned off notification for weblogs.com and blo.gs during development, but will add it back in during the quarter so students know when I've updated the site. I have comments, trackbacks, and trackback autodiscovery all turned on, so as to make the site as interactive as possible.
I'm using individual, daily, and category archives. Here are the additions to the archive file template for each type of archive:
Individual archives: <$MTEntryTitle dirify="1"$>.php
Daily archives: <$MTArchiveDate format="%Y/%m/%d/index.php"$>
Category archives: none
Note: You don't have to use the "dirify" option for the individual entries--it creates individual archive pages with the post title as the file name (e.g. midterm_exam.php) rather than the post number (e.g. 000023.php). I do that out of personal preference, but leaving it out won't affect functionality.
The following categories have to be set up for the templates to work:
- class topics
- in-class exercises
- discusssion questions
- due dates
I also added topical categories related to the course, but the current templates don't use those at all.
I think that's it for configuration information. Here are the templates I'm using. They're plain text files, but your browser will probably try to parse them as HTMl, so they'll look odd. You can either ignore the appearance and use a file-->save command to save the raw code to your own computer, or you can right/ctrl-click on the links and save them directly.
A few of these are standard MT templates, so you can just copy and paste into the existing templates in your weblog. Most are new, however, and will have to be created using the "Create new index template" option at the top of the template listing page.
- Main Index (outputs to index.php)
This is the main page of the site, which uses the MTSQLEntries tag to (a) prevent post-dated entries from being displayed, and (b) limit displayed entries to only those in specific categories. See this previous discussion (including comments) for more details. Obviously, this will require you to be able to go into your mySQL database (preferably using a user-friendly tool like phpMySQL) in order to find the categoryIDs for the categories you choose to display on the main page. (See implementation.)
- New! PHP Version of Main Index (no mySQL necessary)
If you're not using mySQL on your backend, you can use this version. It uses PHP to hide post-dated entries before serving the page to readers. It does not limit by category, but it easily could, simply by adding category="cat 1 OR cat2" to the MTEntries tag).
- Outline (outputs to outline.php)
This is a list of class dates and associate topics, with no additional information. The topic name is linked to the daily archive for that day's class. (See implementation.)
- Syllabus (outputs to syllabus.php)
These are items that would normally go on my syllabus (instructor information, grade distributions, etc), output without any of the "standard" blog data like date, comments, etc. (See implementation.)
- Sidebar (outputs to sidebar.php)
The sidebar has the three-month calendar (we're on a quarter system). Posts that have the "calendar" category assigned to them trigger a link on that date. The link then goes to the daily archive for that day. I discussed the process for that in my earlier post, as well. (All pages have the sidebar, so it's easy to see).
- Titlebar (outputs to titlebar.php)
The titlebar has the title of the site, as well as the navigational menu. I'm not providing a standard auto-generated archive list, since I don't want all categories browsable. Instead, I hard-coded links to the index templates and/or category archives that I wanted available.
- Stylesheet (outputs to styles-site.css)
Modify to suit yourself, obviously. Some styles are more important than others (positioning of the title bar and sidebar, for example). The background image being used was created by Elouise Oyzon, and is not included under the CC license listed below (not that it would help you any, unless you happened to be teaching a course with the same course number).
All archive templates use the same sidebar and titlebar template that the index templates use.
- Category Archive
The category archives are arranged in ascending (chronological) rather than descending (reverse chronological) order. (See implementation.)
- Date-Based Archive
Nothing fancy going on here, other than displaying entries in ascending order. (See implementation.)
- Individual Entry Archive
As mentioned above, individual entries use the SimpleComments plug-in to combine comment and trackback information. They also include permalinks to comments, which I think are important. I use comment permalinks on this blog, which is nice for jumping to the comment from "recent comments" in the sidebar, but is even more important if someone wants to link to a specific comment in another context. (See implementation, but since there are no comments or trackbacks yet, you can't really see how it works.)
The things I'm doing with comments, trackbacks, and the simplecomments plug-in are optional in terms of overall functionality...you could certainly modify the templates to use the more standard approach that default MT templates include without changing the functionality of the courseware.
So, that's it in a nutshell. Nowhere near a plug-and-play implementation, obviously. But enough information that if you've got some good MT-savvy, you can implement your own version.
Anyone who'd like make this more elegant by improving on my kludgy code, or adding additional functionality is more than welcome to do so. This documentation and the accompanying templates are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike License.