Moodle

Give time/date extensions to individual students for course activities.

Details

  • Affected Branches:
    MOODLE_17_STABLE, MOODLE_18_STABLE, MOODLE_19_STABLE, MOODLE_20_STABLE

Description

Have the ability to extend time/date limitations for activities for individual students. It would be nice to be able to set this at a course OR student level.

Discussed in various ways at:

http://moodle.org/mod/forum/discuss.php?d=57271
http://moodle.org/mod/forum/discuss.php?d=52690&parent=241064

and probably others.

Issue Links

Activity

Hide
Anthony Borrow added a comment -

As per, http://moodle.org/mod/forum/discuss.php?d=57271 for quizzes and lessons this would help accomodate what we refer to as extended time. I think with one table the extension of times could be handled on a per user basis. I think the interface for adding the entries would be the more complicated part.

Show
Anthony Borrow added a comment - As per, http://moodle.org/mod/forum/discuss.php?d=57271 for quizzes and lessons this would help accomodate what we refer to as extended time. I think with one table the extension of times could be handled on a per user basis. I think the interface for adding the entries would be the more complicated part.
Hide
Timothy Takemoto added a comment -

Bearing in mind the
http://tracker.moodle.org/browse/MDL-4464
bug, I often have to extend quiz submission times for students, I do this with a password and general extension but as was pointed out in other forums, this is confusing to other students, who think that they should be able to take the test and ask me what the password is.

Show
Timothy Takemoto added a comment - Bearing in mind the http://tracker.moodle.org/browse/MDL-4464 bug, I often have to extend quiz submission times for students, I do this with a password and general extension but as was pointed out in other forums, this is confusing to other students, who think that they should be able to take the test and ask me what the password is.
Hide
Anthony Borrow added a comment -

FYI - Just to update here that in MDL-14234 we were discussing a way of implementing adding time extensions for user activities. Peace - Anthony

Show
Anthony Borrow added a comment - FYI - Just to update here that in MDL-14234 we were discussing a way of implementing adding time extensions for user activities. Peace - Anthony
Hide
Anthony Borrow added a comment -

adding 1.8, 1.9, and 2.0 to list of affected versions. I doubt this will be fixed in versions prior to 2.0. Perhaps we can get an updated fix version from Nick. Peace - Anthony

Show
Anthony Borrow added a comment - adding 1.8, 1.9, and 2.0 to list of affected versions. I doubt this will be fixed in versions prior to 2.0. Perhaps we can get an updated fix version from Nick. Peace - Anthony
Hide
Glenn Ansley added a comment -

Hello,
I've taken a swing at this. It's a big swing so I'm going to assume a miss followed by several revisions with your help. I've not undertaken a patch this big for Moodle core before so please offer advice where needed.

Modifications made (per conversation here, in the forums, and on MDL-14234):

  • I created a new class inside the lib/ folder. I've constructed this class in a manner that any activity module should be able to use it to create individual student/cm extensions or 'customizations' to any of the db fields that activity normally supports.
  • I've added one table to the DB structure
  • I've updated the install.xml and the upgrade.php files to handle that.
  • I've modified the Quiz module to demonstrate how integration could take place.

Caveats

  • I have developed this for Moodle 1.9.11 as that is what version I needed it for
  • I've written this with hopes of it being brushed up by the community and included in core so its not written as a module.
  • I've only prototyped - though extensively - so there are no translation strings available yet and i imagine custom capabilities might be suggested.
  • Because I created it for core and not for a module, you will need to bump your main Moodle version # to get the tables installed.

Use

  • Create a quiz w/o starttime, endtime, or timelimit
  • Attempt the quiz with multiple students (or multiple times with one student)
  • Go back to the Edit Quiz screen
  • Navigate to the bottom and assign an extension to a student for the quiz. (extend the timeclose for them or something)
  • Log back in as a student and see that quiz has been updated.

Notes

  • Regrade compensates for changed values
  • The class I added to the /lib folder has PHPDoc so use that if you need to.
  • I'm probably forgetting to mention something else.

Warning DO NOT INSTALL THIS ON PRODUCTION. THIS IS NOT SAFE FOR PRODUCTION.

You can pull my modifications here: https://github.com/glennansley/moodle/tree/MDL-7315-time-date-extensions

I look forward to your feedback.

