MDL-82857 mod_assign: Temporary assignment grading options form

Creates a temporary assignment grading options form class as a
replacement for mod_assign_grading_options_form, which will be
deprecated but must remain unchanged to avoid introducing any
unwanted behaviour in case an external code is currently using it.
This temporary form is intended for exclusive use on the assignment
submissions page during the gradual migration of form elements. It
will be removed from the core once the migration process is complete.
This commit is contained in:
Mihail Geshoski 2024-08-21 18:03:48 +08:00
parent e0a9cf2288
commit 975712437f
2 changed files with 116 additions and 2 deletions

View File

@ -0,0 +1,114 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This file contains the temporary form used on the submissions page to apply assignment grading options.
*
* @package mod_assign
* @copyright 2024 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_assign\form;
defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.');
require_once($CFG->libdir.'/formslib.php');
require_once($CFG->dirroot . '/mod/assign/locallib.php');
/**
* Assignment grading options temporary form.
*
* This form class is a copy of mod_assign_grading_options_form. The only purpose of this form is to be temporarily used
* on the submission page until the gradual removal of the current form elements is completed. After that, this form
* class will be removed.
*
* @package mod_assign
* @copyright 2024 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class grading_options_temp_form extends \moodleform {
/**
* Define this form - called from the parent constructor.
*/
public function definition() {
$mform = $this->_form;
$instance = $this->_customdata;
$mform->disable_form_change_checker();
$mform->addElement('header', 'general', get_string('gradingoptions', 'assign'));
// Visible elements.
$options = array(10 => '10', 20 => '20', 50 => '50', 100 => '100', -1 => get_string('all'));
$maxperpage = get_config('assign', 'maxperpage');
if (isset($maxperpage) && $maxperpage != -1) {
unset($options[-1]);
foreach ($options as $val) {
if ($val > $maxperpage) {
unset($options[$val]);
}
}
}
$mform->addElement('select', 'perpage', get_string('assignmentsperpage', 'assign'), $options);
$options = array('' => get_string('filternone', 'assign'),
ASSIGN_FILTER_NOT_SUBMITTED => get_string('filternotsubmitted', 'assign'),
ASSIGN_FILTER_DRAFT => get_string('filterdraft', 'assign'),
ASSIGN_FILTER_SUBMITTED => get_string('filtersubmitted', 'assign'),
ASSIGN_FILTER_REQUIRE_GRADING => get_string('filterrequiregrading', 'assign'),
ASSIGN_FILTER_GRANTED_EXTENSION => get_string('filtergrantedextension', 'assign'));
if ($instance['submissionsenabled']) {
$mform->addElement('select', 'filter', get_string('filter', 'assign'), $options);
}
if (!empty($instance['markingallocationopt'])) {
$markingfilter = get_string('markerfilter', 'assign');
$mform->addElement('select', 'markerfilter', $markingfilter, $instance['markingallocationopt']);
}
// Quickgrading.
if ($instance['showquickgrading']) {
$mform->addElement('checkbox', 'quickgrading', get_string('quickgrading', 'assign'));
$mform->addHelpButton('quickgrading', 'quickgrading', 'assign');
$mform->setDefault('quickgrading', $instance['quickgrading']);
}
// Show active/suspended user option.
if ($instance['showonlyactiveenrolopt']) {
$mform->addElement('checkbox', 'showonlyactiveenrol', get_string('showonlyactiveenrol', 'grades'));
$mform->addHelpButton('showonlyactiveenrol', 'showonlyactiveenrol', 'grades');
$mform->setDefault('showonlyactiveenrol', $instance['showonlyactiveenrol']);
}
// Place student downloads in seperate folders.
if ($instance['submissionsenabled']) {
$mform->addElement('checkbox', 'downloadasfolders', get_string('downloadasfolders', 'assign'));
$mform->addHelpButton('downloadasfolders', 'downloadasfolders', 'assign');
$mform->setDefault('downloadasfolders', $instance['downloadasfolders']);
}
// Hidden params.
$mform->addElement('hidden', 'contextid', $instance['contextid']);
$mform->setType('contextid', PARAM_INT);
$mform->addElement('hidden', 'id', $instance['cm']);
$mform->setType('id', PARAM_INT);
$mform->addElement('hidden', 'userid', $instance['userid']);
$mform->setType('userid', PARAM_INT);
$mform->addElement('hidden', 'action', 'saveoptions');
$mform->setType('action', PARAM_ALPHA);
// Buttons.
$this->add_action_buttons(false, get_string('updatetable', 'assign'));
}
}

View File

@ -4542,7 +4542,7 @@ class assign {
'downloadasfolders' => $downloadasfolders);
$classoptions = array('class'=>'gradingoptionsform');
$gradingoptionsform = new mod_assign_grading_options_form(null,
$gradingoptionsform = new \mod_assign\form\grading_options_temp_form(null,
$gradingoptionsformparams,
'post',
'',
@ -7416,7 +7416,7 @@ class assign {
'showonlyactiveenrolopt'=>$showonlyactiveenrolopt,
'showonlyactiveenrol' => $this->show_only_active_users(),
'downloadasfolders' => get_user_preferences('assign_downloadasfolders', 1));
$mform = new mod_assign_grading_options_form(null, $gradingoptionsparams);
$mform = new mod_assign\form\grading_options_temp_form(null, $gradingoptionsparams);
if ($formdata = $mform->get_data()) {
set_user_preference('assign_perpage', $formdata->perpage);
if (isset($formdata->filter)) {