An example project to build

This exercise contains a description of a website that can be built as exam project for the 4 weeks of Drupal course

General description of website

The purpose of this website is to collect learning resources in the form of tutorials and exercises. These are grouped into topics that can be browsed. Optional features are:

  • possibility to mark tutorials as ”watched” and exercises as ”completed”

  • a reward system that grants users points for watched tutorials and completed exercises, and based on points also grants permissions to perform new actions on the site (such as upload resources)

About the descriptions

The description of site features are grouped into required ones (covering the non-optional grading criteria) and optional ones (of which only a few have to be completed to pass the course).

The features are described as end-user functionality, with as little Drupal terms as possible – a part of the course is to learn to interpret web functionality in Drupal terms. There are several features that can be implemented in more than one "natural" way (and all of them can be implemented in a gazillion other ways, too). If you try to map the features against the grade criteria for the course you will probably be able to make out parts of how I would implement the features – but feel free to try any way you like. You are also welcome to add and remove features as you like. See this as a default project to copy and override.

The required features

Note that these features are not really required, but map against the non-optional grading criteria. The features may be changed to any other features you like, as long as the grading criteria are met.

Learning resources

  • Create tutorials: As site member I would like to be able to add new tutorials to the site. The tutorials should link to resources on other sites, rather than be uploads or long texts. Each tutorial should have a short description, though. This is important since the tutorials are essential to make the site work as a learning resource platform.

  • Create exercises: As site member I would like to be able to add new exercises to the site. The exercises should, like the tutorials, be links to resources on other sites rather than on-site resources. Like the tutorials, the exercises should have short descriptions. There should also be room for links to exercise solutions. This is important since the exercises, like tutorials, are essential content for the learning resource platform.

  • Comments on tutorials and exercises: As site visitor I would like be able to post comments to tutorials and exercises, as well as read comments that others have written. This is important since it will help me evaluate the resources as well as discuss and learn form them.

  • Show exercise solutions on separate tab: As site visitor taking part of an exercise, I would like any solution to the exercise to be easily accessible but not immediately visible – for example as a tab on the exercise page. This is important since immediately visible solutions might stop me from trying to solve an exercise myself.

Topics

  • Create and edit topics: As site editor, I want to be able to add new topics for learning on the site, and also to edit existing ones. Each topic should have a title and a short description. This is important since the topics will help finding relevant learning resources on the site.

  • Categorize tutorials and exercises: As site member, I would like to be able to place the tutorials and exercises I add to the site in topics. This is important since it will help learners to find the resources I add.

  • Topic links: As site visitor viewing a tutorial or an exercise, I want to see which topic(s) the resource is included in. There should be links taking me to these topics. This is important since it helps me navigate the content on the site, as well as understanding the resource I'm currently viewing.

  • Set ”inclusion” of topics: As site editor, I want to be able to set one topic as included in another topic – for example ”node creation” being included in ”content management”. This is important since it helps organizing and browsing the topics for learning.

  • Set ”dependency” of other topics: As site editor, I want to be able to set any topics as required for learning a new topic – for example ”node creation” being required for ”node revision handling”. This is important since it helps organizing and browsing the topics for learning.

  • Top-level topic list: As site visitor, I would like to have a list of the widest topics on the site – i.e. topics that are not included in any other topics. These topics should be clickable, allowing me to investigate them further. This is important since it helps me navigate the content on the site.

  • List of simple topics: As site visitor, I would like to have a list of all the simplest topics on the site – i.e. topics that don't require learning any other topics first. These topics, too, should be clickable. This is important since it helps me navigate the content on the site.

  • Topic view: As site visitor viewing a selected topic, I would like to be able to see (or easily reach) the information below in separate lists. The items in the list should be clickable. This is important since it helps me navigate the content on the site.

    • Tutorials included in this topic

    • Exercises included in this topic

    • Sub topics – i.e. topics that are included in the viewed topic

    • Subsequent topics – i.e. topics that require learning this topic first

    • Super topics – i.e. topics the viewed topic is included in

    • Required topics – i.e. topics that are required for learning the viewed topic

The optional features

Note: In the grading criteria, Page manager and Panels are mentioned explicitly – but are barely present in the optional features described below. In most cases it makes sense to build the regular pages for topics, tutorials and exercises using Page manager and Panels.

  • Watched tutorials and completed exercises: As site member I want to be able to mark tutorials as watched and exercises as completed. This information should show up in the listings of tutorials and exercises. This is important since it helps me keep track of what resources I have taken part of.

  • Topic proficiency: As site visitor I want to be able to mark that I am proficient in any of the topics for learning on the site. This information should be visible in lists of topics. There should also be a list at my user page showing all topics I'm proficient in, along with the time when I set the proficient mark. This is important since it helps me keep track of my learning progress.

  • Vote up tutorials and exercises: As site visitor I want to be able to vote up tutorials and exercises. The total number of upvotes should be displayed in lists of tutorials and exercises.

  • Progressive permissions 1: As site manager, I want site members to be able to add comments and vote up tutorials and exercises when they have marked three tutorials as watched and three exercises as completed. This is important since it (a) makes the site less complex for new users and (b) gives positive feedback to users who do exercises and watches tutorials.

  • Progressive permissions 2: As site manager, I would like to reward users with points when they watch tutorials (3 points), do exercises (5 points), post comments (2 point) and vote up tutorials and exercises (1 point). When a member reaches 100 points she should be allowed to post exercises. When she reaches 400 points, she should be allowed to post tutorials. When she reaches 1000 points she should be allowed to add and edit topics. This is important since it (a) makes the site less complex for new users and (b) gives positive feedback to users who contribute to the site. Note that this feature probably requires that you write custom code to hide a points field from users.

  • Progressive permissions 3: As site manager, I would like to reward users who upload new content to the site by awarding them 10 points for each tutorial and 7 points for each exercise. Additionally, 1 point should be awarded when their learning resources is voted up, to a maximum of 10 extra points. This is important since it encourages users to contribute to the site.

  • More tutorials/exerciseson the same topic: As site visitor viewing a tutorial or exercise page, I would like to have a compact list of other tutorials/exercises on the same topic(s). This is important since it helps me find good learning resources.

Downloads: