Attendance: add my missing signatures page functionnality -refs BT#21018

pull/5015/head
NicoDucou 2 years ago
parent 660d728e19
commit 0af873f23d
  1. 65
      main/attendance/my_missing_signatures.php
  2. 4
      main/inc/ajax/user_manager.ajax.php
  3. 8
      main/inc/lib/attendance.lib.php
  4. 8
      main/inc/lib/userportal.lib.php
  5. 4
      main/install/configuration.dist.php
  6. 11
      main/template/default/attendance/my_missing_signatures.tpl

@ -0,0 +1,65 @@
<?php
/* For licensing terms, see /license.txt */
$cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
if (!api_get_configuration_value('show_missing_signatures_page') || !api_get_configuration_value('enable_sign_attendance_sheet')) {
api_not_allowed(true);
}
api_block_anonymous_users();
$htmlHeadXtra[] = api_get_asset('signature_pad/signature_pad.umd.js');
$htmlHeadXtra[] = '<style>
#search-user {
background-image: url("/main/img/icons/22/sn-search.png");
background-position: 10px 12px;
background-repeat: no-repeat;
width: 100%;
font-size: 16px;
padding: 12px 20px 12px 40px;
border: 1px solid #ddd;
margin: 12px 0px;
}
</style>';
$userId = api_get_user_id();
//$courses = CourseManager::get_courses_list_by_user_id($userId, true);
$tbl_attendance_sheet = Database::get_course_table(TABLE_ATTENDANCE_SHEET);
$tbl_attendance_calendar = Database::get_course_table(TABLE_ATTENDANCE_CALENDAR);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
//$sql = "select * from c_attendance_sheet where user_id = ". $userId . " and presence = 1 and signature IS NULL order by c_id";
$sql = "SELECT cal.c_id as courseId, course.title as courseTitle, cal.date_time as date_time, cal.iid as calendarId
FROM $tbl_attendance_sheet att
INNER JOIN $tbl_attendance_calendar cal
ON cal.id = att.attendance_calendar_id
INNER JOIN $tbl_course course
ON cal.c_id = course.id
WHERE
att.presence = 1 AND
att.signature IS NULL AND
att.user_id = '$userId'
ORDER BY cal.c_id";
$result = Database::query($sql);
$calendars = Database::store_result($result);
$presences = [];
foreach ($calendars as $calendar) {
$presences[$calendar['courseId']]['title'] = $calendar['courseTitle'];
$presences[$calendar['courseId']]['calendars'][$calendar['calendarId']]['buttonToSign'] = "<span class=\"list-data\"><a id=\"sign-".$userId."-".$calendar['calendarId']."-".$calendar['courseId']."\" class=\"btn btn-primary attendance-sign\" href=\"javascript:void(0)\"><em class=\"fa fa-pencil\"></em>".get_lang('Sign')."</a></span>";
$presences[$calendar['courseId']]['calendars'][$calendar['calendarId']]['date_time'] = api_convert_and_format_date($calendar['date_time'], null, date_default_timezone_get());
}
$template = new Template(get_lang('MyMissingSignatures'));
$template->assign('presences', $presences);
$content = $template->fetch($template->get_template('/attendance/my_missing_signatures.tpl'));
$template->assign('content', $content);
$template->display_one_col_template();
include_once 'attendance_signature.inc.php';

@ -82,9 +82,9 @@ switch ($action) {
$file = str_replace(' ', '+', $file);
$attendanceId = $_REQUEST['attendance_id'];
if (!empty($selected)) {
list($prefix, $userId, $attendanceCalendarId) = explode('-', $selected);
list($prefix, $userId, $attendanceCalendarId, $courseId) = explode('-', $selected);
$attendance = new Attendance();
$attendance->saveSignature($userId, $attendanceCalendarId, $file, $attendanceId);
$attendance->saveSignature($userId, $attendanceCalendarId, $file, $attendanceId, $courseId);
echo 1;
exit;
}

@ -2915,14 +2915,16 @@ class Attendance
$userId,
$attendanceCalendarId,
$file,
$attendanceId
$attendanceId,
$courseId = NULL
) {
$allowSignature = api_get_configuration_value('enable_sign_attendance_sheet');
if (!$allowSignature) {
return false;
}
$courseId = api_get_course_int_id();
if (!isset($courseId)) {
$courseId = api_get_course_int_id();
}
$em = Database::getManager();
$criteria = [
'userId' => $userId,

@ -948,6 +948,14 @@ class IndexManager
];
}
if (api_get_configuration_value('show_missing_signatures_page') && api_get_configuration_value('enable_sign_attendance_sheet')) {
$items[] = [
'icon' => Display::return_icon('attendance.png', get_lang('MyMissingSignatures')),
'link' => api_get_path(WEB_CODE_PATH).'attendance/my_missing_signatures.php',
'title' => get_lang('MyMissingSignatures'),
];
}
if (bbb::showGlobalConferenceLink($userInfo)) {
$bbb = new bbb('', '', true, api_get_user_id());
$url = $bbb->getListingUrl();

@ -2355,6 +2355,10 @@ INSERT INTO `extra_field` (`extra_field_type`, `field_type`, `variable`, `displa
// Requires edit Entity CAttendanceCalendar : src/Chamilo/CourseBundle/Entity/CAttendanceCalendar.php add the @ symbol for attribute $blocked into ORM\Column() line.
//$_configuration['enable_sign_attendance_sheet'] = false;
// Shows a link to the "my missing signatures" page in the /index.php and /user_portal.php page.
// It will only appears if enable_sign_attendance_sheet is alos true.
//$_configuration['show_missing_signatures_page'] = false;
// Make sessions by duration always accessible to coaches (otherwise
// they are only accessible during the active duration).
//$_configuration['session_coach_access_after_duration_end'] = false;

@ -0,0 +1,11 @@
<h3>
{{ 'MyMissingSignatures' | get_lang }}
</h3>
{% for presence in presences %}
<h4>{{ presence.title }}</h4>
<ul>
{% for calendar in presence.calendars %}
<li>{{ calendar.date_time }} {{ calendar.buttonToSign }}</li>
{% endfor %}
</ul>
{% endfor %}
Loading…
Cancel
Save