Using Drupal as a Social Oriented Content Platform

thettinger's picture

One of MAF-LT's recent projects is to build a collaborative website for learning and technology.  We are looking to create a constructive social platform similar to Facebook or Ning.  However, we wanted it to be its own entity, and have features that were not readily available in those platforms.  After looking through different options that would have the requirements of a blog, a forum, a wiki, and a library, we came up with a few different options: we could create a site with multiple platform tools, using the best software for each requirement, or use a solution such as Drupal, that has modules to integrate all the requirements into one platform.  We decided to research options for Drupal, to see if it would meet our requirements.  Read on for more information about our research into using Drupal as a wiki and a forum.

After decided to use Drupal as the CMS for this research project, I did some research into using groups.    Since the project we would like to use Drupal on is orientated around a community, group creation and structure is really important.  One of the requirements for this project also is that there needs to be areas of the wiki/forums for private discussion.   This creates a need to have privacy on the platform.  So when evaluating the different Drupal modules, I evaluated them with security as an issue.  The following experiences were based on Drupal 6.13.

Forums

Forums were the first type of module I evaluated on Drupal.  Drupal comes with a very basic forum built into the core modules.  You can then get the "Advanced forum" module 1 to expand the functionality of the forums greatly.  We used the latest stable release of Advanced Forum: 6.x-1.1.  After installing the advanced forums, you then need to integrate some sort of group permissions.  There are three main options here: 

  • Organic Groups
  • Forum Access
  • Taxonomy Access Control

Organic Groups

Organic Groups is a module desinged for making and using groups powerfully, yet easily in Drupal. The setup of the module is a little difficult, but once you have your basic groups, things are very easy.  The Organic Groups solution does not requiring messing with roles in the Drupal administration for security. 

Version of OG modules:

  • OG user roles    6.x-1.5    Allows group administrators to add members into Drupal system roles which are restricted to the group. (NOT same as OG Roles module.)
  • Organic groups    6.x-2.0-rc3    Enable users to create and manage groups. OG Views integration module is recommended for best experience.
  • OG Forum     6.x-2.0-rc1    Creates forums within organic groups.
  • Organic groups access control    6.x-2.0-rc3    Enable access control for private posts and private groups.
  • Organic groups actions    6.x-2.0-rc3    Provides actions for use with Organic Groups and Trigger.
  • Organic Groups Notifications    6.x-2.0-rc3    Allows users to receive notifications and subscribe to group content.
  • Organic groups Views integration    6.x-2.0-rc3    Highly recommended.. Use Views to search and display organic groups.

Helpful Organic Groups References:

 

Forum Access

The Forum Access is  very similar to the Content Access module, but affects the topics/containers instead of the nodes/posts.  Forum Access, like Content Access, is built upon the ACL security module.

I think it would help to briefly mention the security model based upon Content Access.  Essentially, with content access, you can set access based upon roles, as well as indiviual user overide.  Like Forum Access, Organic Groups will also work with Content Access, but there is a snag, as OG uses its own groups, and content_access uses roles. 

Using Forum Access will make private forums, however, just like Organic Groups, the permissions are not inherited, so you must use the content_access module also to make a forum post truly private. 

Version of Forum Access modules:

  • ACL    6.x-1.0    Access control list API. Has no features on its own.
  • Content Access    6.x-1.1    Provides flexible content access control
  • Forum Access    6.x-1.0-rc1    Allows forums to be set private and allows forums to be given moderators.

Helpful Forum Access References:

 

Taxonomy Access Control (TAC)

Taxonomy Access Control allows you to define access to a taxonomy tree via roles.  The taxonomy for the forums is the forum topic, using Taxonomy Access Control, you can lock down the forum topic to different roles.  For each role, you can set Allow, Ignore, Deny for view/update and create abilities.  As well as a create and a list option.  This is pretty powerful.  It does require the extra administration of associating users with roles (instead of just groups, as in Organic Groups).  The setup of the relationship between roles and their taxonomy terms is a fairly complex, depending on how many taxonomy terms and roles you want to intertwine.

Version of TAC modules:

  • Taxonomy Access Control    6.x-1.0    Access control for user roles based on taxonomy categories.

Helpful Taxonomy Access Control References:

 

Forums and Security Conclusion

After trying out the different options, using Organic Groups, nodes created in the forum did not inherit their forums permissions, nor was there a place in Organic Groups to change node permissions.
Nor did Forum Access nodes inherit their forum’s permissions.  Though the permissions were something you could set via Access Control for each individual node.  That process would be too tedious for a normal forum user, who just expects a private forums’ posts to be private.
So after comparing and contrasting the different options, it looks like the easiest way to implement a private forum for us is the Advanced forum with Taxonomy Access Control.  The in the forums, the taxonomy is the  forum topic.  Using Taxonomy Access Control, you can lock down the forum topic to different roles.  Thus, nodes created under the topic inherit their permissions.  People without access to a particular taxonomy term will not see the associated forum, or even see it listed in the taxonomy terms.
 

Wikis

After looking at different security approaches for the forums, our permission model for the wiki portion of the website has already been chosen.  Now we need to implement the proper modules to allow for a colloborative area of the website.

Wiki Modules we implemented:

  • Diff    6.x-2.1-alpha1    Show difference between node revisions.
  • Freelinking    6.x-1.8    Wiki-style freelinking for node content using CamelCase and delimiters.
  • Pathauto    6.x-1.1    Provides a mechanism for modules to automatically generate aliases for the content they manage.
  • Wikitools    6.x-1.2    Provides helper functionality to have wiki-like behaviour.
  • Recent changes    6.x-1.x-dev    Display a list of recent changes.

Wiki permissions work with TAC, and freelinking.  In order for Freelinking permissions to work, you will need to add access to freelinking to all available roles.  This includes authenticated users and anonymous users, if you want them to be able to navigate your wiki.  Also and important step is to associate the Drupal “input type” to use the freelinking filter.  We renamed the Book input type to Wiki Pages, and enabled revisions as a default in your workflow for that input type.  After attempting to implement the PairWiki module, I decided just to use the FreeLinking module.  It seemed to have all the functionality needed.

Once you get a wiki page up and running the TAC permissions work similar to the forum, except instead of automatically inheriting the forum category, you must pick a category to put your posting into.  This is because of the flat architecture of pages/book input type.  At this point, the way to make it “unflat” is to associate it with the taxonomy. Although I am looking into using pathing, tokens, and breadcrumbs to make parent and daughter pages.

Helpful Drupal Wiki References:

Conclusion

We are still working on evaluating if Drupal will meet our needs as a platform for the colloborative project, but a lot has been learned about permissions and privacy in forums, and implementing wiki like behaviour in Drupal.  Thanks to all the people who spent time working on the different modules and Drupal!

Related

Related post:http://woorkup.com/2009/11/10/how-to-build-a-social-networking-website-with-drupal/

You may want to take a look

You may want to take a look at Open Atrium. It's a drupal distribution specifically for intranets and group collaboration. See http://openatrium.com/

brhoads's picture

 Have you seen Acquia Drupal?

 Have you seen Acquia Drupal?

thettinger's picture

Here is the list of the

Here is the list of the modules that the Acquia drupal is using.  It looks like the point of the Acquia Drupal is to offer paid support.

gabrielleM's picture

really? hmm..gonna check out

really? hmm..gonna check out the link you've shared.