From a0ec66dc6bb24da2525e917d7ea2cecbe2164422 Mon Sep 17 00:00:00 2001 From: Ilya Tregubov Date: Tue, 26 Jan 2021 14:21:33 +0200 Subject: [PATCH] MDL-70676 workshop: Allow empty grades. --- mod/workshop/db/install.xml | 5 +++-- mod/workshop/db/upgrade.php | 16 ++++++++++++++++ .../form/accumulative/assessment_form.php | 12 +++++++----- mod/workshop/form/accumulative/lib.php | 4 +++- mod/workshop/version.php | 2 +- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/mod/workshop/db/install.xml b/mod/workshop/db/install.xml index d3ffcffcb7f..1af0535e172 100644 --- a/mod/workshop/db/install.xml +++ b/mod/workshop/db/install.xml @@ -1,5 +1,5 @@ - @@ -109,7 +109,7 @@ - + @@ -136,3 +136,4 @@ + diff --git a/mod/workshop/db/upgrade.php b/mod/workshop/db/upgrade.php index cf73e05b8fd..4842eaa1d22 100644 --- a/mod/workshop/db/upgrade.php +++ b/mod/workshop/db/upgrade.php @@ -95,5 +95,21 @@ function xmldb_workshop_upgrade($oldversion) { // Automatically generated Moodle v3.9.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2020061501) { + + $table = new xmldb_table('workshop_grades'); + $field = new xmldb_field('grade'); + + if ($dbman->field_exists($table, $field) && ($field->getNotNull() == XMLDB_NOTNULL)) { + $field = new xmldb_field('grade', XMLDB_TYPE_NUMBER, '10, 5', null, false, false, + null, null); + $dbman->change_field_notnull($table, $field); + } + + // Main savepoint reached. + upgrade_mod_savepoint(true, 2020061501, 'workshop'); + + } + return true; } diff --git a/mod/workshop/form/accumulative/assessment_form.php b/mod/workshop/form/accumulative/assessment_form.php index 95f6132f6d3..12ae8b4890e 100644 --- a/mod/workshop/form/accumulative/assessment_form.php +++ b/mod/workshop/form/accumulative/assessment_form.php @@ -76,11 +76,13 @@ class workshop_accumulative_assessment_form extends workshop_assessment_form { // grade for this aspect $label = get_string('dimensiongradefor', 'workshopform_accumulative', $dimtitle); - $options = make_grades_menu($fields->{'grade__idx_' . $i}); - $options = array('-1' => get_string('choosedots')) + $options; - $mform->addElement('select', 'grade__idx_' . $i, $label, $options); - $mform->addRule(array('grade__idx_' . $i, 'minusone') , get_string('mustchoosegrade', 'workshopform_accumulative'), 'compare', 'gt'); - + if ($fields->{'grade__idx_' . $i}) { + $options = make_grades_menu($fields->{'grade__idx_' . $i}); + $options = array('-1' => get_string('choosedots')) + $options; + $mform->addElement('select', 'grade__idx_' . $i, $label, $options); + $mform->addRule(array('grade__idx_' . $i, 'minusone'), + get_string('mustchoosegrade', 'workshopform_accumulative'), 'compare', 'gt'); + } // comment $label = get_string('dimensioncommentfor', 'workshopform_accumulative', $dimtitle); //$mform->addElement('editor', 'peercomment__idx_' . $i, $label, null, array('maxfiles' => 0)); diff --git a/mod/workshop/form/accumulative/lib.php b/mod/workshop/form/accumulative/lib.php index 87a5f99c30c..bac0ec60250 100644 --- a/mod/workshop/form/accumulative/lib.php +++ b/mod/workshop/form/accumulative/lib.php @@ -269,7 +269,9 @@ class workshop_accumulative_strategy implements workshop_strategy { $grade->assessmentid = $assessment->id; $grade->strategy = 'accumulative'; $grade->dimensionid = $data->{'dimensionid__idx_' . $i}; - $grade->grade = $data->{'grade__idx_' . $i}; + if (isset($data->{'grade__idx_' . $i})) { + $grade->grade = $data->{'grade__idx_' . $i}; + } $grade->peercomment = $data->{'peercomment__idx_' . $i}; $grade->peercommentformat = FORMAT_MOODLE; if (empty($grade->id)) { diff --git a/mod/workshop/version.php b/mod/workshop/version.php index f861a261672..275374b09dc 100644 --- a/mod/workshop/version.php +++ b/mod/workshop/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2020061500; // The current module version (YYYYMMDDXX) +$plugin->version = 2020061501; // The current module version (YYYYMMDDXX). $plugin->requires = 2020060900; // Requires this Moodle version. $plugin->component = 'mod_workshop';