Course Web-admin, This is the framework I used for the Phys201 course in the winter of 2008-2009, and I think it works pretty well. The workflow is, however, a bit different than anything I've found elsewhere, so I'll explain how it works for me below. Feel free to email me with any questions or problems. ~/src/ ====== The source for the website (and a bunch of LaTeX problems/solutions I've written up over the last few years as a TA), are all over in ~/src/, and in my own work I make all my changes there and then run "make" in the ~/src/ directory to push the changes to ~/public_html, which is the actively served directory. This is mostly to allow automatic compiling and installation of my LaTeX solutions. You can look around in ~/src/ if you like, but if it's too confusing, I suggest you stick to handling ~/public_html directory. ~/public_html/ and overview =========================== ~/public_html/ contains assorted *.shtml files, each of which corresponds to one of the course pages. They all use Server Side Includes (SSI) to include headers and footers stored in ~/public_html/shared/ which take care of a lot of HTML boilerplate. If you want to add content to any of the pages, just hack away on the appropriate *.shtml file (for example, see labs.shtml). You'll definitely want to flesh out the content in index.shtml (the main page) with appropriate course details. Inside many of the *.shtml files are tags. These tags use PHP to include all the site's dynamic content. I suggest you leave them alone. You won't have to worry about the PHP code itself, but you will have to supply those scripts with content to parse. This content lives in ~/public_html/xml/ and ~/public_html/doc. ~/public_html/xml/ ================== profs.xml, TAs.xml, and course.xml are pretty clear. Just fill in the XML as appropriate for the course. webmaster.xml is even easier, since you don't have to look up your own information. atom.xml is an atom feed (which is also parsed by atom.php to fill in the announcements page). I wrote a command line atom feed generator "atomgen" (http://www.physics.drexel.edu/~wking/unfolding-disasters/posts/Atomgen/), which I've installed for you. Run atomgen --help and atomgen add --help to see information about how to add to the atom.xml I've already created. For example, to add a comment saying you'd posted the first set of homework solutions, you might run echo "Homework 1 solutions posted. Hope you didn't have too much trouble." | \ atomgen -o ~/public_html/xml/atom.xml add -i ~/public_html/atom.xml \ "Homework 1 solutions posted." \ "http://www.physics.drexel.edu/~phys201admin/homeworks.shtml#s1" where we use echo and the pipe (|) to pass the content for the post in via atomgen's stdin. ~/public_html/doc/ ================== Each of the *.shtml pages except index.shtml, content.shtml, and announcements.shtml (whose content we've already discussed) has a call to printSectionDocs() in its PHP. This call links in data from the ~/public_html/doc/. The syntax is printSectionDocs($title, $directory, $startswith, $maxnum); for example printSectionDocs('Lecture', 'doc/lec', 'lec', 20); which searches through $directory (doc/lec) for any files of the form $startswith$index_* (lec5_slides.pdf) and links to them, calling them * (slides.pdf). $maxnum makes it easy for printSectionDocs() to reference the files newest-to-oldest, finding files with 0 < $index <= $maxnum. $title sets the headings of the per-index blurbs. To make the system work, you just drop your content into (for example) ~/public_html/doc/lec/ with appropriate file names, and links show up on lectures.shtml automatically. Because of the automatic linking, make sure you it's OK to post the information (e.g. exam solutions) BEFORE you place them in the doc/ tree. To keep everything organized, I've also added doc/note to store things like a course syllabus.pdf, and write the link by hand in index.html's list of course resources. In the past, I've used doc/lec/ for lecture notes/slides. doc/rec/ for recitation problems and solutions. doc/lab/ for lab procedures and prelabs. doc/hwk/ for homework problems and solutions. doc/exams/ for exam solutions. but it should be pretty clear what to change if you want to fiddle with that layout. style ===== I haven't spent much time making everything look all pretty, so there's surely room for improvement if you like playing with CSS. And that's it! Good luck, Trevor p.s. don't worry about what's in ~/bin/ or ~/lib/ unless you want to. They're there so you have atomgen and it works, but are not important for website maintenance.