If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Student projects/Blog improvements

From MoodleDocs


This project aims to make improvements to the existing blog component and add a blog assignment module. Blogs can help immensely in keeping a student's work and an instructor's supervision coordinated, especially in self and group-directed projects or long-term assignments. The blog assignment module will make it easier for instructors to take advantage of the existing blog component.

The improvements to the blog will be a new system of relating course entities to blog posts. Assignments (and other modules), groups, and courses can all be associated with blog posts, providing a method of filtering a blog at each level and thus avoiding the need to search through a blog for relevant posts from a student enrolled in multiple classes. These relations also provide a means of access control for group projects and the notion of a group blog. A group may pertain to several students, and blog posts from each student related to the project can be filtered out of each of their blogs and combined on a single view. Specific blogging assignments can also be associated with blog posts so the instructor is aware of which posts the student wishes to have considered for evaluation.

Mentor: Mathieu Petit-Clair

Student: Joey Morwick


  • Provide a means for organizing blogs in terms of which courses and assignments the blog entries are relevant to
  • Provide a means for viewing blog entries for students collaborating on group projects
  • Provide a means for students to blog about certain modules within a course, or the course itself
  • Provide a means for allowing students to set viewing restrictions for given associations and for teachers to require certain viewing restrictions
  • Provide an assignment module for submitting blog entries for credit
  • Provide backup capabilities for associations and course associated blog entries

Milestones in the Project

  • Develop and finalize complete plans for updating the blog component and for the assignment module - May 26 (complete)
  • Implement course and mod associations in the blog component including privacy support - Mid-Late June (complete)
    • update blog edit interface for adding associations to blog posts (insure only enrolled students/teachers can use a course association) (complete)
    • implement both javascript and re-load methods of populating the lists of available associations (as with group associations) (complete)
    • Update Post display page to include associations under tags (complete)
    • Add new visibility modifiers for posts (complete)
  • Update filters in the blog component - Late June (complete)
    • Add extra validation rules to insure course and group level access posts are associated with a course (complete)
    • update filter for course associated posts (complete)
    • add a filter for mod associated posts (complete)
    • add 'filter-by-group' option for courses and mods (complete)
    • add ability to enable/disable associations site-wide (complete)
  • update blog_menu block - Early July (complete)
    • List links to blogs about associations most relevant to the current context (complete)
    • Provide a 'blog about this' link (complete)
  • Create the blog assignment module - Mid July (complete)
    • Create new subclass of assignment_base (complete)
    • Insure students are limited in how they can use associations and publish states by the extra constraints teachers can set through the assignment edit page (complete)
    • Insure editing and deletion rights are properly constrained for submitted assignments (complete)
  • Implement backup support for courses with blog entries associated with them or with contained assignments and projects. - Early August
  • Final bug-checking and refactoring - Mid-Late August


Progress can be tracked in-depth on my blog. Completed stages are marked out on the list above. The first item that is not marked out is the current item I am working on.

Interface Mockups


The interface for adding associations to a blog entry would appear under the tag portion of the form. Javascript will populate relevant mod and group entries for selected courses, whereas when javascript is unavailable, a course association must first be set and then other associations can be set.


Associations will appear with icons under the tags portion of a posted blog entry. Each links to a list of blog entries associated with the course/project/assignment selected just as they are when a tag link is visited.


Settings for how many associations may be made for an assignment and the maximum visibility that may be used for an assignment will be present on the edit page of a blog assignment.

Database Tables


Stores associations between blog posts and other moodle entities. This table is similar to the "tag_instance" table. An accompanying 'association' table will not be necessary as the id's in this table point to other existing tables, and the association itself has no substance as tags do.

Field Type Default Info
id int autoincrementing
contextid int The id of the context being associated with the blog post (from table 'context' field 'id')
blogid int id of the blog post being associated (from table 'post' field 'id')


Several security issues exist for this project, such as:

  • who may read blog entries with particular associations
  • who may use particular associations with their blog entires
  • who may grant permission to use certain associations

When creating a blog assignment, teachers can require the student use certain access restriction levels for the entries they associate with the assignment.

For students, the blog settings panel should include options for visibility of entries associated with any of the courses, groups, or assignments the student has access to. Two options will be included: the first will be the default visibility, and the second will be the visibility which takes precedence until the due date. These fields will be populated with only those values allowed by the instructor. Possible values are:

  • Everyone on this site
  • Members of the class
  • Group Members (for group associated entries)
  • Yourself (only the author and teachers)

In addition, these values will be added to the "publish to" field for each blog entry, so that visibility can be set on a per-entry basis instead of just an association-wide basis. As with the association-wide permissions, the available values for the "publish to" field can be constrained by the settings of the teacher for a particular tag. If javascript is enabled, the list will be re-populated when associations are changed. Otherwise the page will be refreshed when an association is made.

Contentious Points

These are what I see as the points where community members may want to see something different from what I've settled on. My answers to each question follow in bold.

  • Is the "project" feature desired? If not, would associating blog entries with groups be desired? - The 'Project' feature will not be implemented, and instead associations with groups will be implemented
  • How extensible should the associations be?

- At the database level, blog posts will be associated with moodle contexts. Support for assignments will be added first, followed by other course mods, and other contexts as time permits.

  • Should teachers be able to set permissions for using associations on a per-student basis?

- No, because Moodle is role based

See also