Dan Marsden
8 years ago
9 changed files with 342 additions and 109 deletions
@ -0,0 +1,113 @@ |
|||
<?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/>. |
|||
|
|||
/** |
|||
* Allows default status set to be modified. |
|||
* |
|||
* @package mod_attendance |
|||
* @copyright 2017 Dan Marsden http://danmarsden.com |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
|||
*/ |
|||
|
|||
|
|||
require_once(__DIR__.'/../../config.php'); |
|||
require_once($CFG->libdir.'/adminlib.php'); |
|||
require_once($CFG->dirroot.'/mod/attendance/lib.php'); |
|||
require_once($CFG->dirroot.'/mod/attendance/locallib.php'); |
|||
|
|||
$action = optional_param('action', null, PARAM_INT); |
|||
$statusid = optional_param('statusid', null, PARAM_INT); |
|||
admin_externalpage_setup('managemodules'); |
|||
$url = new moodle_url('/mod/attendance/defaultstatus.php', array('statusid' => $statusid, 'action' => $action)); |
|||
|
|||
// Check sesskey if we are performing an action. |
|||
if (!empty($action)) { |
|||
require_sesskey(); |
|||
} |
|||
|
|||
$output = $PAGE->get_renderer('mod_attendance'); |
|||
echo $OUTPUT->header(); |
|||
echo $OUTPUT->heading(get_string('defaultstatus', 'mod_attendance')); |
|||
$tabmenu = attendance_print_settings_tabs('defaultstatus'); |
|||
echo $tabmenu; |
|||
|
|||
// TODO: Would be good to combine this code block with the one in preferences to avoid duplication. |
|||
$errors = array(); |
|||
switch ($action) { |
|||
case mod_attendance_preferences_page_params::ACTION_ADD: |
|||
$newacronym = optional_param('newacronym', null, PARAM_TEXT); |
|||
$newdescription = optional_param('newdescription', null, PARAM_TEXT); |
|||
$newgrade = optional_param('newgrade', 0, PARAM_RAW); |
|||
$newgrade = unformat_float($newgrade); |
|||
|
|||
// Default value uses setnumber/attendanceid = 0. |
|||
attendance_add_status($newacronym, $newdescription, $newgrade, 0); |
|||
|
|||
break; |
|||
case mod_attendance_preferences_page_params::ACTION_DELETE: |
|||
$confirm = optional_param('confirm', null, PARAM_INT); |
|||
$statuses = attendance_get_statuses(0, false); |
|||
$status = $statuses[$statusid]; |
|||
|
|||
if (isset($confirm)) { |
|||
attendance_remove_status($status); |
|||
echo $OUTPUT->notification(get_string('statusdeleted', 'attendance'), 'success'); |
|||
break; |
|||
} |
|||
|
|||
$message = get_string('deletecheckfull', '', get_string('variable', 'attendance')); |
|||
$message .= str_repeat(html_writer::empty_tag('br'), 2); |
|||
$message .= $status->acronym.': '. |
|||
($status->description ? $status->description : get_string('nodescription', 'attendance')); |
|||
$confirmurl = $url; |
|||
$confirmurl->param('confirm', 1); |
|||
|
|||
echo $OUTPUT->confirm($message, $confirmurl, $url); |
|||
echo $OUTPUT->footer(); |
|||
exit; |
|||
case mod_attendance_preferences_page_params::ACTION_HIDE: |
|||
$statuses = attendance_get_statuses(0, false); |
|||
$status = $statuses[$statusid]; |
|||
attendance_update_status($status, null, null, null, 0); |
|||
break; |
|||
case mod_attendance_preferences_page_params::ACTION_SHOW: |
|||
$statuses = attendance_get_statuses(0, false); |
|||
$status = $statuses[$statusid]; |
|||
attendance_update_status($status, null, null, null, 1); |
|||
break; |
|||
case mod_attendance_preferences_page_params::ACTION_SAVE: |
|||
$acronym = required_param_array('acronym', PARAM_TEXT); |
|||
$description = required_param_array('description', PARAM_TEXT); |
|||
$grade = required_param_array('grade', PARAM_RAW); |
|||
foreach ($grade as &$val) { |
|||
$val = unformat_float($val); |
|||
} |
|||
$statuses = attendance_get_statuses(0, false); |
|||
|
|||
foreach ($acronym as $id => $v) { |
|||
$status = $statuses[$id]; |
|||
$errors[$id] = attendance_update_status($status, $acronym[$id], $description[$id], $grade[$id], null); |
|||
} |
|||
echo $OUTPUT->notification(get_string('eventstatusupdated', 'attendance'), 'success'); |
|||
|
|||
break; |
|||
} |
|||
|
|||
$statuses = attendance_get_statuses(0, false); |
|||
$prefdata = new attendance_default_statusset($statuses, $errors); |
|||
echo $output->render($prefdata); |
|||
|
|||
echo $OUTPUT->footer(); |
Loading…
Reference in new issue