session_add.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * @package chamilo.admin
  5. * @todo use formvalidator for the form, remove all the select harcoded values
  6. */
  7. // name of the language file that needs to be included
  8. $language_file = 'admin';
  9. $cidReset = true;
  10. // including the global Chamilo file
  11. require_once '../inc/global.inc.php';
  12. // setting the section (for the tabs)
  13. $this_section = SECTION_PLATFORM_ADMIN;
  14. SessionManager::protect_session_edit();
  15. $interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('Sessions'));
  16. $interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('SessionList'));
  17. $htmlHeadXtra[] = api_get_jquery_libraries_js(array('jquery-ui-i18n'));
  18. $htmlHeadXtra = api_get_datetime_picker_js($htmlHeadXtra);
  19. $id = null;
  20. $url_action = api_get_self();
  21. if (isset($_GET['id'])) {
  22. $id = intval($_GET['id']);
  23. $url_action = '?id='.$id;
  24. }
  25. $add_coach = null;
  26. if ($id) {
  27. $tool_name = get_lang('EditSession');
  28. SessionManager::protect_session_edit($id);
  29. $session_info = api_get_session_info($id);
  30. if (!empty($session_info['id_coach'])) {
  31. $user_info = api_get_user_info($session_info['id_coach']);
  32. $add_coach = '$("#coach_id").trigger("addItem", [{"title": "'.$user_info['complete_name'].'", "value": "'.$session_info['id_coach'].'"}]);';
  33. }
  34. $button = get_lang('Update');
  35. } else {
  36. $tool_name = get_lang('AddSession');
  37. $button = get_lang('Add');
  38. }
  39. $url = api_get_path(WEB_AJAX_PATH).'admin.ajax.php?1=1';
  40. $htmlHeadXtra[] ='
  41. <script>
  42. function check() {
  43. $("#coach_id option:selected").each(function() {
  44. var id = $(this).val();
  45. var name = $(this).text();
  46. if (id != "" ) {
  47. $.ajax({
  48. async: false,
  49. url: "'.$url.'&a=user_exists",
  50. data: "id="+id,
  51. success: function(return_value) {
  52. if (return_value == 0 ) {
  53. alert("'.get_lang('UserDoesNotExist').'");
  54. //Deleting select option tag
  55. $("#coach_id").find("option").remove();
  56. $(".holder li").each(function () {
  57. if ($(this).attr("rel") == id) {
  58. $(this).remove();
  59. }
  60. });
  61. }
  62. },
  63. });
  64. }
  65. });
  66. }
  67. $(function() {
  68. $("#coach_id").fcbkcomplete({
  69. json_url: "'.$url.'&a=find_coaches",
  70. maxitems: 1,
  71. addontab: false,
  72. input_min_size: 1,
  73. cache: false,
  74. complete_text:"'.get_lang('StartToType').'",
  75. firstselected: false,
  76. onselect: check,
  77. filter_selected: true,
  78. newel: true
  79. });
  80. '.$add_coach.'
  81. $("#display_end_date").datetimepicker({
  82. dateFormat: "yy-mm-dd",
  83. hour: 9,
  84. onSelect: function(selectedDateTime) {
  85. var start = $(this).datetimepicker("getDate");
  86. if (!$("#access_end_date").val()) {
  87. $("#access_end_date").val(selectedDateTime);
  88. }
  89. if (!$("#coach_access_end_date").val()) {
  90. $("#coach_access_end_date").val(selectedDateTime);
  91. }
  92. }
  93. });
  94. $("#display_start_date").datetimepicker({
  95. dateFormat: "yy-mm-dd",
  96. hour: 9,
  97. onSelect: function(selectedDateTime) {
  98. var start = $(this).datetimepicker("getDate");
  99. if (!$("#access_start_date").val()) {
  100. $("#access_start_date").val(selectedDateTime);
  101. }
  102. if (!$("#coach_access_start_date").val()) {
  103. $("#coach_access_start_date").val(selectedDateTime);
  104. }
  105. }
  106. });
  107. $("#access_start_date").datetimepicker({
  108. dateFormat: "yy-mm-dd",
  109. hour: 9,
  110. onSelect: function(selectedDateTime) {
  111. var start = $(this).datetimepicker("getDate");
  112. //$("#access_end_date").val(selectedDateTime);
  113. }
  114. });
  115. access_start_date_content = $("#access_end_date").val();
  116. if (access_start_date_content.length > 0) {
  117. $("#visibility_container").show();
  118. } else {
  119. $("#visibility_container").hide();
  120. }
  121. $("#access_end_date").datetimepicker({
  122. dateFormat: "yy-mm-dd",
  123. onSelect: function(selectedDateTime) {
  124. $("#visibility_container").show();
  125. }
  126. });
  127. $("#access_end_date").on("change", function() {
  128. content = $(this).val();
  129. if (content.length > 0) {
  130. $("#visibility_container").show();
  131. } else {
  132. $("#visibility_container").hide();
  133. }
  134. });
  135. $("#coach_access_start_date").datetimepicker({
  136. dateFormat: "yy-mm-dd",
  137. hour: 9,
  138. onSelect: function(selectedDateTime) {
  139. var start = $(this).datetimepicker("getDate");
  140. //$("#coach_access_end_date").val(selectedDateTime);
  141. }
  142. });
  143. $("#coach_access_end_date").datetimepicker({
  144. dateFormat: "yy-mm-dd"
  145. });
  146. });
  147. </script>';
  148. $form = new FormValidator('add_session', 'post', $url_action);
  149. $form->addElement('header', $tool_name);
  150. //Name
  151. $form->addElement('text', 'name', get_lang('SessionName'), array('class' => 'span6'));
  152. $form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
  153. if (empty($id)) {
  154. $form->addRule('name', get_lang('SessionNameAlreadyExists'), 'callback', 'check_session_name');
  155. } else {
  156. $form->addElement('hidden', 'id', $id);
  157. }
  158. //Coaches
  159. //$coaches = SessionManager::get_user_list();
  160. if (api_is_platform_admin()) {
  161. $form->addElement('select', 'id_coach', get_lang('CoachName'), array(), array('id' => 'coach_id'));
  162. $form->addRule('id_coach', get_lang('ThisFieldIsRequired'), 'required');
  163. } else {
  164. $form->addElement('hidden', 'id_coach', api_get_user_id());
  165. }
  166. $form->addElement('advanced_settings','<a class="btn btn-show advanced_parameters" id="advanced_params" href="javascript://">'.get_lang('AdvancedParameters').'</a>');
  167. $form->addElement('html','<div id="advanced_params_options" style="display:none">');
  168. //Dates
  169. $form->addElement('text', 'display_start_date', array(get_lang('SessionDisplayStartDate'), get_lang('SessionDisplayStartDateComment')), array('id' => 'display_start_date'));
  170. $form->addElement('text', 'display_end_date', array(get_lang('SessionDisplayEndDate'), get_lang('SessionDisplayEndDateComment')), array('id' => 'display_end_date'));
  171. $form->addRule(array('display_start_date', 'display_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
  172. $form->addElement('text', 'access_start_date', array(get_lang('SessionStartDate'), get_lang('SessionStartDateComment')), array('id' => 'access_start_date'));
  173. $form->addElement('text', 'access_end_date', array(get_lang('SessionEndDate'), get_lang('SessionEndDateComment')), array('id' => 'access_end_date'));
  174. $form->addRule(array('access_start_date', 'access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
  175. //Visibility
  176. $visibility_list = array(SESSION_VISIBLE_READ_ONLY=>get_lang('SessionReadOnly'), SESSION_VISIBLE=>get_lang('SessionAccessible'), SESSION_INVISIBLE=>api_ucfirst(get_lang('SessionNotAccessible')));
  177. $form->addElement('html','<div id="visibility_container">');
  178. $form->addElement('select', 'visibility', get_lang('SessionVisibility'), $visibility_list, array('id' => 'visibility'));
  179. $form->addElement('html','</div>');
  180. $form->addElement('text', 'coach_access_start_date', array(get_lang('SessionCoachStartDate'), get_lang('SessionCoachStartDateComment')), array('id' => 'coach_access_start_date'));
  181. $form->addElement('text', 'coach_access_end_date', array(get_lang('SessionCoachEndDate'), get_lang('SessionCoachEndDateComment')), array('id' => 'coach_access_end_date'));
  182. $form->addRule(array('coach_access_start_date', 'coach_access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
  183. //Session categories
  184. $categories = SessionManager::get_all_session_category();
  185. $select_categories = array();
  186. if (!empty($categories)) {
  187. $select_categories = array('0' => get_lang('None'));
  188. foreach ($categories as $row) {
  189. $select_categories[$row['id']] = $row['name'];
  190. }
  191. }
  192. $form->addElement('select', 'session_category_id', get_lang('SessionCategory'), $select_categories, array('id' => 'session_category_id_name', 'class' => null));
  193. //Extra fields
  194. $extra_field = new ExtraField('session');
  195. $extra = $extra_field->addElements($form, $id);
  196. $htmlHeadXtra[] ='<script>
  197. $(function() {
  198. '.$extra['jquery_ready_content'].'
  199. });
  200. </script>';
  201. $form->addElement('html','</div>');
  202. $form->addElement('button', 'submit', $button);
  203. if (!empty($session_info)) {
  204. $session_info['display_start_date'] = api_get_local_time($session_info['display_start_date'], null, null, true);
  205. $session_info['display_end_date'] = api_get_local_time($session_info['display_end_date'], null, null, true);
  206. $session_info['access_start_date'] = api_get_local_time($session_info['access_start_date'], null, null, true);
  207. $session_info['access_end_date'] = api_get_local_time($session_info['access_end_date'], null, null, true);
  208. $session_info['coach_access_start_date'] = api_get_local_time($session_info['coach_access_start_date'], null, null, true);
  209. $session_info['coach_access_end_date'] = api_get_local_time($session_info['coach_access_end_date'], null, null, true);
  210. $form->setDefaults($session_info);
  211. }
  212. if ($form->validate()) {
  213. $params = $form->getSubmitValues();
  214. if (isset($params['id'])) {
  215. SessionManager::update($params);
  216. header('Location: resume_session.php?id_session='.$params['id']);
  217. exit;
  218. } else {
  219. $session_id = SessionManager::add($params);
  220. if ($session_id) {
  221. // integer => no error on session creation
  222. header('Location: add_courses_to_session.php?id_session='.$session_id.'&add=true&msg=');
  223. exit;
  224. }
  225. }
  226. }
  227. function check_session_name($name) {
  228. $session = SessionManager::get_session_by_name($name);
  229. return empty($session) ? true : false;
  230. }
  231. Display::display_header($tool_name);
  232. echo '<div class="actions">';
  233. echo '<a href="'.api_get_path(WEB_CODE_PATH).'session/session_list.php">'.
  234. Display::return_icon('back.png', get_lang('BackTo').' '.get_lang('PlatformAdmin'),'',ICON_SIZE_MEDIUM).
  235. '</a>';
  236. echo '</div>';
  237. $form->display();