Activity Extensions for Moodle - MDL-37505

Activity Extensions for Moodle - MDL-37505

by James McLean -
Number of replies: 4

As I have mentioned elsewhere on the forum, we have been working on an extensions module for Moodle. We are porting to 2.x currently and would like to release it to the community in it's entirety.

As suggested by the new feature development guide I have created a Specification which is located at: http://docs.moodle.org/dev/Moodle_Activity_Extensions_Spec and a Tracker item located at: https://tracker.moodle.org/browse/MDL-37505 .

The specification should be considered to be a draft at the moment but I'm happy to hear feedback for the implementation of this, as we feel this will provide some further advanced features to Moodle.

Average of ratings: Useful (1)
In reply to James McLean

Re: Activity Extensions for Moodle - MDL-37505

by Damyon Wiese -

Hi James,

Thanks for posting this and sharing your work.

I have a couple of quick suggestions from reading your spec

1. Directory: course/extensions/ blah

This is not the correct path for this feature - the extensions only relate to modules - not a course so the folder would sit at the top level (like plagiarism).

2. Re: changing get_coursemodule_from_id...

No - you should create your own function and not try and overload this core one. Firstly - you often need to get the extension date for someone else (not $USER) - so your function needs to accept a userid and second - if everyone added their own features to that core function it would be an unrecongnisable mess.

3. I see a couple of other things not mentioned in the spec.

(a) The assignment and quiz both have their own extension date logic/data which would need to be upgraded into these new tables with no data loss. (Quiz has special handling for when a student has the quiz still open when the time expires - the assignment doesn't need that). 

(b) This extension date information will need to be included in backup/restore. 

(c) You will probably need something like the user_picture stuff to add the extension date fields to a query and then a function to display a date from a record with those fields. 

Regards, Damyon

In reply to Damyon Wiese

Re: Activity Extensions for Moodle - MDL-37505

by James McLean -

Thanks for posting those thoughts Damyon, they're most helpful. 

We'll be working on the spec again soon so I'll be sure to include those changes.

In reply to James McLean

Re: Activity Extensions for Moodle - MDL-37505

by James McLean -

While this may not be the correct place to post it now (given that the tracker item has been closed as duplicate) I've taken onboard your suggestions Damyon, and combined with some other suggestions have been working towards making this function as it should.

I've followed the lead of how Plagiarism/Repository plugin system was implemented and built it to work with all the internal Moodle plugin management functions. One consistant theme that appeared to be mentioned a few times was a central method of tracking and keeping deadlines was also something people wanted. Recognising that Extensions and Deadlines work hand in hand, I have built a Deadlines plugin also which (for the activities that are modified to support it) will track open/deadline/cutoff dates in a central table.

I've structured it such that at the base level, there is a 'deadline' module which contains the base class; like how Plaigiarism operates. With just that setup and no deadlines/extensions plugin installed the activities will default back to their own storage mechanism (own database table).

When a Deadlines plugin is installed, for modules that supports it (determined by calling plugin_supports('mod', $this->modname, FEATURE_DEADLINE)), it will track that modules open/deadline/cutoff data in it's own table, linked back to Course Module ID.

For now I've been concentrating on making mod_assign work with this, so far so good, individual and group extensions are implemented and working, and the functionality for staff to add an extension to a student is working too.

I realise I'm kind of side stepping some of the established processes here regarding the spec etc - but fortunately or unfortunately (depending on how you look at it) we're developing this primarily for our requirements first and foremost, however we're fully committed to giving this portion of work to the Moodle community. I'm lucky that my manager shares my vision to contribute this work to the community and he was very accomodating when I threw the 'deadlines' monkey wrench on the table which required a little extra work that wasn't in our Moodle2 upgrade project plan.

The feedback we've had in the past is that it meets most peoples needs (admittedly a small subset of people though), our academics certainly love it and the usage of our 1.9 version shows that.

I have been keeping my thread here: https://moodle.org/mod/forum/discuss.php?d=216784 updated with my progress. It's heavy on the pics, apologies in advance if you're on a low bandwidth connection.

I'd love to hear back from people regarding this, particularly HQ and Core devs, both from the implementation aspect (admittedly hard to gauge until there is code in the open, still working on that!) and from the usability aspect of the UI - which is where I think it needs the most community input to be honest.

In reply to James McLean

Re: Activity Extensions for Moodle - MDL-37505

by Damyon Wiese -

Hi Michael,

I am keen to give you feedback James, but until you manage to post the code there is only so much I can guess at. 

If ssh for github is an issue you should be able to pull/push over https if that is easier. 

When you clone your repo - just use a url like this: 

https://USERNAME@github.com/USERNAME/moodle.git