Adding different states for the attendance see BT#5419

skala
Julio Montoya 13 years ago
parent b621049d98
commit c2d95cca0f
  1. 16
      main/attendance/attendance_controller.php
  2. 35
      main/attendance/attendance_sheet.php

@ -257,11 +257,21 @@
if (isset($_POST['hidden_input'])) { if (isset($_POST['hidden_input'])) {
foreach ($_POST['hidden_input'] as $cal_id) { foreach ($_POST['hidden_input'] as $cal_id) {
$users_present = array(); $users_result = array();
if (isset($_POST['check_presence'][$cal_id])) { if (isset($_POST['check_presence'][$cal_id])) {
$users_present = $_POST['check_presence'][$cal_id]; $users_result = $_POST['check_presence'][$cal_id];
} }
$affected_rows = $attendance->attendance_sheet_add($cal_id,$users_present,$attendance_id);
$user_final_results = array();
if (!empty($users_result)) {
foreach ($users_result as $result) {
$user_status = explode('_', $result);
if (isset($user_status[2]) && isset($user_status[1])) {
$user_final_results[$user_status[2]] = $user_status[1];
}
}
}
$affected_rows = $attendance->attendance_sheet_add($cal_id, $user_final_results, $attendance_id);
} }
} }

@ -247,7 +247,8 @@ if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api
if ($is_locked_attendance == false) { if ($is_locked_attendance == false) {
if (api_is_allowed_to_edit(null, true)) { if (api_is_allowed_to_edit(null, true)) {
$result .= '<br /><input type="checkbox" class="checkbox_head_'.$calendar['id'].'" id="checkbox_head_'.$calendar['id'].'" '.$disabled_check.' checked="checked" />'.$input_hidden.'</div></center></th>'; //$result .= '<br /><input type="checkbox" class="checkbox_head_'.$calendar['id'].'" id="checkbox_head_'.$calendar['id'].'" '.$disabled_check.' checked="checked" />';
$result .= $input_hidden.'</div></center></th>';
} }
} }
} }
@ -266,6 +267,15 @@ if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api
echo '<tbody>'; echo '<tbody>';
$i = 0; $i = 0;
$attendance_states = array(
'1' => get_lang('Present'),
'0' => get_lang('Absent'),
'2' => get_lang('VeryLate'),
'3' => get_lang('Late'),
);
$default_presence_value = 1;
foreach ($users_in_course as $user) { foreach ($users_in_course as $user) {
$class = ''; $class = '';
if ($i % 2 == 0) { if ($i % 2 == 0) {
@ -277,20 +287,14 @@ if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api
if (count($attendant_calendar) > 0 ) { if (count($attendant_calendar) > 0 ) {
foreach ($attendant_calendar as $calendar) { foreach ($attendant_calendar as $calendar) {
$checked = 'checked'; $presence = $default_presence_value;
$presence = -1;
if (isset($users_presence[$user['user_id']][$calendar['id']]['presence'])) { if (isset($users_presence[$user['user_id']][$calendar['id']]['presence'])) {
$presence = $users_presence[$user['user_id']][$calendar['id']]['presence']; $presence = isset($users_presence[$user['user_id']][$calendar['id']]['presence']) ? $users_presence[$user['user_id']][$calendar['id']]['presence'] : $default_presence_value;
if (intval($presence) == 1) {
$checked = 'checked';
} else {
$checked = '';
}
} else { } else {
//if the user wasn't registered at that time, consider unchecked //if the user wasn't registered at that time, consider unchecked
if ($next_attendance_calendar_datetime == 0 || $calendar['date_time'] < $next_attendance_calendar_datetime) { if ($next_attendance_calendar_datetime == 0 || $calendar['date_time'] < $next_attendance_calendar_datetime) {
$checked = ''; $presence = $default_presence_value;
} }
} }
$disabled = 'disabled'; $disabled = 'disabled';
@ -309,7 +313,16 @@ if (api_is_allowed_to_edit(null, true) || api_is_coach(api_get_session_id(), api
echo '<center>'; echo '<center>';
if (api_is_allowed_to_edit(null, true)) { if (api_is_allowed_to_edit(null, true)) {
if (!$is_locked_attendance || api_is_platform_admin()) { if (!$is_locked_attendance || api_is_platform_admin()) {
echo '<input type="checkbox" name="check_presence['.$calendar['id'].'][]" value="'.$user['user_id'].'" '.$disabled.' '.$checked.' />';
//echo '<input type="checkbox" name="check_presence['.$calendar['id'].'][]" value="'.$user['user_id'].'" '.$disabled.' '.$checked.' />';
foreach ($attendance_states as $key => $state) {
$input_checked = null;
if ($key == $presence) {
$input_checked = " checked=checked";
}
echo '&nbsp;&nbsp;<input type="checkbox" name="check_presence['.$calendar['id'].'][]" value = "state_'.$key.'_'.$user['user_id'].'" '.$disabled.' '.$input_checked.' />&nbsp;'.$state;
}
echo '<span class="anchor_'.$calendar['id'].'"></span>'; echo '<span class="anchor_'.$calendar['id'].'"></span>';
} else { } else {
echo $presence ? Display::return_icon('checkbox_on.gif',get_lang('Presence')) : Display::return_icon('checkbox_off.gif',get_lang('Presence')); echo $presence ? Display::return_icon('checkbox_on.gif',get_lang('Presence')) : Display::return_icon('checkbox_off.gif',get_lang('Presence'));

Loading…
Cancel
Save