diff --git a/add_form.php b/add_form.php index 700c337..d69dfa0 100644 --- a/add_form.php +++ b/add_form.php @@ -118,8 +118,13 @@ class mod_attendance_add_form extends moodleform { } // Students can mark own attendance. - $mform->addElement('checkbox', 'studentscanmark', '', get_string('studentscanmark', 'attendance')); - $mform->addHelpButton('studentscanmark', 'studentscanmark', 'attendance'); + if (!empty(get_config('attendance', 'studentscanmark'))) { + $mform->addElement('checkbox', 'studentscanmark', '', get_string('studentscanmark', 'attendance')); + $mform->addHelpButton('studentscanmark', 'studentscanmark', 'attendance'); + } else { + $mform->addElement('hidden', 'studentscanmark', '0'); + $mform->settype('studentscanmark', PARAM_INT); + } $mform->addElement('editor', 'sdescription', get_string('description', 'attendance'), array('rows' => 1, 'columns' => 80), array('maxfiles' => EDITOR_UNLIMITED_FILES, 'noclean' => true, 'context' => $modcontext)); diff --git a/attendance.php b/attendance.php index 0a7a2ba..8b9bda8 100644 --- a/attendance.php +++ b/attendance.php @@ -39,6 +39,10 @@ $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST) // Require the user is logged in. require_login($course, true, $cm); +if (empty(get_config('attendance', 'studentscanmark')) || empty($attforsession->studentscanmark)) { + redirect(new moodle_url('/mod/attendance/view.php', array('id' => $cm->id))); + exit; +} $pageparams->sessionid = $id; $att = new mod_attendance_structure($attendance, $cm, $course, $PAGE->context, $pageparams); diff --git a/lang/en/attendance.php b/lang/en/attendance.php index e1252ab..6e04022 100644 --- a/lang/en/attendance.php +++ b/lang/en/attendance.php @@ -302,6 +302,7 @@ $string['eventstatusupdated'] = 'Status updated'; $string['eventstatusadded'] = 'Status added'; $string['studentscanmark'] = 'Allow students to record own attendance'; +$string['studentscanmark_desc'] = 'If checked, teachers will be able to allow students to mark their own attendance.'; $string['studentscanmark_help'] = 'If checked students will be able to change their own attendance status for the session.'; $string['set_by_student'] = 'Self-recorded'; $string['attendance_already_submitted'] = 'You may not self register attendance that has already been set.'; diff --git a/renderer.php b/renderer.php index 8ef7570..ad07e27 100644 --- a/renderer.php +++ b/renderer.php @@ -813,7 +813,8 @@ class mod_attendance_renderer extends plugin_renderer_base { $cell->colspan = 2; $row->cells[] = $cell; } else { - if (!empty($sess->studentscanmark)) { // Student can mark their own attendance. + if (!empty(get_config('attendance', 'studentscanmark')) && !empty($sess->studentscanmark)) { + // Student can mark their own attendance. // URL to the page that lets the student modify their attendance. $url = new moodle_url('/mod/attendance/attendance.php', array('sessid' => $sess->id, 'sesskey' => sesskey())); diff --git a/sessions.php b/sessions.php index fd07a5d..164b193 100644 --- a/sessions.php +++ b/sessions.php @@ -234,6 +234,10 @@ function construct_sessions_data_for_add($formdata) { $duration = $sesendtime - $sesstarttime; $now = time(); + if (empty(get_config('attendance', 'studentscanmark'))) { + $formdata->studentscanmark = 0; + } + $sessions = array(); if (isset($formdata->addmultiply)) { $startdate = $sessiondate; diff --git a/settings.php b/settings.php index 66c5805..81ebf6c 100644 --- a/settings.php +++ b/settings.php @@ -41,4 +41,7 @@ if ($ADMIN->fulltree) { $settings->add(new admin_setting_configselect('attendance/resultsperpage', get_string('resultsperpage', 'attendance'), get_string('resultsperpage_desc', 'attendance'), 25, $options)); + + $settings->add(new admin_setting_configcheckbox('attendance/studentscanmark', + get_string('studentscanmark', 'attendance'), get_string('studentscanmark_desc', 'attendance'), 1)); }