From fab006e0d4c0ee3b8b2e5ff968d4a4d4f6c0b7be Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 11 Mar 2015 11:28:08 +0100 Subject: [PATCH 01/13] Minor - update UI --- main/inc/lib/display.lib.php | 5 ++++- main/inc/lib/formvalidator/Element/DatePicker.php | 4 ++-- main/inc/lib/formvalidator/Element/DateTimePicker.php | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/main/inc/lib/display.lib.php b/main/inc/lib/display.lib.php index 33ee2765d4..fd78a990ff 100755 --- a/main/inc/lib/display.lib.php +++ b/main/inc/lib/display.lib.php @@ -1758,7 +1758,7 @@ class Display * @param string $type * @return string */ - public static function label($content, $type = null) + public static function label($content, $type = 'default') { $class = ''; switch ($type) { @@ -1777,6 +1777,9 @@ class Display case 'inverse': $class = 'label-inverse'; break; + default: + $class = 'label-default'; + break; } $html = ''; diff --git a/main/inc/lib/formvalidator/Element/DatePicker.php b/main/inc/lib/formvalidator/Element/DatePicker.php index 1f9d413485..7b87aed88e 100755 --- a/main/inc/lib/formvalidator/Element/DatePicker.php +++ b/main/inc/lib/formvalidator/Element/DatePicker.php @@ -2,7 +2,7 @@ /* For licensing terms, see /license.txt */ /** - * Form element to select a date and hour (with popup datepicker) + * Form element to select a date. * * Class DatePicker */ @@ -18,7 +18,7 @@ class DatePicker extends HTML_QuickForm_text if (!isset($attributes['id'])) { $attributes['id'] = $elementName; } - //$attributes['class'] = ''; + $attributes['class'] = 'form-control'; HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes); $this->_appendName = true; diff --git a/main/inc/lib/formvalidator/Element/DateTimePicker.php b/main/inc/lib/formvalidator/Element/DateTimePicker.php index 86be7f29b7..a0bf717a2b 100755 --- a/main/inc/lib/formvalidator/Element/DateTimePicker.php +++ b/main/inc/lib/formvalidator/Element/DateTimePicker.php @@ -2,7 +2,7 @@ /* For licensing terms, see /license.txt */ /** - * Form element to select a date and hour (with popup datepicker) + * Form element to select a date and hour. */ class DateTimePicker extends HTML_QuickForm_text { @@ -14,7 +14,7 @@ class DateTimePicker extends HTML_QuickForm_text if (!isset($attributes['id'])) { $attributes['id'] = $elementName; } - + $attributes['class'] = 'form-control'; HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes); $this->_appendName = true; $this->_type = 'date_time_picker'; From 4c50fa27e3f5d3c26e94148b8b7cb0faafb8c2d7 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 11 Mar 2015 11:28:57 +0100 Subject: [PATCH 02/13] Add group filter to attendance see BT#9421 --- main/attendance/attendance_add.php | 9 +- main/attendance/attendance_calendar.php | 24 +- main/attendance/attendance_controller.php | 28 ++- main/attendance/attendance_sheet.php | 66 ++++-- main/inc/lib/attendance.lib.php | 233 +++++++++++++++---- main/inc/lib/database.constants.inc.php | 1 + main/install/db_main.sql | 18 +- main/install/migrate-db-1.9.0-1.10.0-pre.sql | 7 +- 8 files changed, 306 insertions(+), 80 deletions(-) diff --git a/main/attendance/attendance_add.php b/main/attendance/attendance_add.php index adedd054cc..e806227252 100755 --- a/main/attendance/attendance_add.php +++ b/main/attendance/attendance_add.php @@ -30,10 +30,15 @@ $form->addElement('hidden', 'sec_token', $token); $form->addText('title', get_lang('Title'), true, array('size'=>'50')); $form->applyFilter('title','html_filter'); -$form->addHtmlEditor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'TrainingDescription', 'Width' => '100%', 'Height' => '150')); +$form->addHtmlEditor( + 'description', + get_lang('Description'), + false, + false, + array('ToolbarSet' => 'TrainingDescription', 'Width' => '100%', 'Height' => '150') +); // Adavanced Parameters - $advanced = ' '.Display::return_icon('div_show.gif',get_lang('Show'),array('style'=>'vertical-align:middle')).' '.get_lang('AdvancedParameters').''; if ((api_get_session_id() != 0 && Gradebook::is_active()) || api_get_session_id() == 0) { $form -> addElement('advanced_settings',$advanced); diff --git a/main/attendance/attendance_calendar.php b/main/attendance/attendance_calendar.php index 807d1a62ed..7a4544e7e4 100755 --- a/main/attendance/attendance_calendar.php +++ b/main/attendance/attendance_calendar.php @@ -29,7 +29,6 @@ if (!$is_locked_attendance || api_is_platform_admin()) { echo ''; } - $message_information = get_lang('AttendanceCalendarDescription'); if (!empty($message_information)) { @@ -48,6 +47,12 @@ if (isset($error_checkdate) && $error_checkdate) { Display::display_error_message($message, false); } +$groupList = GroupManager::get_group_list(); +$groupIdList = array('--'); +foreach ($groupList as $group) { + $groupIdList[$group['id']] = $group['name']; +} + if (isset($action) && $action == 'calendar_add') { // calendar add form $form = new FormValidator( @@ -91,15 +96,19 @@ if (isset($action) && $action == 'calendar_add') { $defaults['repeat_type'] = 'weekly'; + $form->addSelect('groups', get_lang('Group'), $groupIdList); + $form->addButtonCreate(get_lang('Save')); $form->setDefaults($defaults); $form->display(); } else { - // calendar list + // Calendar list + echo Display::page_subheader(get_lang('CalendarList')); echo '
'; if (!empty($attendance_calendar)) { foreach ($attendance_calendar as $calendar) { + echo '
'; if ((isset($action) && $action == 'calendar_edit') && (isset($calendar_id) && $calendar_id == $calendar['id']) @@ -112,6 +121,7 @@ if (isset($action) && $action == 'calendar_add') { 'index.php?action=calendar_edit&attendance_id=' . $attendance_id . '&calendar_id=' . $calendar_id . '&' . api_get_cidreq() . $param_gradebook, '' ); + $form->addElement('date_time_picker', 'date_time', '', array('form_name'=>'attendance_calendar_edit'), 5); $defaults['date_time'] = $calendar['date_time']; $form->addElement('style_submit_button', null, get_lang('Save'), 'class="save"'); @@ -120,7 +130,15 @@ if (isset($action) && $action == 'calendar_add') { $form->display(); echo '
'; } else { - echo Display::return_icon('lp_calendar_event.png', get_lang('DateTime')).' '.substr($calendar['date_time'], 0, strlen($calendar['date_time'])- 3) .' '; + echo Display::return_icon( + 'lp_calendar_event.png', get_lang('DateTime') + ).' '.substr($calendar['date_time'], 0, strlen($calendar['date_time'])- 3) .' '; + if (isset($calendar['groups']) && !empty($calendar['groups'])) { + foreach ($calendar['groups'] as $group) { + echo ' '.Display::label($groupIdList[$group['group_id']]); + } + } + if (!$is_locked_attendance || api_is_platform_admin()) { if (api_is_allowed_to_edit()) { echo ''; diff --git a/main/attendance/attendance_controller.php b/main/attendance/attendance_controller.php index 979d097f6e..16f4c8f7a8 100755 --- a/main/attendance/attendance_controller.php +++ b/main/attendance/attendance_controller.php @@ -264,10 +264,10 @@ class AttendanceController $attendance = new Attendance(); $data = array(); $data['attendance_id'] = $attendance_id; - $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id); + $groupId = isset($_REQUEST['group_id']) ? $_REQUEST['group_id'] : null; + $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id, $groupId); $filter_type = 'today'; - if (!empty($_REQUEST['filter'])) { $filter_type = $_REQUEST['filter']; } @@ -278,7 +278,6 @@ class AttendanceController ); if ($edit == true) { - if (api_is_allowed_to_edit(null, true) || $isDrhOfCourse) { $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); } @@ -312,24 +311,33 @@ class AttendanceController if (isset($_POST['check_presence'][$cal_id])) { $users_present = $_POST['check_presence'][$cal_id]; } - $attendance->attendance_sheet_add($cal_id,$users_present,$attendance_id); + $attendance->attendance_sheet_add( + $cal_id, + $users_present, + $attendance_id + ); } } - $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id); + $data['users_in_course'] = $attendance->get_users_rel_course($attendance_id, $groupId); $my_calendar_id = null; if (is_numeric($filter_type)) { $my_calendar_id = $filter_type; $filter_type = 'calendar_id'; } - $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type, $my_calendar_id); + $data['attendant_calendar'] = $attendance->get_attendance_calendar( + $attendance_id, + $filter_type, + $my_calendar_id, + $groupId + ); $data['attendant_calendar_all'] = $attendance->get_attendance_calendar($attendance_id); $data['users_presence'] = $attendance->get_users_attendance_sheet($attendance_id); $data['next_attendance_calendar_id'] = $attendance->get_next_attendance_calendar_id($attendance_id); $data['next_attendance_calendar_datetime'] = $attendance->get_next_attendance_calendar_datetime($attendance_id); } else { $data['attendant_calendar_all'] = $attendance->get_attendance_calendar($attendance_id); - $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type); + $data['attendant_calendar'] = $attendance->get_attendance_calendar($attendance_id, $filter_type, null, $groupId); } $data['edit_table'] = intval($edit); @@ -354,6 +362,7 @@ class AttendanceController $data = array(); $data['attendance_id'] = $attendance_id; $attendance_id = intval($attendance_id); + $groupList = isset($_POST['groups']) ? array($_POST['groups']) : array(); if ($action == 'calendar_add') { if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { @@ -373,7 +382,8 @@ class AttendanceController $attendance_id, $start_datetime, $end_datetime, - $repeat_type + $repeat_type, + $groupList ); $action = 'calendar_list'; } else { @@ -390,7 +400,7 @@ class AttendanceController $datetimezone = api_get_utc_datetime($datetime); if (!empty($datetime)) { $attendance->set_date_time($datetimezone); - $affected_rows = $attendance->attendance_calendar_add($attendance_id); + $affected_rows = $attendance->attendance_calendar_add($attendance_id, $groupList); $action = 'calendar_list'; } else { $data['error_date'] = true; diff --git a/main/attendance/attendance_sheet.php b/main/attendance/attendance_sheet.php index fa6c43d095..5e3f7a1236 100755 --- a/main/attendance/attendance_sheet.php +++ b/main/attendance/attendance_sheet.php @@ -25,6 +25,8 @@ if (api_is_allowed_to_edit(null, true) || $param_gradebook = '&gradebook='.$_SESSION['gradebook']; } + $groupId = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null; + $form = new FormValidator( 'filter', 'post', @@ -45,11 +47,25 @@ if (api_is_allowed_to_edit(null, true) || if (!empty($attendant_calendar_all)) { $values[''] = '---------------'; - foreach($attendant_calendar_all as $attendance_date) { + foreach ($attendant_calendar_all as $attendance_date) { + $includeCalendar = true; + if (isset($attendance_date['groups']) && !empty($groupId)) { + foreach ($attendance_date['groups'] as $group) { + if ($groupId == $group['group_id']) { + $includeCalendar = true; + break; + } else { + $includeCalendar = false; + } + } + } + if ($today == $attendance_date['date']) { $exists_attendance_today = true; } - $values[$attendance_date['id']] = $attendance_date['date_time']; + if ($includeCalendar) { + $values[$attendance_date['id']] = $attendance_date['date_time']; + } } } @@ -58,6 +74,17 @@ if (api_is_allowed_to_edit(null, true) || } $form->addElement('select', 'filter', get_lang('Filter'), $values, array('id' => 'filter_id')); + + $groupList = GroupManager::get_group_list(); + $groupIdList = array('--'); + foreach ($groupList as $group) { + $groupIdList[$group['id']] = $group['name']; + } + + if (!empty($groupList)) { + $form->addSelect('group_id', get_lang('Group'), $groupIdList); + } + $form->addButtonFilter(get_lang('Filter')); if (isset($_REQUEST['filter'])) { @@ -71,7 +98,12 @@ if (api_is_allowed_to_edit(null, true) || $renderer = $form->defaultRenderer(); $renderer->setElementTemplate('{label} {element} '); - $form->setDefaults(array('filter'=>$default_filter)); + $form->setDefaults( + array( + 'filter' => $default_filter, + 'group_id' => $groupId + ) + ); if (!$is_locked_attendance || api_is_platform_admin()) { echo '
'; @@ -96,10 +128,9 @@ if (api_is_allowed_to_edit(null, true) || Display::display_warning_message(get_lang('TheAttendanceSheetIsLocked'), false); } - $param_filter = '&filter='.Security::remove_XSS($default_filter); + $param_filter = '&filter='.Security::remove_XSS($default_filter).'&group_id='.$groupId; if (count($users_in_course) > 0) { - ?>