mirror of
https://github.com/moodle/moodle.git
synced 2025-04-20 07:56:06 +02:00
MDL-45582: Apply grades and feedback to entire group does not work with Annotate PDF feature
This commit is contained in:
parent
337075d17b
commit
028c9d20b9
@ -308,4 +308,36 @@ class page_editor {
|
||||
|
||||
return $DB->delete_records('assignfeedback_editpdf_annot', array('id'=>$annotationid));
|
||||
}
|
||||
|
||||
/**
|
||||
* This function copies annotations and comments from the source user
|
||||
* to the current group member being processed when using applytoall.
|
||||
* @param int|\assign $assignment
|
||||
* @param stdClass $grade
|
||||
* @param int $sourceuserid
|
||||
* @return bool
|
||||
*/
|
||||
public static function copy_drafts_from_to($assignment, $grade, $sourceuserid) {
|
||||
global $DB;
|
||||
|
||||
// Delete any existing annotations and comments from current user.
|
||||
$DB->delete_records('assignfeedback_editpdf_annot', array('gradeid' => $grade->id));
|
||||
$DB->delete_records('assignfeedback_editpdf_cmnt', array('gradeid' => $grade->id));
|
||||
// Get gradeid, annotations and comments from sourceuserid.
|
||||
$sourceusergrade = $assignment->get_user_grade($sourceuserid, true, $grade->attemptnumber);
|
||||
$annotations = $DB->get_records('assignfeedback_editpdf_annot', array('gradeid' => $sourceusergrade->id, 'draft' => 1));
|
||||
$comments = $DB->get_records('assignfeedback_editpdf_cmnt', array('gradeid' => $sourceusergrade->id, 'draft' => 1));
|
||||
|
||||
// Add annotations and comments to current user to generate feedback file.
|
||||
foreach ($annotations as $annotation) {
|
||||
$annotation->gradeid = $grade->id;
|
||||
$DB->insert_record('assignfeedback_editpdf_annot', $annotation);
|
||||
}
|
||||
foreach ($comments as $comment) {
|
||||
$comment->gradeid = $grade->id;
|
||||
$DB->insert_record('assignfeedback_editpdf_cmnt', $comment);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -178,6 +178,9 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
|
||||
$html = $renderer->render($widget);
|
||||
$mform->addElement('static', 'editpdf', get_string('editpdf', 'assignfeedback_editpdf'), $html);
|
||||
$mform->addHelpButton('editpdf', 'editpdf', 'assignfeedback_editpdf');
|
||||
$mform->addElement('hidden', 'editpdf_source_userid', $userid);
|
||||
$mform->setType('editpdf_source_userid', PARAM_INT);
|
||||
$mform->setConstant('editpdf_source_userid', $userid);
|
||||
}
|
||||
}
|
||||
|
||||
@ -189,6 +192,11 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
|
||||
* @return bool
|
||||
*/
|
||||
public function save(stdClass $grade, stdClass $data) {
|
||||
$sourceuserid = $data->editpdf_source_userid;
|
||||
// Copy drafts annotations and comments if current user is different to sourceuserid.
|
||||
if ($sourceuserid != $grade->userid) {
|
||||
page_editor::copy_drafts_from_to($this->assignment, $grade, $sourceuserid);
|
||||
}
|
||||
if (page_editor::has_annotations_or_comments($grade->id, true)) {
|
||||
document_services::generate_feedback_document($this->assignment, $grade->userid, $grade->attemptnumber);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user