Konstantin Kunakov
Lead maintainer
Class journal helps teachers manage grades for repeated lessons, training sessions, seminars, workshops, or any course format where each meeting can have its own grade.
Teachers add a Class journal activity to a course, create dated lessons, and enter grades in a matrix where students are rows and lessons are columns. Each lesson can have its own maximum grade. The plugin then calculates one final activity grade and syncs it to Moodle Gradebook as a single grade item.
The final grade can be calculated as a sum or as an average:
Sum aggregation adds lesson points and caps the result at the configured Gradebook maximum.
Average aggregation calculates lesson percentages and converts the result to the configured Gradebook maximum, making mixed lesson scales such as 5, 10, and 100 easier to combine.
Empty grades can either be ignored or counted as zero, depending on the activity setting.
The plugin also exposes Moodle External Functions for REST integrations. External systems can:
Create lessons.
Set grades.
Read lesson grades.
Read calculated final grades together with aggregation settings.
Key features
Moodle activity module for lesson-based grading.
Create, edit, and delete dated lessons.
Bulk-create repeated lessons every N weeks.
Per-lesson maximum grades.
Teacher grade matrix with students as rows and lessons as columns.
Optional comments for each lesson grade.
Student view for own grades.
Optional setting to show all student grades to students.
Lesson filters by name and date range.
Pagination for large journals.
Bulk lesson deletion with confirmation.
One Moodle Gradebook item per Class journal activity.
Sum and average aggregation modes.
Configurable final Gradebook maximum (for example 100).
Optional mode to count empty grades as zero.
REST API through Moodle Web Services.
Gradebook behaviour
Class journal creates one Moodle Gradebook item for each activity instance. It does not create a separate Gradebook column for every lesson.
Sum mode
Adds the lesson grades for each student.
Ignores empty grades unless "Count empty grades as zero" is enabled.
Caps the final grade at the configured Gradebook maximum.
Average mode
Converts each lesson grade to a percentage of that lesson's maximum.
Averages those percentages.
Converts the result to the configured Gradebook maximum.
Ignores empty grades unless "Count empty grades as zero" is enabled.
Example
Lesson A: 8 / 10
Lesson B: 15 / 20
Gradebook maximum: 100
Average mode result: (80% + 75%) / 2 = 77.5, so final grade is 77.5 / 100.
REST API
Class journal registers these Moodle Web Service functions:
classjournal_get_lessons(cmid)
classjournal_get_grades(lessonid)
classjournal_get_final_grades(cmid)
classjournal_create_lesson(cmid, name, description, lessondate, maxgrade)
classjournal_set_grade(lessonid, userid, grade, comment)
classjournal_get_student_grades(cmid, userid)