AutorÃa | Ultima modificación | Ver Log |
<?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/>.
/**
* Site configuration settings for the gradepenalty_duedate plugin
*
* @package gradepenalty_duedate
* @copyright 2024 Catalyst IT Australia Pty Ltd
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use core\output\notification;
use core\url;
use gradepenalty_duedate\output\edit_penalty_rule_action_bar;
use gradepenalty_duedate\output\form\edit_penalty_form;
use gradepenalty_duedate\output\view_penalty_rule_action_bar;
use gradepenalty_duedate\penalty_rule;
use gradepenalty_duedate\table\penalty_rule_table;
require_once(__DIR__ . '/../../../config.php');
require_once("$CFG->libdir/adminlib.php");
// Page parameters.
$contextid = optional_param('contextid', 1, PARAM_INT);
$returnurl = optional_param('returnurl', '', PARAM_LOCALURL);
$edit = optional_param('edit', 0, PARAM_INT);
$reset = optional_param('reset', 0, PARAM_INT);
$deleteeall = optional_param('deleteallrules', 0, PARAM_INT);
// Check login and permissions.
[$context, $course, $cm] = get_context_info_array($contextid);
if ($context->contextlevel == CONTEXT_SYSTEM) {
require_admin();
} else {
require_login($course, false, $cm);
require_capability('gradepenalty/duedate:manage', $context);
}
$PAGE->set_context($context);
$url = new url('/grade/penalty/duedate/manage_penalty_rule.php', ['contextid' => $contextid]);
$PAGE->set_url($url);
// Return to this page without edit mode.
if (!$returnurl) {
$returnurl = $url;
}
// Display page according to context.
if ($context->contextlevel == CONTEXT_COURSE) {
$course = get_course($context->instanceid);
$PAGE->set_heading($course->fullname);
} else if ($context->contextlevel == CONTEXT_MODULE) {
$PAGE->set_heading($PAGE->activityrecord->name);
} else {
$PAGE->set_heading(get_string('administrationsite'));
}
// Print the header and tabs.
$PAGE->set_cacheable(false);
if (!$edit) {
$title = get_string('duedaterule', 'gradepenalty_duedate');
} else {
$title = get_string('editduedaterule', 'gradepenalty_duedate');
// Add edit navigation node.
$PAGE->navbar->add(get_string('editduedaterule', 'gradepenalty_duedate'));
}
$PAGE->set_title($title);
$PAGE->set_pagelayout('admin');
$PAGE->activityheader->disable();
// If reset button is clicked, reset the penalty rules.
if ($reset || $deleteeall) {
// Show message for user confirmation.
$confirmurl = new url($url->out(), [
'contextid' => $contextid,
'resetconfirm' => 1,
]);
echo $OUTPUT->header();
echo $OUTPUT->confirm(get_string('resetconfirm', 'gradepenalty_duedate'), $confirmurl, $url);
echo $OUTPUT->footer();
die;
} else if (optional_param('resetconfirm', 0, PARAM_INT)) {
// Reset the penalty rules.
penalty_rule::reset_rules($contextid);
}
// Only initialize the form if we are in edit mode.
if ($edit) {
// Create a form to add / edit penalty rules.
$mform = new edit_penalty_form($url->out(), [
'contextid' => $contextid,
'edit' => $edit,
]);
if ($mform->is_cancelled()) {
redirect($returnurl);
} else if ($fromform = $mform->get_data()) {
// Save the form data.
$mform->save_data($fromform);
// Redirect to the same page.
redirect($url, get_string('changessaved'), 0, notification::NOTIFY_SUCCESS);
}
// Add javascript to handle the repeater.
$PAGE->requires->js_call_amd('gradepenalty_duedate/edit_penalty_form', 'init');
}
// Start output.
echo $OUTPUT->header();
if (!$edit) {
$actionbar = new view_penalty_rule_action_bar($context, $title, $url);
$renderer = $PAGE->get_renderer('core_grades');
echo $renderer->render_action_bar($actionbar);
// Display the penalty table.
echo $OUTPUT->heading(get_string('existingrule', 'gradepenalty_duedate'), 5);
$penaltytable = new penalty_rule_table('penalty_rule_table', $contextid);
$penaltytable->define_baseurl($url);
$penaltytable->out(30, true);
} else {
$actionbar = new edit_penalty_rule_action_bar($context, $title, $url);
$renderer = $PAGE->get_renderer('core_grades');
echo $renderer->render_action_bar($actionbar);
// Wrap the form in a container, so we can replace the form.
echo $OUTPUT->box_start('generalbox', 'penalty_rule_form_container');
// Display the form.
$mform->display();
// End of the box.
echo $OUTPUT->box_end();
}
// Footer.
echo $OUTPUT->footer();