MDL-18770 mod_assign: Set gradetype to GRADE_TYPE_NONE if feedback not enabled
This commit is contained in:
@@ -99,9 +99,14 @@ class core_grade_edittreelib_testcase extends advanced_testcase {
|
||||
$this->assertEquals($scale->id, $gradeitem->scaleid);
|
||||
$this->assertEquals($scalestring, $cell->text, "Grade text matches scale");
|
||||
|
||||
// Now change it to no grade.
|
||||
// Now change it to no grade with gradebook feedback enabled.
|
||||
$adminconfig = $assign->get_admin_config();
|
||||
$gradebookplugin = $adminconfig->feedback_plugin_for_gradebook;
|
||||
$gradebookplugin .= '_enabled';
|
||||
|
||||
$instance = $assign->get_instance();
|
||||
$instance->grade = 0;
|
||||
$instance->$gradebookplugin = 1;
|
||||
$instance->instance = $instance->id;
|
||||
$assign->update_instance($instance);
|
||||
|
||||
@@ -111,6 +116,19 @@ class core_grade_edittreelib_testcase extends advanced_testcase {
|
||||
$this->assertEquals(GRADE_TYPE_TEXT, $gradeitem->gradetype);
|
||||
$this->assertEquals(null, $gradeitem->scaleid);
|
||||
$this->assertEquals(' - ', $cell->text, 'Grade text matches empty value of " - "');
|
||||
|
||||
// Now change it to no grade with gradebook feedback disabled.
|
||||
$instance = $assign->get_instance();
|
||||
$instance->grade = 0;
|
||||
$instance->$gradebookplugin = 0;
|
||||
$instance->instance = $instance->id;
|
||||
$assign->update_instance($instance);
|
||||
|
||||
$gradeitem = grade_item::fetch($gradeitemparams);
|
||||
$cell = $column->get_item_cell($gradeitem, array());
|
||||
|
||||
$this->assertEquals(GRADE_TYPE_NONE, $gradeitem->gradetype);
|
||||
$this->assertEquals(null, $gradeitem->scaleid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+18
-2
@@ -912,6 +912,19 @@ function assign_grade_item_update($assign, $grades=null) {
|
||||
|
||||
$params = array('itemname'=>$assign->name, 'idnumber'=>$assign->cmidnumber);
|
||||
|
||||
// Check if feedback plugin for gradebook is enabled, if yes then
|
||||
// gradetype = GRADE_TYPE_TEXT else GRADE_TYPE_NONE.
|
||||
$gradefeedbackenabled = false;
|
||||
|
||||
if (isset($assign->gradefeedbackenabled)) {
|
||||
$gradefeedbackenabled = $assign->gradefeedbackenabled;
|
||||
} else if ($assign->grade == 0) { // Grade feedback is needed only when grade == 0.
|
||||
$mod = get_coursemodule_from_instance('assign', $assign->id, $assign->courseid);
|
||||
$cm = context_module::instance($mod->id);
|
||||
$assignment = new assign($cm, null, null);
|
||||
$gradefeedbackenabled = $assignment->is_gradebook_feedback_enabled();
|
||||
}
|
||||
|
||||
if ($assign->grade > 0) {
|
||||
$params['gradetype'] = GRADE_TYPE_VALUE;
|
||||
$params['grademax'] = $assign->grade;
|
||||
@@ -921,9 +934,12 @@ function assign_grade_item_update($assign, $grades=null) {
|
||||
$params['gradetype'] = GRADE_TYPE_SCALE;
|
||||
$params['scaleid'] = -$assign->grade;
|
||||
|
||||
} else {
|
||||
// Allow text comments only.
|
||||
} else if ($gradefeedbackenabled) {
|
||||
// $assign->grade == 0 and feedback enabled.
|
||||
$params['gradetype'] = GRADE_TYPE_TEXT;
|
||||
} else {
|
||||
// $assign->grade == 0 and no feedback enabled.
|
||||
$params['gradetype'] = GRADE_TYPE_NONE;
|
||||
}
|
||||
|
||||
if ($grades === 'reset') {
|
||||
|
||||
+30
-1
@@ -788,6 +788,10 @@ class assign {
|
||||
require_once($CFG->dirroot.'/mod/assign/lib.php');
|
||||
$assign = clone $this->get_instance();
|
||||
$assign->cmidnumber = $coursemoduleid;
|
||||
|
||||
// Set assign gradebook feedback plugin status (enabled and visible).
|
||||
$assign->gradefeedbackenabled = $this->is_gradebook_feedback_enabled();
|
||||
|
||||
$param = null;
|
||||
if ($reset) {
|
||||
$param = 'reset';
|
||||
@@ -3999,7 +4003,8 @@ class assign {
|
||||
}
|
||||
$assign = clone $this->get_instance();
|
||||
$assign->cmidnumber = $this->get_course_module()->idnumber;
|
||||
|
||||
// Set assign gradebook feedback plugin status (enabled and visible).
|
||||
$assign->gradefeedbackenabled = $this->is_gradebook_feedback_enabled();
|
||||
return assign_grade_item_update($assign, $gradebookgrade);
|
||||
}
|
||||
|
||||
@@ -5958,6 +5963,8 @@ class assign {
|
||||
// Update Gradebook.
|
||||
$assign = clone $this->get_instance();
|
||||
$assign->cmidnumber = $this->get_course_module()->idnumber;
|
||||
// Set assign gradebook feedback plugin status.
|
||||
$assign->gradefeedbackenabled = $this->is_gradebook_feedback_enabled();
|
||||
assign_update_grades($assign, $userid);
|
||||
}
|
||||
|
||||
@@ -6779,6 +6786,28 @@ class assign {
|
||||
}
|
||||
return !in_array($userid, $this->susers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if gradebook feedback plugin is enabled
|
||||
*
|
||||
* @return bool true if gradebook feedback plugin is enabled and visible else false.
|
||||
*/
|
||||
public function is_gradebook_feedback_enabled() {
|
||||
// Get default grade book feedback plugin.
|
||||
$adminconfig = $this->get_admin_config();
|
||||
$gradebookplugin = $adminconfig->feedback_plugin_for_gradebook;
|
||||
$gradebookplugin = str_replace('assignfeedback_', '', $gradebookplugin);
|
||||
|
||||
// Check if default gradebook feedback is visible and enabled.
|
||||
$gradebookfeedbackplugin = $this->get_feedback_plugin_by_type($gradebookplugin);
|
||||
|
||||
if ($gradebookfeedbackplugin->is_visible() && $gradebookfeedbackplugin->is_enabled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Gradebook feedback plugin is either not visible/enabled.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1582,5 +1582,27 @@ Anchor link 2:<a title=\"bananas\" href=\"../logo-240x60.gif\">Link text</a>
|
||||
$plugin = $assign->get_feedback_plugin_by_type('comments');
|
||||
$this->assertEquals(1, $plugin->is_enabled('enabled'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Testing if gradebook feedback plugin is enabled.
|
||||
*/
|
||||
public function test_is_gradebook_feedback_enabled() {
|
||||
$adminconfig = get_config('assign');
|
||||
$gradebookplugin = $adminconfig->feedback_plugin_for_gradebook;
|
||||
|
||||
// Create assignment with gradebook feedback enabled and grade = 0.
|
||||
$assign = $this->create_instance(array($gradebookplugin . '_enabled' => 1, 'grades' => 0));
|
||||
|
||||
// Get gradebook feedback plugin.
|
||||
$gradebookplugintype = str_replace('assignfeedback_', '', $gradebookplugin);
|
||||
$plugin = $assign->get_feedback_plugin_by_type($gradebookplugintype);
|
||||
$this->assertEquals(1, $plugin->is_enabled('enabled'));
|
||||
$this->assertEquals(1, $assign->is_gradebook_feedback_enabled());
|
||||
|
||||
// Create assignment with gradebook feedback disabled and grade = 0.
|
||||
$assign = $this->create_instance(array($gradebookplugin . '_enabled' => 0, 'grades' => 0));
|
||||
$plugin = $assign->get_feedback_plugin_by_type($gradebookplugintype);
|
||||
$this->assertEquals(0, $plugin->is_enabled('enabled'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$module->component = 'mod_assign'; // Full name of the plugin (used for diagnostics).
|
||||
$module->version = 2013110501; // The current module version (Date: YYYYMMDDXX).
|
||||
$module->version = 2013110502; // The current module version (Date: YYYYMMDDXX).
|
||||
$module->requires = 2013110500; // Requires this Moodle version.
|
||||
$module->cron = 60;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user