mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 17:02:03 +02:00
MDL-44598 assign: improve 'grant extension' form to show user names
Presents the first several students like the 'Set marking workflow state' facility does, and processes the submitted ids through the grading batch intermediary form. (For reference: MDL-42531)
This commit is contained in:
parent
74fad2ce3d
commit
26670f5ee9
@ -44,19 +44,25 @@ class mod_assign_extension_form extends moodleform {
|
||||
*/
|
||||
public function definition() {
|
||||
$mform = $this->_form;
|
||||
$params = $this->_customdata;
|
||||
|
||||
list($coursemoduleid, $userid, $batchusers, $instance, $data) = $this->_customdata;
|
||||
// Instance variable is used by the form validation function.
|
||||
$instance = $params['instance'];
|
||||
$this->instance = $instance;
|
||||
|
||||
if ($batchusers) {
|
||||
$listusersmessage = get_string('grantextensionforusers', 'assign', count(explode(',', $batchusers)));
|
||||
$mform->addElement('static', 'applytoselectedusers', '', $listusersmessage);
|
||||
if (!empty($params['userscount'])) {
|
||||
$listusersmessage = get_string('grantextensionforusers', 'assign', $params['userscount']);
|
||||
$mform->addElement('header', 'general', $listusersmessage);
|
||||
$mform->addElement('static', 'userslist', get_string('selectedusers', 'assign'), $params['usershtml']);
|
||||
} else {
|
||||
$mform->addElement('static', 'userslist', '', $params['usershtml']);
|
||||
}
|
||||
if ($instance->allowsubmissionsfromdate) {
|
||||
$mform->addElement('static', 'allowsubmissionsfromdate', get_string('allowsubmissionsfromdate', 'assign'),
|
||||
userdate($instance->allowsubmissionsfromdate));
|
||||
}
|
||||
|
||||
$finaldate = 0;
|
||||
if ($instance->duedate) {
|
||||
$mform->addElement('static', 'duedate', get_string('duedate', 'assign'), userdate($instance->duedate));
|
||||
$finaldate = $instance->duedate;
|
||||
@ -68,19 +74,17 @@ class mod_assign_extension_form extends moodleform {
|
||||
$mform->addElement('date_time_selector', 'extensionduedate',
|
||||
get_string('extensionduedate', 'assign'), array('optional'=>true));
|
||||
$mform->setDefault('extensionduedate', $finaldate);
|
||||
$mform->addElement('hidden', 'id', $coursemoduleid);
|
||||
|
||||
$mform->addElement('hidden', 'id');
|
||||
$mform->setType('id', PARAM_INT);
|
||||
$mform->addElement('hidden', 'userid', $userid);
|
||||
$mform->addElement('hidden', 'userid');
|
||||
$mform->setType('userid', PARAM_INT);
|
||||
$mform->addElement('hidden', 'selectedusers', $batchusers);
|
||||
$mform->addElement('hidden', 'selectedusers');
|
||||
$mform->setType('selectedusers', PARAM_SEQUENCE);
|
||||
$mform->addElement('hidden', 'action', 'saveextension');
|
||||
$mform->setType('action', PARAM_ALPHA);
|
||||
$this->add_action_buttons(true, get_string('savechanges', 'assign'));
|
||||
|
||||
if ($data) {
|
||||
$this->set_data($data);
|
||||
}
|
||||
$this->add_action_buttons(true, get_string('savechanges', 'assign'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2001,39 +2001,76 @@ class assign {
|
||||
require_once($CFG->dirroot . '/mod/assign/extensionform.php');
|
||||
|
||||
$o = '';
|
||||
$batchusers = optional_param('selectedusers', '', PARAM_SEQUENCE);
|
||||
$data = new stdClass();
|
||||
$data->extensionduedate = null;
|
||||
$userid = 0;
|
||||
if (!$batchusers) {
|
||||
$userid = required_param('userid', PARAM_INT);
|
||||
|
||||
$data = new stdClass();
|
||||
$data->id = $this->get_course_module()->id;
|
||||
|
||||
$formparams = array(
|
||||
'instance' => $this->get_instance()
|
||||
);
|
||||
|
||||
$extrauserfields = get_extra_user_fields($this->get_context());
|
||||
|
||||
if ($mform) {
|
||||
$submitteddata = $mform->get_data();
|
||||
$users = $submitteddata->selectedusers;
|
||||
$userlist = explode(',', $users);
|
||||
|
||||
$data->selectedusers = $users;
|
||||
$data->userid = 0;
|
||||
|
||||
$usershtml = '';
|
||||
$usercount = 0;
|
||||
foreach ($userlist as $userid) {
|
||||
if ($usercount >= 5) {
|
||||
$usershtml .= get_string('moreusers', 'assign', count($userlist) - 5);
|
||||
break;
|
||||
}
|
||||
$user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST);
|
||||
|
||||
$usershtml .= $this->get_renderer()->render(new assign_user_summary($user,
|
||||
$this->get_course()->id,
|
||||
has_capability('moodle/site:viewfullnames',
|
||||
$this->get_course_context()),
|
||||
$this->is_blind_marking(),
|
||||
$this->get_uniqueid_for_user($user->id),
|
||||
$extrauserfields,
|
||||
!$this->is_active_user($userid)));
|
||||
$usercount += 1;
|
||||
}
|
||||
|
||||
$formparams['userscount'] = count($userlist);
|
||||
$formparams['usershtml'] = $usershtml;
|
||||
|
||||
} else {
|
||||
$userid = required_param('userid', PARAM_INT);
|
||||
$user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
|
||||
$flags = $this->get_user_flags($userid, false);
|
||||
|
||||
$user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
|
||||
|
||||
$data->userid = $user->id;
|
||||
if ($flags) {
|
||||
$data->extensionduedate = $flags->extensionduedate;
|
||||
}
|
||||
$data->userid = $userid;
|
||||
} else {
|
||||
$data->batchusers = $batchusers;
|
||||
|
||||
$usershtml = $this->get_renderer()->render(new assign_user_summary($user,
|
||||
$this->get_course()->id,
|
||||
has_capability('moodle/site:viewfullnames',
|
||||
$this->get_course_context()),
|
||||
$this->is_blind_marking(),
|
||||
$this->get_uniqueid_for_user($user->id),
|
||||
$extrauserfields,
|
||||
!$this->is_active_user($userid)));
|
||||
$formparams['usershtml'] = $usershtml;
|
||||
}
|
||||
|
||||
$mform = new mod_assign_extension_form(null, $formparams);
|
||||
$mform->set_data($data);
|
||||
$header = new assign_header($this->get_instance(),
|
||||
$this->get_context(),
|
||||
$this->show_intro(),
|
||||
$this->get_course_module()->id,
|
||||
get_string('grantextension', 'assign'));
|
||||
$o .= $this->get_renderer()->render($header);
|
||||
|
||||
if (!$mform) {
|
||||
$formparams = array($this->get_course_module()->id,
|
||||
$userid,
|
||||
$batchusers,
|
||||
$this->get_instance(),
|
||||
$data);
|
||||
$mform = new mod_assign_extension_form(null, $formparams);
|
||||
}
|
||||
$o .= $this->get_renderer()->render(new assign_form('extensionform', $mform));
|
||||
$o .= $this->view_footer();
|
||||
return $o;
|
||||
@ -3672,7 +3709,6 @@ class assign {
|
||||
|
||||
if ($data->operation == 'grantextension') {
|
||||
// Reset the form so the grant extension page will create the extension form.
|
||||
$mform = null;
|
||||
return 'grantextension';
|
||||
} else if ($data->operation == 'setmarkingworkflowstate') {
|
||||
return 'viewbatchsetmarkingworkflowstate';
|
||||
@ -5244,34 +5280,34 @@ class assign {
|
||||
require_once($CFG->dirroot . '/mod/assign/extensionform.php');
|
||||
require_sesskey();
|
||||
|
||||
$batchusers = optional_param('selectedusers', '', PARAM_SEQUENCE);
|
||||
$userid = 0;
|
||||
if (!$batchusers) {
|
||||
$userid = required_param('userid', PARAM_INT);
|
||||
$user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
|
||||
}
|
||||
$mform = new mod_assign_extension_form(null, array($this->get_course_module()->id,
|
||||
$userid,
|
||||
$batchusers,
|
||||
$this->get_instance(),
|
||||
null));
|
||||
$formparams = array(
|
||||
'instance' => $this->get_instance(),
|
||||
'userscount' => 0,
|
||||
'usershtml' => '',
|
||||
);
|
||||
|
||||
$mform = new mod_assign_extension_form(null, $formparams);
|
||||
|
||||
if ($mform->is_cancelled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($formdata = $mform->get_data()) {
|
||||
if ($batchusers) {
|
||||
$users = explode(',', $batchusers);
|
||||
if (!empty($formdata->selectedusers)) {
|
||||
$users = explode(',', $formdata->selectedusers);
|
||||
$result = true;
|
||||
foreach ($users as $userid) {
|
||||
$result = $this->save_user_extension($userid, $formdata->extensionduedate) && $result;
|
||||
$user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST);
|
||||
$result = $this->save_user_extension($user->id, $formdata->extensionduedate) && $result;
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
return $this->save_user_extension($userid, $formdata->extensionduedate);
|
||||
}
|
||||
if (!empty($formdata->userid)) {
|
||||
$user = $DB->get_record('user', array('id' => $formdata->userid), '*', MUST_EXIST);
|
||||
return $this->save_user_extension($user->id, $formdata->extensionduedate);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -13,11 +13,19 @@ Feature: Grant an extension to an offline student
|
||||
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
| student2 | Student | 2 | student2@example.com |
|
||||
| student3 | Student | 3 | student3@example.com |
|
||||
| student4 | Student | 4 | student4@example.com |
|
||||
| student5 | Student | 5 | student5@example.com |
|
||||
| student6 | Student | 6 | student6@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
| student2 | C1 | student |
|
||||
| student3 | C1 | student |
|
||||
| student4 | C1 | student |
|
||||
| student5 | C1 | student |
|
||||
| student6 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Granting an extension to an offline assignment
|
||||
@ -30,6 +38,7 @@ Feature: Grant an extension to an offline student
|
||||
When I follow "View/grade all submissions"
|
||||
And I click on "Edit" "link" in the "Student 1" "table_row"
|
||||
And I follow "Grant extension"
|
||||
And I should see "Student 1 (student1@example.com)"
|
||||
And I set the field "Enable" to "1"
|
||||
And I press "Save changes"
|
||||
Then I should see "Extension granted until:" in the "Student 1" "table_row"
|
||||
@ -51,10 +60,20 @@ Feature: Grant an extension to an offline student
|
||||
And I set the field "selectall" to "1"
|
||||
And I set the field "operation" to "Grant extension"
|
||||
And I click on "Go" "button" confirming the dialogue
|
||||
And I should see "Student 1 (student1@example.com)"
|
||||
And I should see "Student 2 (student2@example.com)"
|
||||
And I should see "Student 3 (student3@example.com)"
|
||||
And I should see "Student 4 (student4@example.com)"
|
||||
And I should see "Student 5 (student5@example.com)"
|
||||
And I should see "1 more..."
|
||||
And I set the field "Enable" to "1"
|
||||
And I press "Save changes"
|
||||
Then I should see "Extension granted until:" in the "Student 1" "table_row"
|
||||
And I should see "Extension granted until:" in the "Student 2" "table_row"
|
||||
And I should see "Extension granted until:" in the "Student 3" "table_row"
|
||||
And I should see "Extension granted until:" in the "Student 4" "table_row"
|
||||
And I should see "Extension granted until:" in the "Student 5" "table_row"
|
||||
And I should see "Extension granted until:" in the "Student 6" "table_row"
|
||||
And I log out
|
||||
And I log in as "student1"
|
||||
And I follow "Course 1"
|
||||
|
Loading…
x
Reference in New Issue
Block a user