Show
Glenn Ansley added a comment - Hello, I've taken a swing at this. It's a big swing so I'm going to assume a miss followed by several revisions with your help. I've not undertaken a patch this big for Moodle core before so please offer advice where needed. Modifications made (per conversation here, in the forums, and on MDL-14234):
  • I created a new class inside the lib/ folder. I've constructed this class in a manner that any activity module should be able to use it to create individual student/cm extensions or 'customizations' to any of the db fields that activity normally supports.
  • I've added one table to the DB structure
  • I've updated the install.xml and the upgrade.php files to handle that.
  • I've modified the Quiz module to demonstrate how integration could take place.
Caveats
  • I have developed this for Moodle 1.9.11 as that is what version I needed it for
  • I've written this with hopes of it being brushed up by the community and included in core so its not written as a module.
  • I've only prototyped - though extensively - so there are no translation strings available yet and i imagine custom capabilities might be suggested.
  • Because I created it for core and not for a module, you will need to bump your main Moodle version # to get the tables installed.
Use
  • Create a quiz w/o starttime, endtime, or timelimit
  • Attempt the quiz with multiple students (or multiple times with one student)
  • Go back to the Edit Quiz screen
  • Navigate to the bottom and assign an extension to a student for the quiz. (extend the timeclose for them or something)
  • Log back in as a student and see that quiz has been updated.
Notes
  • Regrade compensates for changed values
  • The class I added to the /lib folder has PHPDoc so use that if you need to.
  • I'm probably forgetting to mention something else.
Warning DO NOT INSTALL THIS ON PRODUCTION. THIS IS NOT SAFE FOR PRODUCTION. You can pull my modifications here: https://github.com/glennansley/moodle/tree/MDL-7315-time-date-extensions I look forward to your feedback.
Hide
Tim Hunt added a comment -

I assume you spotted that this has already been implemented in the quiz module in Moodle 2.0. (Of course, it would be better to implement this in a way that works in all modules eventually.)

Show
Tim Hunt added a comment - I assume you spotted that this has already been implemented in the quiz module in Moodle 2.0. (Of course, it would be better to implement this in a way that works in all modules eventually.)
Hide
Glenn Ansley added a comment -

I honestly didn't look at 2.0 because that's probably a year out at this point for us. I will now though. I'd be interested to see how you do your interface and probably mimic that.

Show
Glenn Ansley added a comment - I honestly didn't look at 2.0 because that's probably a year out at this point for us. I will now though. I'd be interested to see how you do your interface and probably mimic that.
Hide
Mark Drechsler added a comment -

Can this please have the 'partner' tag added? It is one on my hit list for clients - even if its not as pressing as rubric grading forms

Show
Mark Drechsler added a comment - Can this please have the 'partner' tag added? It is one on my hit list for clients - even if its not as pressing as rubric grading forms
Hide
Anthony Borrow added a comment -

Mark - Since this is working for the quiz activity module, I would think that a similar strategy could be applied to all modules as Tim mentions. Seems like a reasonable request as I like to see that type of consistency with activity modules. Peace - Anthony

Show
Anthony Borrow added a comment - Mark - Since this is working for the quiz activity module, I would think that a similar strategy could be applied to all modules as Tim mentions. Seems like a reasonable request as I like to see that type of consistency with activity modules. Peace - Anthony
Hide
Anthony Borrow added a comment -

I'm bumping the priority of this to major and set the fix version to dev backlog. I'll let one of the Michael's do the tagging of the issue. Peace - Anthony

Show
Anthony Borrow added a comment - I'm bumping the priority of this to major and set the fix version to dev backlog. I'll let one of the Michael's do the tagging of the issue. Peace - Anthony
Hide
Mark Drechsler added a comment -

Sounds like a plan Anthony - love the way it works in quizzes, having this extended to other activities.

Cheers,

Mark.

Show
Mark Drechsler added a comment - Sounds like a plan Anthony - love the way it works in quizzes, having this extended to other activities. Cheers, Mark.
Hide
Michael Blake added a comment -

This issue is affecting MP clients. Please give it priority.

Show
Michael Blake added a comment - This issue is affecting MP clients. Please give it priority.
Hide
Michael de Raadt added a comment -

Bumping priority on this.

Show
Michael de Raadt added a comment - Bumping priority on this.
Hide
Tim Hunt added a comment -

Did you read the comments above before adding component quiz? Seemingly not. This was implemented in the quiz for Moodle 2.1 - so no more work needed there.

