mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
Merge branch 'wip-MDL-53601-master' of git://github.com/abgreeve/moodle
This commit is contained in:
commit
71c0a5745c
@ -188,11 +188,18 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
|
|||||||
* @return boolean True if the pdf has been modified, else false.
|
* @return boolean True if the pdf has been modified, else false.
|
||||||
*/
|
*/
|
||||||
public function is_feedback_modified(stdClass $grade, stdClass $data) {
|
public function is_feedback_modified(stdClass $grade, stdClass $data) {
|
||||||
global $USER;
|
// We only need to know if the source user's PDF has changed. If so then all
|
||||||
$pagenumbercount = document_services::page_number_for_attempt($this->assignment, $grade->userid, $grade->attemptnumber);
|
// following users will have the same status. If it's only an individual annotation
|
||||||
|
// then only one user will come through this method.
|
||||||
|
// Source user id is only added to the form if there was a pdf.
|
||||||
|
if (!empty($data->editpdf_source_userid)) {
|
||||||
|
$sourceuserid = $data->editpdf_source_userid;
|
||||||
|
// Retrieve the grade information for the source user.
|
||||||
|
$sourcegrade = $this->assignment->get_user_grade($sourceuserid, true, $grade->attemptnumber);
|
||||||
|
$pagenumbercount = document_services::page_number_for_attempt($this->assignment, $sourceuserid, $sourcegrade->attemptnumber);
|
||||||
for ($i = 0; $i < $pagenumbercount; $i++) {
|
for ($i = 0; $i < $pagenumbercount; $i++) {
|
||||||
// Select all annotations.
|
// Select all annotations.
|
||||||
$draftannotations = page_editor::get_annotations($grade->id, $i, true);
|
$draftannotations = page_editor::get_annotations($sourcegrade->id, $i, true);
|
||||||
$nondraftannotations = page_editor::get_annotations($grade->id, $i, false);
|
$nondraftannotations = page_editor::get_annotations($grade->id, $i, false);
|
||||||
// Check to see if the count is the same.
|
// Check to see if the count is the same.
|
||||||
if (count($draftannotations) != count($nondraftannotations)) {
|
if (count($draftannotations) != count($nondraftannotations)) {
|
||||||
@ -216,7 +223,7 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Select all comments.
|
// Select all comments.
|
||||||
$draftcomments = page_editor::get_comments($grade->id, $i, true);
|
$draftcomments = page_editor::get_comments($sourcegrade->id, $i, true);
|
||||||
$nondraftcomments = page_editor::get_comments($grade->id, $i, false);
|
$nondraftcomments = page_editor::get_comments($grade->id, $i, false);
|
||||||
if (count($draftcomments) != count($nondraftcomments)) {
|
if (count($draftcomments) != count($nondraftcomments)) {
|
||||||
return true;
|
return true;
|
||||||
@ -238,6 +245,7 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,8 +4,7 @@ Feature: In a group assignment, teacher can annotate PDF files for all users
|
|||||||
As a teacher
|
As a teacher
|
||||||
I need to use the PDF editor for a group assignment
|
I need to use the PDF editor for a group assignment
|
||||||
|
|
||||||
@javascript
|
Background:
|
||||||
Scenario: Submit a PDF file as a student and annotate the PDF as a teacher
|
|
||||||
Given ghostscript is installed
|
Given ghostscript is installed
|
||||||
And the following "courses" exist:
|
And the following "courses" exist:
|
||||||
| fullname | shortname | category | groupmode |
|
| fullname | shortname | category | groupmode |
|
||||||
@ -56,6 +55,10 @@ Feature: In a group assignment, teacher can annotate PDF files for all users
|
|||||||
And I click on ".stampbutton" "css_element"
|
And I click on ".stampbutton" "css_element"
|
||||||
And I draw on the pdf
|
And I draw on the pdf
|
||||||
And I wait until the page is ready
|
And I wait until the page is ready
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: Submit a PDF file as a student and annotate the PDF as a teacher
|
||||||
|
Given I set the field "applytoall" to "0"
|
||||||
And I press "Save changes"
|
And I press "Save changes"
|
||||||
And I should see "The changes to the grade and feedback were saved"
|
And I should see "The changes to the grade and feedback were saved"
|
||||||
And I press "Ok"
|
And I press "Ok"
|
||||||
@ -73,3 +76,24 @@ Feature: In a group assignment, teacher can annotate PDF files for all users
|
|||||||
And I follow "Course 1"
|
And I follow "Course 1"
|
||||||
And I follow "Test assignment name"
|
And I follow "Test assignment name"
|
||||||
And I should not see "View annotated PDF..."
|
And I should not see "View annotated PDF..."
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: Submit a PDF file as a student and annotate the PDF as a teacher and all students in the group get a copy of the annotated PDF.
|
||||||
|
Given I press "Save changes"
|
||||||
|
And I click on "Ok" "button"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I log out
|
||||||
|
And I log in as "student1"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
When I follow "View annotated PDF..."
|
||||||
|
And I change window size to "large"
|
||||||
|
Then I should see "Annotate PDF"
|
||||||
|
And I change window size to "medium"
|
||||||
|
And I wait until the page is ready
|
||||||
|
And I click on "Close" "button"
|
||||||
|
And I log out
|
||||||
|
And I log in as "student2"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
And I should see "View annotated PDF..."
|
||||||
|
@ -90,7 +90,7 @@ class assign_feedback_file extends assign_feedback_plugin {
|
|||||||
$filekey = null;
|
$filekey = null;
|
||||||
$draftareainfo = null;
|
$draftareainfo = null;
|
||||||
foreach ($data as $key => $value) {
|
foreach ($data as $key => $value) {
|
||||||
if (strpos($key, 'files_') === 0) {
|
if (strpos($key, 'files_') === 0 && strpos($key, '_filemanager')) {
|
||||||
$filekey = $key;
|
$filekey = $key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
89
mod/assign/feedback/file/tests/behat/feedback_file.feature
Normal file
89
mod/assign/feedback/file/tests/behat/feedback_file.feature
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
@mod @mod_assign @assignfeedback @assignfeedback_file @_file_upload
|
||||||
|
Feature: In an assignment, teacher can submit feedback files during grading
|
||||||
|
In order to provide a feedback file
|
||||||
|
As a teacher
|
||||||
|
I need to submit a feedback file.
|
||||||
|
|
||||||
|
Background:
|
||||||
|
Given the following "courses" exist:
|
||||||
|
| fullname | shortname | category | groupmode |
|
||||||
|
| Course 1 | C1 | 0 | 1 |
|
||||||
|
And the following "users" exist:
|
||||||
|
| username | firstname | lastname | email |
|
||||||
|
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||||||
|
| student1 | Student | 1 | student1@example.com |
|
||||||
|
| student2 | Student | 2 | student2@example.com |
|
||||||
|
And the following "course enrolments" exist:
|
||||||
|
| user | course | role |
|
||||||
|
| teacher1 | C1 | editingteacher |
|
||||||
|
| student1 | C1 | student |
|
||||||
|
| student2 | C1 | student |
|
||||||
|
And the following "groups" exist:
|
||||||
|
| name | course | idnumber |
|
||||||
|
| G1 | C1 | G1 |
|
||||||
|
And the following "group members" exist:
|
||||||
|
| user | group |
|
||||||
|
| student1 | G1 |
|
||||||
|
| student2 | G1 |
|
||||||
|
And I log in as "teacher1"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I turn editing mode on
|
||||||
|
And I add a "Assignment" to section "1" and I fill the form with:
|
||||||
|
| Assignment name | Test assignment name |
|
||||||
|
| Description | Submit your PDF file |
|
||||||
|
| Maximum number of uploaded files | 2 |
|
||||||
|
| Students submit in groups | Yes |
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
And I follow "Edit settings"
|
||||||
|
And I follow "Expand all"
|
||||||
|
And I set the field "assignfeedback_file_enabled" to "1"
|
||||||
|
And I press "Save and display"
|
||||||
|
And I log out
|
||||||
|
And I log in as "student1"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
And I press "Add submission"
|
||||||
|
And I upload "mod/assign/feedback/file/tests/fixtures/submission.txt" file to "File submissions" filemanager
|
||||||
|
And I press "Save changes"
|
||||||
|
And I should see "Submitted for grading"
|
||||||
|
And I should see "submission.txt"
|
||||||
|
And I should see "Not graded"
|
||||||
|
And I log out
|
||||||
|
And I log in as "teacher1"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
And I click on "Grade"
|
||||||
|
And I upload "mod/assign/feedback/file/tests/fixtures/feedback.txt" file to "Feedback files" filemanager
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: A teacher can provide a feedback file when grading an assignment.
|
||||||
|
Given I set the field "applytoall" to "0"
|
||||||
|
And I press "Save changes"
|
||||||
|
And I click "Ok" "button"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I log out
|
||||||
|
And I log in as "student1"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
And I should see "feedback.txt"
|
||||||
|
And I log out
|
||||||
|
When I log in as "student2"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
Then I should not see "feedback.txt"
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: A teacher can provide a feedback file when grading an assignment and all students in the group will receive the file.
|
||||||
|
Given I press "Save changes"
|
||||||
|
And I click "Ok" "button"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I log out
|
||||||
|
And I log in as "student1"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
And I should see "feedback.txt"
|
||||||
|
And I log out
|
||||||
|
When I log in as "student2"
|
||||||
|
And I follow "Course 1"
|
||||||
|
And I follow "Test assignment name"
|
||||||
|
Then I should see "feedback.txt"
|
1
mod/assign/feedback/file/tests/fixtures/feedback.txt
vendored
Normal file
1
mod/assign/feedback/file/tests/fixtures/feedback.txt
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
feedback.txt
|
1
mod/assign/feedback/file/tests/fixtures/submission.txt
vendored
Normal file
1
mod/assign/feedback/file/tests/fixtures/submission.txt
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
submission.txt
|
@ -67,6 +67,17 @@ class assign_feedback_offline extends assign_feedback_plugin {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This plugin does not save through the normal interface so this returns false.
|
||||||
|
*
|
||||||
|
* @param stdClass $grade The grade.
|
||||||
|
* @param stdClass $data Form data from the feedback form.
|
||||||
|
* @return boolean - False
|
||||||
|
*/
|
||||||
|
public function is_feedback_modified(stdClass $grade, stdClass $data) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loop through uploaded grades and update the grades for this assignment
|
* Loop through uploaded grades and update the grades for this assignment
|
||||||
*
|
*
|
||||||
|
@ -120,8 +120,8 @@ abstract class assign_feedback_plugin extends assign_plugin {
|
|||||||
* @return boolean - True if the form element has been modified.
|
* @return boolean - True if the form element has been modified.
|
||||||
*/
|
*/
|
||||||
public function is_feedback_modified(stdClass $grade, stdClass $data) {
|
public function is_feedback_modified(stdClass $grade, stdClass $data) {
|
||||||
debugging('This plugin has not overwritten the is_feedback_modified() method. Please add this method to your plugin',
|
debugging('This plugin (' . $this->get_name() . ') has not overwritten the is_feedback_modified() method.
|
||||||
DEBUG_DEVELOPER);
|
Please add this method to your plugin', DEBUG_DEVELOPER);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user