index.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Template (front controller in MVC pattern) used for distpaching to the controllers depend on the current action
  5. * @author Christian Fasanando <christian1827@gmail.com>
  6. * @author Carlos Vargas (link to attendance tool )<litox84@gmail.com>
  7. * @author Julio Montoya <gugli100@gmail.com> Bug fixing, sql improvements
  8. *
  9. * @package chamilo.attendance
  10. */
  11. // name of the language file that needs to be included
  12. $language_file = array ('course_description', 'course_info', 'pedaSuggest', 'userInfo', 'admin', 'agenda','tracking', 'trad4all');
  13. // including files
  14. require_once '../inc/global.inc.php';
  15. require_once api_get_path(LIBRARY_PATH).'attendance.lib.php';
  16. require_once api_get_path(LIBRARY_PATH).'app_view.php';
  17. require_once api_get_path(LIBRARY_PATH).'ezpdf/class.ezpdf.php';
  18. require_once 'attendance_controller.php';
  19. require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
  20. require_once api_get_path(LIBRARY_PATH).'course.lib.php';
  21. require_once api_get_path(LIBRARY_PATH).'sortabletable.class.php';
  22. require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
  23. require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/gradebook_functions.inc.php';
  24. require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/fe/exportgradebook.php';
  25. // current section
  26. $this_section = SECTION_COURSES;
  27. // protect a course script
  28. api_protect_course_script(true);
  29. // get actions
  30. $actions = array('attendance_list', 'attendance_sheet_list', 'attendance_sheet_print', 'attendance_sheet_add', 'attendance_add', 'attendance_edit', 'attendance_delete', 'attendance_delete_select');
  31. $actions_calendar = array('calendar_list', 'calendar_add', 'calendar_edit', 'calendar_delete', 'calendar_all_delete');
  32. $action = 'attendance_list';
  33. $course_id = '';
  34. if (isset($_GET['cidReq'])){
  35. $course_id = $_GET['cidReq'];
  36. }
  37. if (isset($_GET['action']) && (in_array($_GET['action'],$actions) || in_array($_GET['action'],$actions_calendar))) {
  38. $action = $_GET['action'];
  39. }
  40. if (isset($_GET['isStudentView']) && $_GET['isStudentView'] == 'true') {
  41. $action = 'attendance_list';
  42. }
  43. // get attendance id
  44. $attendance_id = 0;
  45. if (isset($_GET['attendance_id'])) {
  46. $attendance_id = intval($_GET['attendance_id']);
  47. }
  48. // get calendar id
  49. $calendar_id = '';
  50. if (isset($_GET['calendar_id'])) {
  51. $calendar_id = intval($_GET['calendar_id']);
  52. }
  53. // instance attendance object for using like library here
  54. $attendance = new Attendance();
  55. // attendance controller object
  56. $attendance_controller = new AttendanceController();
  57. // get attendance data
  58. if (!empty($attendance_id)) {
  59. // attendance data by id
  60. $attendance_data = $attendance->get_attendance_by_id($attendance_id);
  61. }
  62. $htmlHeadXtra[] = '<script language="javascript">
  63. $(function() {
  64. $("table th img").click(function() {
  65. var col_id = this.id;
  66. var col_split = col_id.split("_");
  67. var calendar_id = col_split[2];
  68. var class_img = $(this).attr("class");
  69. if (class_img == "img_unlock") {
  70. $("#checkbox_head_"+calendar_id).attr("disabled",true);
  71. $(".row_odd td.checkboxes_col_"+calendar_id).css({"background-color":"#F9F9F9", "border-left":"none","border-right":"none"});
  72. $(".row_even td.checkboxes_col_"+calendar_id).css({"background-color":"#FFF", "border-left":"none","border-right":"none"});
  73. $(".checkboxes_col_"+calendar_id+" input:checkbox").attr("disabled",true);
  74. $(this).attr("src","'.api_get_path(WEB_CODE_PATH).'img/lock.gif");
  75. $(this).attr("title","'.get_lang('DateUnLock').'");
  76. $(this).attr("alt","'.get_lang('DateUnLock').'");
  77. $(this).attr("class","img_lock");
  78. $("#hidden_input_"+calendar_id).attr("value","");
  79. $("#hidden_input_"+calendar_id).attr("disabled",true);
  80. return false;
  81. } else {
  82. $("#checkbox_head_"+calendar_id).attr("disabled",false);
  83. $(".checkboxes_col_"+calendar_id).css({"background-color":"#e1e1e1", "border-left":"1px #CCC solid", "border-right":"1px #CCC solid" });
  84. $(".checkboxes_col_"+calendar_id+" input:checkbox").attr("disabled",false);
  85. $(this).attr("src","'.api_get_path(WEB_CODE_PATH).'img/unlock.gif");
  86. $(this).attr("title","'.get_lang('DateLock').'");
  87. $(this).attr("alt","'.get_lang('DateLock').'");
  88. $(this).attr("class","img_unlock");
  89. $("#hidden_input_"+calendar_id).attr("disabled",false);
  90. $("#hidden_input_"+calendar_id).attr("value",calendar_id);
  91. return false;
  92. }
  93. });
  94. $("table th input:checkbox").click(function() {
  95. var col_id = this.id;
  96. var col_split = col_id.split("_");
  97. var calendar_id = col_split[2];
  98. if ($("#"+col_id).is(":checked")) {
  99. $(".checkboxes_col_"+calendar_id+" input:checkbox").attr("checked",true);
  100. } else {
  101. $(".checkboxes_col_"+calendar_id+" input:checkbox").attr("checked",false);
  102. }
  103. });
  104. $(".attendance-sheet-content .row_odd, .attendance-sheet-content .row_even").mouseover(function() {
  105. $(".row_odd").css({"background-color":"#F9F9F9"});
  106. $(".row_even").css({"background-color":"#FFF"});
  107. });
  108. $(".attendance-sheet-content .row_odd, .attendance-sheet-content .row_even").mouseout(function() {
  109. $(".row_odd").css({"background-color":"#F9F9F9"});
  110. $(".row_even").css({"background-color":"#FFF"});
  111. });
  112. $(".advanced_parameters").click(function() {
  113. if ($("#id_qualify").css("display") == "none") {
  114. $("#id_qualify").css("display","block");
  115. $("#img_plus_and_minus").html(\'&nbsp;'.Display::return_icon('div_hide.gif',get_lang('Hide'),array('style'=>'vertical-align:middle')).'&nbsp;'.get_lang('AdvancedParameters').'\');
  116. } else {
  117. $("#id_qualify").css("display","none");
  118. $("#img_plus_and_minus").html(\'&nbsp;'.Display::return_icon('div_show.gif',get_lang('Show'),array('style'=>'vertical-align:middle')).'&nbsp;'.get_lang('AdvancedParameters').'\');
  119. }
  120. });
  121. });
  122. </script>';
  123. // interbreadcrumbs
  124. if (!empty($_GET['gradebook']) && $_GET['gradebook']=='view' ) {
  125. $_SESSION['gradebook']=Security::remove_XSS($_GET['gradebook']);
  126. $gradebook= $_SESSION['gradebook'];
  127. } elseif (empty($_GET['gradebook'])) {
  128. unset($_SESSION['gradebook']);
  129. $gradebook= '';
  130. }
  131. $param_gradebook = '';
  132. if (isset($_SESSION['gradebook'])) {
  133. $param_gradebook = '&gradebook='.$gradebook;
  134. }
  135. $student_param = '';
  136. if (api_is_drh() && isset($_GET['student_id'])) {
  137. $student_id = intval($_GET['student_id']);
  138. $student_param = '&student_id='.$student_id;
  139. $student_info = api_get_user_info($student_id);
  140. $student_name = api_get_person_name($student_info['firstname'],$student_info['lastname']);
  141. $interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$student_id, 'name' => $student_name);
  142. }
  143. if (!empty($gradebook)) {
  144. $interbreadcrumb[] = array ('url' => api_get_path(WEB_CODE_PATH).'gradebook/index.php', 'name' => get_lang('ToolGradebook'));
  145. }
  146. $interbreadcrumb[] = array ('url' => 'index.php?'.api_get_cidreq().'&action=attendance_list'.$param_gradebook.$student_param, 'name' => get_lang('ToolAttendance'));
  147. if ($action == 'attendance_add') {
  148. $interbreadcrumb[] = array ('url' => '#', 'name' => get_lang('CreateANewAttendance'));
  149. }
  150. if ($action == 'attendance_edit') {
  151. $interbreadcrumb[] = array ('url' => '#', 'name' => get_lang('Edit'));
  152. }
  153. if ($action == 'attendance_sheet_list' || $action == 'attendance_sheet_add') {
  154. $interbreadcrumb[] = array ('url' => '#', 'name' => $attendance_data['name']);
  155. }
  156. if ($action == 'calendar_list' || $action == 'calendar_edit' || $action == 'calendar_delete' || $action == 'calendar_all_delete') {
  157. $interbreadcrumb[] = array ('url' => 'index.php?'.api_get_cidreq().'&action=attendance_sheet_list&attendance_id='.$attendance_id.$param_gradebook, 'name' => $attendance_data['name']);
  158. $interbreadcrumb[] = array ('url' => '#', 'name' => get_lang('AttendanceCalendar'));
  159. }
  160. if ($action == 'calendar_add') {
  161. $interbreadcrumb[] = array ('url' => 'index.php?'.api_get_cidreq().'&action=attendance_sheet_list&attendance_id='.$attendance_id.$param_gradebook, 'name' => $attendance_data['name']);
  162. $interbreadcrumb[] = array ('url' => '#', 'name' => get_lang('AddDateAndTime'));
  163. }
  164. // delete selected attendance
  165. if (isset($_POST['action']) && $_POST['action'] == 'attendance_delete_select') {
  166. $attendance_controller->attendance_delete($_POST['id']);
  167. }
  168. // distpacher actions to controller
  169. switch ($action) {
  170. case 'attendance_list':
  171. $attendance_controller->attendance_list();
  172. break;
  173. case 'attendance_add':
  174. if (api_is_allowed_to_edit(null, true)) {
  175. $attendance_controller->attendance_add();
  176. } else {
  177. api_not_allowed();
  178. }
  179. break;
  180. case 'attendance_edit' :
  181. if (api_is_allowed_to_edit(null, true)) {
  182. $attendance_controller->attendance_edit($attendance_id);
  183. } else {
  184. api_not_allowed();
  185. }
  186. break;
  187. case 'attendance_delete' :
  188. if (api_is_allowed_to_edit(null, true)) {
  189. $attendance_controller->attendance_delete($attendance_id);
  190. } else { api_not_allowed();}
  191. break;
  192. case 'attendance_sheet_list':
  193. $attendance_controller->attendance_sheet($action, $attendance_id, $student_id);
  194. break;
  195. case 'attendance_sheet_print':
  196. $attendance_controller->attendance_sheet_print($action, $attendance_id, $student_id, $course_id);
  197. break;
  198. case 'attendance_sheet_add' :
  199. if (api_is_allowed_to_edit(null, true)) {
  200. $attendance_controller->attendance_sheet($action, $attendance_id);
  201. } else { api_not_allowed();}
  202. break;
  203. case 'lock_attendance' :
  204. case 'unlock_attendance' :
  205. if (api_is_allowed_to_edit(null, true)) {
  206. $attendance_controller->lock_attendance($action, $attendance_id);
  207. } else {
  208. api_not_allowed();
  209. }
  210. break;
  211. case 'calendar_add' :
  212. case 'calendar_edit' :
  213. case 'calendar_all_delete' :
  214. case 'calendar_delete' :
  215. if (!api_is_allowed_to_edit(null, true)) {
  216. api_not_allowed();
  217. }
  218. case 'calendar_list' :
  219. $attendance_controller->attendance_calendar($action, $attendance_id, $calendar_id);
  220. break;
  221. default :
  222. $attendance_controller->attendance_list();
  223. }
  224. ?>