Show
Tim Hunt added a comment - Did you read the comments above before adding component quiz? Seemingly not. This was implemented in the quiz for Moodle 2.1 - so no more work needed there.
Hide
Adam Olley added a comment -

I've posted a proposed way of handling this that'd work for all activities on the forums.

http://moodle.org/mod/forum/discuss.php?d=183478

Very much RFC. Let me know if I'm on the right track or completely mad.

Cheers,
Adam.

Show
Adam Olley added a comment - I've posted a proposed way of handling this that'd work for all activities on the forums. http://moodle.org/mod/forum/discuss.php?d=183478 Very much RFC. Let me know if I'm on the right track or completely mad. Cheers, Adam.
Hide
Mark Drechsler added a comment -

Anyone got any comments on Adam's suggested implementation? Like many, I would love to see Tim's quiz solution implemented in at the very least the Assignment module, which is where I get the majority of queries around how to make extensions for individuals and groups.

Keep voting, keep talking.

Show
Mark Drechsler added a comment - Anyone got any comments on Adam's suggested implementation? Like many, I would love to see Tim's quiz solution implemented in at the very least the Assignment module, which is where I get the majority of queries around how to make extensions for individuals and groups. Keep voting, keep talking.
Hide
Tim Hunt added a comment -

Adam's suggested implementation is too simplistic. There is no way that this can be done completely generically, because different activities have different DB columns that need to be overridden.

Compare this with Moodle works for editing the basic activity settings. The mod has to create all the DB columns itself; it has be define the editing form; it has to provide specific add/update_instance functions.

To implement overrides 'generally' you would require at least that much specific support from each module. Not impossible, but a substantial task.

My suggestion would be that whoever wants to implement this should first implement it in a single module (e.g. assignment) while looking at the quiz code and basically copying it. Only then, once there are two different working implementations, so you try to refactor this into a generic system with callbacks in the modules.

Show
Tim Hunt added a comment - Adam's suggested implementation is too simplistic. There is no way that this can be done completely generically, because different activities have different DB columns that need to be overridden. Compare this with Moodle works for editing the basic activity settings. The mod has to create all the DB columns itself; it has be define the editing form; it has to provide specific add/update_instance functions. To implement overrides 'generally' you would require at least that much specific support from each module. Not impossible, but a substantial task. My suggestion would be that whoever wants to implement this should first implement it in a single module (e.g. assignment) while looking at the quiz code and basically copying it. Only then, once there are two different working implementations, so you try to refactor this into a generic system with callbacks in the modules.
Hide
Adam Olley added a comment -

All the main interface would require is to know which user you want to apply an override for, and the new override time(s)/setting(s). The modules can decide themselves what they apply those to, if at all.

It seems far less work would be involved in having modules define a FEATURE_OVERRIDE in their supports method and to then provide a function or two to supply stuff like a list of possible fields to be overriden and their type.

Naturally any module that will support this will need to alter its checks on any override-able fields to make sure they haven't been overridden.

Merely copying how its done in quiz for another mod, say assignment (where this is most requested), would pretty much be a carbon copy and bring us no closer to a generic solution.

What may be a good idea is rather than one big table for overrides site-wide, you instead have a table per supported module (much like we have quiz_overrides). This would give each module more control over its override data (and would be beneficial for lookups and other stuff like backup/restore).

Show
Adam Olley added a comment - All the main interface would require is to know which user you want to apply an override for, and the new override time(s)/setting(s). The modules can decide themselves what they apply those to, if at all. It seems far less work would be involved in having modules define a FEATURE_OVERRIDE in their supports method and to then provide a function or two to supply stuff like a list of possible fields to be overriden and their type. Naturally any module that will support this will need to alter its checks on any override-able fields to make sure they haven't been overridden. Merely copying how its done in quiz for another mod, say assignment (where this is most requested), would pretty much be a carbon copy and bring us no closer to a generic solution. What may be a good idea is rather than one big table for overrides site-wide, you instead have a table per supported module (much like we have quiz_overrides). This would give each module more control over its override data (and would be beneficial for lookups and other stuff like backup/restore).
Hide
yogeshrl added a comment -

Hi all,
I want to Participant to this issue , how should i go for it?

Show
yogeshrl added a comment - Hi all, I want to Participant to this issue , how should i go for it?

Dates

  • Created:
    Updated: