MDL-18770 mod_assign: Set gradetype to GRADE_TYPE_NONE if feedback not enabled

This commit is contained in:
Rajesh Taneja
2014-01-03 16:30:37 +08:00
parent bbb291b7b7
commit 456d7bc7f3
5 changed files with 90 additions and 5 deletions
+19 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
}
/**
+22
View File
@@ -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'));
}
}
+1 -1
View File
@@ -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;