I worked with our Faculty of Education to build a community blogging website for use by after-degree student teachers as part of their personal/professional development, reflection, and collaboration process, as well as to collect materials for use in ePortfolios. They had a set of pretty simple constraints. Because the student teachers would be writing about activities in the K-12 classroom, and likely would be posting media (photos, videos, etc...) they needed to restrict access to the site - there could be no public access to this content. Additionally, they needed to control with a fairly fine granularity which individuals within the community would be able to see specific pieces of content. Because of these constraints, we couldn't just load up WPMU and set them free, nor could we just point them to WordPress.com or Blogger.com. What to do...
Drupal, of course. It's got a blogging module available out of the box (it takes a checkbox to enable it). OK. Blogging is taken care of. Members just have to click "Create content" and select "Blog post". Easy peasey.
Want to allow members of the community to create their own groups? Organic Groups. It's amazingly flexible, and has an added bonus, in this case, of also enabling access control to content based on group membership (after enabling Organic Groups, go to the settings page for the module and enable "Access Control"). Meaning that the student teachers could create as many private group contexts as they like, and then grant access to their content to any of their groups (and only those groups) if desired. Very powerful stuff.
OK. So now we have a bunch of student teachers blogging their brains out. That's a lot of content to keep track of. Their professors and practicum teachers need to keep up on all of the relevant posts, and provide feedback in a timely manner. How to provide tools to let individuals track content that they're allowed to see, that they haven't seen yet, and that they need to respond to... Views. Drupal's Views module is killer for this. It's basically a database query generator, where you can provide a set of criteria to filter content, and create a display on the website. So I created a couple of handy views to help people keep up.
The first view was a simple "all content that has been posted to any of your groups, sorted in reverse chronological order" - this is the "river of news" display, which meant that members didn't have to go hunting through their various groups (some had over a dozen group memberships) to find new content. It's all merged, sorted, and presented to them on the front page of the site. This let members keep their fingers on the pulse of the community - they could see at a glance what was being published in all of the groups they cared about. This view also displayed the number of comments (and any new comments were flagged) so people could easily follow up on conversations.
The second view was intended to help members keep up with new content - essentially an "inbox" to be used by professors and teachers. This view was a clone of the first "river of news" view, but only displayed unread items. As a professor viewed a blog post, it would get dropped out of this view for them.
We also used the Book module to create documentation on the site (how to use the site, as well as pages with links to other resources, an FAQ, etc...) and we enabled the Forum module to create a separate non-blog discussion board within the site (but this never really got used much...)
That's really all there is to it - Drupal just handles the rest, and once it's configured it takes very little care and feeding.
Here's the stuff we used (the site was built a year ago on Drupal 4.7, but I'm listing what would be used as of the current Drupal 5.3):
- Drupal 5.3
- Organic Groups module
- Views module
- LDAP Integration module (current 5.3 branch borks on UCalgary's LDAP, so you might have to play a bit)
- Insert View module (for embedding the views on the front page)
- TinyMCE module (for a rich text editor while creating/editing content)
- Anarchy Media Player (non Drupal - add the Standalone JS version as a block in your site theme's header and all media will be embedded automatically)
I'll try to revise this post to clarify stuff as needed, but this is the basic recipe. The best thing to do is just start downloading and playing...