-
Sub-task
-
Resolution: Duplicate
-
Minor
-
None
-
1.9.7
-
None
-
MOODLE_19_STABLE
Here is a list of my new ideas and some unfinished stuff from my previous work on gradebook:
1/ add new course action scheduler - specify what should happen at what time (lock grade, hide grade, hide activity, open course, close course, etc.)
2/ add "grade buffer" - the grades could be delayed in rawgrade state for some time, this allows synchronised release of grades or manual confirmation by teacher
3/ add new flag to grade_item aggregatehidden - formulas and aggregations can specify individually what to do with hidden grades
4/ remove Hidden until flag - replaced by action scheduler and grade buffer
5/ remove lockafter - replaced by action scheduler
6/ move grading setup in modform.php to gradebook - solves decimal raiding in assignment, etc.
7/ move grading UI to grade report
8/ add docs for setting up of grade categories and aggregations when using groupmembersonly
9/ add datesubmitted and dategraded flag to grade_grades
===== 1/ course action scheduler ====
There are very many time based options in course, modules and gradebook, users keep requesting more and more new options. This adds code complexity and clutters normal UI. Example of these features is hidden until and lock after - majority of users do not need these options. Long term solution could be new action scheduler defined at the course level, it would enable teachers to specify actions to be executed at specified time - such as lock gradebook item, hide/unhide items, hide activity, etc. The user interface could be pretty simple, something like current calendar. The actions would be queued and executed from cron.
==== 2/ grade buffer ====
At present the grades appear in the gradebook immediately. Even if hiddenuntil used, the grades are there, there is no way to delay the appearance of grades from activities. This is especially important for activities like quiz where teacher wants to release the grades only after everybody submits. Technically we would keep the grades in rawgrade until some time or manual confirmation by teacher. We would need a new flag in grade_items table indicating the type of activity-gradebook integration:
- buffering
- overridable
- none - grades entered via gradebook reports only
- legacy - overridable with plusfactor and multfactor
Teachers would have topknotsome UI to see all the grades in buffer. We would need a new gradebook report for confirming of grades.
==== 3/ aggregatehidden flag ====
During the development of 1.9 gradebook we have forgotten to design the hiding properly, unfortunately we have discovered this after the DB freeze, so we could only add ugly temporary workaround in the form of on the fly recalculation for student views. This approach is wrong because students see different grades than teacher/export if hidden grades present, it is also a significant performance problem.
A proper solution is to add aggregatehidden into grade_items table and finally have only one correct grade value at any time. Please note current hidden flag in grade_items and grade_grades is not compatible with this approach, because the switch does not trigger PHP action at the requested time, instead the hidden flag is switched afterwards on the fly - see 4/ for proposed solution
==== 4/ remove "Hidden until" grade option ====
This feature was requested specifically by OU and was supposed to be used for synchronised release of grades. The problem is that we have to alter the aggregation results, report sums, etc. because users might be able to calculate the hidden grade from the aggregation results. Please note that at present gradebook is always including all grades (including hidden) in formulas and calculation, we are just "faking" the grades in student report to remove the effect of hidden grade son the fly.
This feature should be imo replaced by grade buffer or action scheduler depending on the real needs of users.
==== 5/ remove lockafter ====
"Lock after" is another feature requested by OU. It might be interesting to evaluate if it is necessary to have this in gradebook UI, it could be easily reimplemented in action scheduler
==== 6/ and 7/ move as much gradebook stuff into gradebook ====
- gradebook-activity integration options as standard part of modedit form
- assignment grading belongs into gradebook - other modules should use it too
- etc.
==== 8/ groupmembersonly solution ====
- code change - hide inaccessible module instances on the reports reports for students/parents (optional)
- docs - instruct teachers to groups the activities for different groups into special category/categories (use the same max grade)
- docs - set up aggregation in this category to Average - set keephigh==1
This approach is usable only if you divide the students into non-overlapping groups and create a separate grouping for each activity.
The recommended workflow for teachers is:
1/ create gradebook category "Separate assignments", set up average aggregation with keep high 1
2/ create 4 groups and 4 groupings - add 1 group into each grouping (+ assign students to groups)
3/ create 4 assignments - set groupmembersonly and set parent category
I can not see any way to automate this complex process, I personally think it is better to educate teachers instead.
==== 9/ add datesubmitted and dategraded flag to grade_grades ====
see TODOs in code