Moodle Assignment Feedback Packager

Moodle allows assignments and group assignments to be graded offline. This helps to assign a graded group work to each of its members, but also requires a special naming and formatting of files and csv content. To help, this small web app, helps to generate the offline grading zip and attribute a group grade to all its members. It only requires the initial offline grading worksheet and optionally a feedback file for each group.

Getting the feedback file

  1. The first step it to enable Feedback files and Offline grading worksheet in Moodle assignments ‘settings under Feedback Types.
  2. It is then possible to use Download grading worksheet under View all submissions of the assignment.
  3. This file can then be uploaded to the webapp: https://bfritscher.github.io/moodle-assignment-feedback-packager/

Using the webapp

Screen after uploading a feedback file

groupscreen

  • The first tab Groups helps to add feedback and grades to groups which are then copied to each member shown in the participants tab.
  • On the bottom it is possible to import grades and comments based on the group key.
  • The Feedback files tab allows to upload files if the filename has the name of a group it will be added to the feedback of each group member of this group.
  • Finally, the updated csv file and packaged zip can be downloaded and uploaded to moodle’s assignment.

FAQ

Are my files send to a server?
No all is done locally in your browser.
Limitations?
Browser’s max size of files is arround 200MB

Source

Github

Firebase SDK for Cloud Functions Migration

In addition to the provided guide by Google.

Here is the changes I had to make in my code for futur reference:

OLD <1.0 NEW< >=1.0
event.params.uid context.params.uid
event.data.val() change.after.val()
event.auth.variable.name context.auth.token.name
event.data.ref.remove() change.ref.remove()
.onWrite(event => { .onWrite((change, context) => {
.onDelete((event) => { .onDelete((snap, context) => {
event.auth.variable.email context.auth.token.email
const object = event.data; object
storage.object().onChange(event => { storage.object().onFinalize((object, context) => {

Using Cheap China Microscope with Micro-Manager on Windows

In order for Micro-Manager to recognize my cheap china microscope, I needed to patch the provided OpenCVGrabber driver.

The original version of the driver always selected the first USB camera available, and did not pass validation of the configuration for the webcam driver from the microscope.

As Micro-Manager is Open Source, I looked into making a patch. The new version which supports camera selection from a dropdown by name. Is available for windows 10 and Version 2.0 beta of Micro-Manger:

  1. Install Version 2.0 beta
  2. Download the compiled mmgr_dal_OpenCVgrabber.dll
  3. Replace it in the folder of Micro-Manager x64 c:\Program Files\Micro-Manager-2.0beta

Status for integration into the application can be followed on the pull request.

Moodle 2 export participants with group information

A small script to export moodle 2 participants with their group information.

Drag the bookmarklet to your bookmarkbar: Moodle Group Export
You can then click it when you are on the moodle 2 > Users > Enrolled users page to get a csv file of the displayed table.

Limitation

  • Support for a maximum of 1 group by participant
  • Pop-up has to be enabled

Source Code

var script = document.createElement('script');
document.head.appendChild(script);
script.onload = function(){
var separator = ',';
var pattern = /id=(.*)&/;
var csv = [['userid', 'name','idnumber','email','group'].join(separator)];
$('table.userenrolment').find('tr').each(function(index, tr){
    var r = [];
    var $tr = $(tr);
    var a = $tr.find('a');
    var userid = pattern.exec(a[0])[1];
    r.push(userid);
    r.push($tr.find('.subfield_firstname').text());
    r.push($tr.find('.subfield_firstname').text());
    r.push($tr.find('.subfield_idnumber').text());
    r.push($tr.find('.subfield_email').text());
    r.push($tr.find('.group').text());
    csv.push(r.join(separator));
});
csv = csv.join("\r\n");
window.open("data:application/octet-stream;charset=utf-8," + encodeURIComponent(csv));
};
script.src = 'http://code.jquery.com/jquery-2.1.4.min.js';

Iceberg and IIS7 (Windows 2008)

There is a new CRM/ERP/BUSINESS web app in town and it’s free (as in beer, for 5 users): Iceberg.

There are two versions a standalone and a server install to be deployed on (MS Sql Server 2005 express & ASP.NET (IIS 5 or 6), but since I have IIS7 and windows 2008 there was some pluming needed before everything worked.

Here is what I configured in IIS 7 to make it work:

  • Set the Managed pipeline mode property of the application pool that is running iceberg to Classic
  • Under Handler Mappings add a new Script Map

    Request path: *.asmx
    Executable: %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

  • For the SQL connection I uncommented the string provided in the web.config file but check that the SQL server is running in SQL mixed authentication mode.
  • If there are still problems use the Event Viewer to look at the detailed error log.