/** * Edits a question for the question manager * * @param Application $app * @param int $id * @return Response */ public function editQuestionAction(Application $app, $id) { $extraJS = array(); //@todo improve this JS includes should be added using twig $extraJS[] = '<link href="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/tag/style.css" rel="stylesheet" type="text/css" />'; $extraJS[] = '<script src="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>'; $app['extraJS'] = $extraJS; // Setting exercise obj. $exercise = new \Exercise(); $exercise->edit_exercise_in_lp = true; // Setting question obj. /** @var \Question $question */ $question = \Question::read($id, null, $exercise); $question->submitClass = "btn save"; $question->submitText = get_lang('ModifyQuestion'); $question->setDefaultValues = true; // Generating edit URL. $url = $app['url_generator']->generate('admin_questions_edit', array('id' => $id)); // Creating a new form $form = new \FormValidator('edit_question', 'post', $url); $extraFields = new \ExtraField('question'); $extraFields->addElements($form, $id); // Validating if there are extra fields to modify. if (count($form->_elements) > 1) { $form->addElement('button', 'submit', get_lang('Update')); $app['template']->assign('question', $question); $app['template']->assign('form', $form->toHtml()); } else { $app['template']->assign('message', \Display::return_message(get_lang('ThereAreNotExtrafieldsAvailable'), 'warning')); } // If form was submitted. if ($form->validate()) { $field_value = new \ExtraFieldValue('question'); $params = $form->exportValues(); $params['question_id'] = $id; $field_value->save_field_values($params); $app['template']->assign('message', \Display::return_message(get_lang('ItemUpdated'), 'success')); $url = $app['url_generator']->generate('admin_questions_edit', array('id' => $id)); return $app->redirect($url); } $response = $app['template']->render_template('admin/questionmanager/edit_question.tpl'); return new Response($response, 200, array()); }
/** * Edits a question for the question manager * * @Route("/edit") * @Method({"GET"}) * @param int $id * @return Response */ public function editQuestionAction($id) { // Setting exercise obj. $exercise = new \Exercise(); $exercise->edit_exercise_in_lp = true; // Setting question obj. /** @var \Question $question */ $question = \Question::read($id, null, $exercise); $question->submitClass = "btn save"; $question->submitText = get_lang('ModifyQuestion'); $question->setDefaultValues = true; // Generating edit URL. $url = $this->generateControllerUrl('editQuestionAction', array('id' => $id)); // Creating a new form $form = new \FormValidator('edit_question', 'post', $url); $extraFields = new \ExtraField('question'); $extraFields->addElements($form, $id); // Validating if there are extra fields to modify. if (count($form->_elements) > 1) { $form->addElement('button', 'submit', get_lang('Update')); $this->getTemplate()->assign('question', $question); $this->getTemplate()->assign('form', $form->toHtml()); } else { $this->addFlash('warning', get_lang('ThereAreNotExtrafieldsAvailable')); } // If form was submitted. if ($form->validate()) { $field_value = new \ExtraFieldValue('question'); $params = $form->exportValues(); $params['question_id'] = $id; $field_value->save_field_values($params); $this->addFlash('success', get_lang('ItemUpdated')); $url = $this->generateControllerUrl('editQuestionAction', array('id' => $id)); return $this->redirect($url); } $response = $this->renderTemplate('edit_question.tpl'); return new Response($response, 200, array()); }
/** * Creates the form to create / edit a question * A subclass can redifine this function to add fields... * * @param \FormValidator $form the formvalidator instance (by reference) * @param array $fck_config */ public function createForm(&$form, $fck_config = array()) { $maxCategories = 1; $url = api_get_path(WEB_AJAX_PATH) . 'exercise.ajax.php?1=1'; $js = null; if ($this->type != MEDIA_QUESTION) { $js = '<script> function check() { var counter = 0; $("#category_id option:selected").each(function() { var id = $(this).val(); var name = $(this).text(); if (id != "" ) { // if a media question was selected $("#parent_id option:selected").each(function() { var questionId = $(this).val(); if (questionId != 0) { if (counter >= 1) { alert("' . addslashes(get_lang('YouCantAddAnotherCategory')) . '"); $("#category_id").trigger("removeItem",[{ "value" : id}]); return; } } }); $.ajax({ async: false, url: "' . $url . '&a=exercise_category_exists", data: "id="+id, success: function(return_value) { if (return_value == 0 ) { alert("' . addslashes(get_lang('CategoryDoesNotExists')) . '"); // Deleting select option tag $("#category_id").find("option").remove(); $(".holder li").each(function () { if ($(this).attr("rel") == id) { $(this).remove(); } }); } }, }); } counter++; }); } $(function() { $("#category_id").fcbkcomplete({ json_url: "' . $url . '&a=search_category_parent&type=all&filter_by_global=' . $this->exercise->getGlobalCategoryId() . '", maxitems: "' . $maxCategories . '", addontab: false, input_min_size: 1, cache: false, complete_text:"' . get_lang('StartToType') . '", firstselected: false, onselect: check, filter_selected: true, newel: true }); // Change select media $("#parent_id").change(function(){ $("#parent_id option:selected").each(function() { var questionId = $(this).val(); if (questionId != 0) { $.ajax({ async: false, dataType: "json", url: "' . $url . '&a=get_categories_by_media&questionId=' . $this->id . '&exerciseId=' . $this->exercise->id . '", data: "mediaId="+questionId, success: function(data) { if (data != -1) { var all = $("#category_id").trigger("selectAll"); all.each(function(index, value) { var selected = $(value).find("option:selected"); selected.each(function( indexSelect, valueSelect) { valueToRemove = $(valueSelect).val(); $("#category_id").trigger("removeItem",[{ "value" : valueToRemove}]); }); }); if (data != 0) { $("#category_id").trigger("addItem",[{"title": data.title, "value": data.value}]); } } }, }); } else { // Removes all items var all = $("#category_id").trigger("selectAll"); all.each(function(index, value) { var selected = $(value).find("option:selected"); selected.each(function( indexSelect, valueSelect) { valueToRemove = $(valueSelect).val(); $("#category_id").trigger("removeItem", [{ "value" : valueToRemove}]); }); }); } }); }); }); // hub 13-12-2010 function visiblerDevisibler(in_id) { if (document.getElementById(in_id)) { if (document.getElementById(in_id).style.display == "none") { document.getElementById(in_id).style.display = "block"; if (document.getElementById(in_id+"Img")) { document.getElementById(in_id+"Img").html = "' . addslashes(Display::return_icon('div_hide.gif')) . '"; } } else { document.getElementById(in_id).style.display = "none"; if (document.getElementById(in_id+"Img")) { document.getElementById(in_id+"Img").html = "dsdsds' . addslashes(Display::return_icon('div_show.gif')) . '"; } } } } </script>'; $form->addElement('html', $js); } // question name $form->addElement('text', 'questionName', get_lang('Question'), array('class' => 'span6')); $form->addRule('questionName', get_lang('GiveQuestion'), 'required'); // Default content. $isContent = isset($_REQUEST['isContent']) ? intval($_REQUEST['isContent']) : null; // Question type $answerType = isset($_REQUEST['answerType']) ? intval($_REQUEST['answerType']) : $this->selectType(); $form->addElement('hidden', 'answerType', $answerType); // html editor $editor_config = array('ToolbarSet' => 'TestQuestionDescription', 'Width' => '100%', 'Height' => '150'); if (is_array($fck_config)) { $editor_config = array_merge($editor_config, $fck_config); } if (!api_is_allowed_to_edit(null, true)) { $editor_config['UserStatus'] = 'student'; } $form->add_html_editor('questionDescription', get_lang('QuestionDescription'), false, false, $editor_config); // hidden values $my_id = isset($_REQUEST['myid']) ? intval($_REQUEST['myid']) : null; $form->addElement('hidden', 'myid', $my_id); if ($this->type != MEDIA_QUESTION) { if ($this->exercise->fastEdition == false) { // Advanced parameters $form->addElement('advanced_settings', 'advanced_params', get_lang('AdvancedParameters')); $form->addElement('html', '<div id="advanced_params_options" style="display:none;">'); } // Level (difficulty). $select_level = Question::get_default_levels(); $form->addElement('select', 'questionLevel', get_lang('Difficulty'), $select_level); // Media question. $course_medias = Question::prepare_course_media_select(api_get_course_int_id()); $form->addElement('select', 'parent_id', get_lang('AttachToMedia'), $course_medias, array('id' => 'parent_id')); // Categories. $categoryJS = null; if (!empty($this->category_list)) { $trigger = ''; foreach ($this->category_list as $category_id) { if (!empty($category_id)) { $cat = new Testcategory($category_id); if ($cat->id) { $trigger .= '$("#category_id").trigger("addItem",[{"title": "' . $cat->parent_path . '", "value": "' . $cat->id . '"}]);'; } } } $categoryJS .= '<script>$(function() { ' . $trigger . ' });</script>'; } $form->addElement('html', $categoryJS); $form->addElement('select', 'questionCategory', get_lang('Category'), array(), array('id' => 'category_id')); // Extra fields. (Injecting question extra fields!) $extraFields = new ExtraField('question'); $extraFields->addElements($form, $this->id); if ($this->exercise->fastEdition == false) { $form->addElement('html', '</div>'); } } // @todo why we need this condition?? if ($this->setDefaultQuestionValues) { switch ($answerType) { case 1: $this->question = get_lang('DefaultUniqueQuestion'); break; case 2: $this->question = get_lang('DefaultMultipleQuestion'); break; case 3: $this->question = get_lang('DefaultFillBlankQuestion'); break; case 4: $this->question = get_lang('DefaultMathingQuestion'); break; case 5: $this->question = get_lang('DefaultOpenQuestion'); break; case 9: $this->question = get_lang('DefaultMultipleQuestion'); break; } } // default values $defaults = array(); $defaults['questionName'] = $this->question; $defaults['questionDescription'] = $this->description; $defaults['questionLevel'] = $this->level; $defaults['questionCategory'] = $this->category_list; $defaults['parent_id'] = $this->parent_id; if (!empty($_REQUEST['myid'])) { $form->setDefaults($defaults); } else { if ($isContent == 1) { $form->setDefaults($defaults); } } if ($this->setDefaultValues) { $form->setDefaults($defaults); } }
$form->addElement('checkbox', 'activate_end_date_check', null, get_lang('EnableEndTime'), array('onclick' => 'activate_end_date()')); $display_date = 'none'; if ($expired_on != '0000-00-00 00:00:00' && !empty($expired_on)) { $display_date = 'block'; $defaults['activate_end_date_check'] = 1; } $form->addElement('html', '<div id="end_date_div" style="display:' . $display_date . ';">'); $form->addElement('datepicker', 'expired_on', get_lang('ExpirationDate'), array('form_name' => 'exercise_admin'), 5); $form->addElement('html', '</div>'); if (api_is_platform_admin()) { $form->addElement('checkbox', 'use_max_score', null, get_lang('UseMaxScore100')); $defaults['use_max_score'] = $_SESSION['oLP']->use_max_score; } $form->addElement('checkbox', 'subscribe_users', null, get_lang('SubscribeUsersToLP')); $extraField = new ExtraField('lp'); $extra = $extraField->addElements($form, $_SESSION['oLP']->get_id()); $htmlHeadXtra[] = '<script src="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>'; $htmlHeadXtra[] = '<link href="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/tag/style.css" rel="stylesheet" type="text/css" />'; $htmlHeadXtra[] = '<script> $(function() { ' . $extra['jquery_ready_content'] . ' }); </script>'; //Submit button $form->addElement('style_submit_button', 'Submit', get_lang('SaveLPSettings'), 'class="save"'); // Hidden fields $form->addElement('hidden', 'action', 'update_lp'); $form->addElement('hidden', 'lp_id', $_SESSION['oLP']->get_id()); $defaults['publicated_on'] = $publicated_on != '0000-00-00 00:00:00' && !empty($publicated_on) ? api_get_local_time($publicated_on) : date('Y-m-d 12:00:00'); $defaults['expired_on'] = $expired_on != '0000-00-00 00:00:00' && !empty($expired_on) ? api_get_local_time($expired_on) : date('Y-m-d 12:00:00', time() + 84600); $defaults['max_attempts'] = $_SESSION['oLP']->get_max_attempts();
$form->addGroup($group, '', get_lang('CourseAccess'), '<br />'); $group = array(); $group[] = $form->createElement('radio', 'subscribe', get_lang('Subscription'), get_lang('Allowed'), 1); $group[] = $form->createElement('radio', 'subscribe', null, get_lang('Denied'), 0); $form->addGroup($group, '', get_lang('Subscription'), '<br />'); $group = array(); $group[] = $form->createElement('radio', 'unsubscribe', get_lang('Unsubscription'), get_lang('AllowedToUnsubscribe'), 1); $group[] = $form->createElement('radio', 'unsubscribe', null, get_lang('NotAllowedToUnsubscribe'), 0); $form->addGroup($group, '', get_lang('Unsubscription'), '<br />'); $form->addElement('text', 'disk_quota', array(get_lang('CourseQuota'), null, get_lang('MB'))); $form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric'); $obj = new GradeModel(); $obj->fill_grade_model_select_in_form($form); //Extra fields $extra_field = new ExtraField('course'); $extra = $extra_field->addElements($form); $htmlHeadXtra[] = ' <script> $(function() { ' . $extra['jquery_ready_content'] . ' }); </script>'; $form->add_progress_bar(); $form->addButtonCreate(get_lang('CreateCourse')); // Set some default values. $values['course_language'] = api_get_setting('platformLanguage'); $values['disk_quota'] = round(api_get_setting('default_document_quotum') / 1024 / 1024, 1); $default_course_visibility = api_get_setting('courses_default_creation_visibility'); if (isset($default_course_visibility)) { $values['visibility'] = api_get_setting('courses_default_creation_visibility');
$form->addRule('competences', get_lang('ThisFieldIsRequired'), 'required'); } if (api_get_setting_in_list('registration.extendedprofile_registration', 'mydiplomas') == 'true' && api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'mydiplomas') == 'true') { $form->addRule('diplomas', get_lang('ThisFieldIsRequired'), 'required'); } if (api_get_setting_in_list('registration.extendedprofile_registration', 'myteach') == 'true' && api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'myteach') == 'true') { $form->addRule('teach', get_lang('ThisFieldIsRequired'), 'required'); } if (api_get_setting_in_list('registration.extendedprofile_registration', 'mypersonalopenarea') == 'true' && api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'mypersonalopenarea') == 'true') { $form->addRule('openarea', get_lang('ThisFieldIsRequired'), 'required'); } } // EXTRA FIELDS if (in_array('extra_fields', $allowedFields)) { $extraField = new ExtraField('user'); $returnParams = $extraField->addElements($form); } } if (isset($_SESSION['user_language_choice']) && $_SESSION['user_language_choice'] != '') { $defaults['language'] = $_SESSION['user_language_choice']; } else { $defaults['language'] = api_get_setting('language.platform_language'); } if (!empty($_GET['username'])) { $defaults['username'] = Security::remove_XSS($_GET['username']); } if (!empty($_GET['email'])) { $defaults['email'] = Security::remove_XSS($_GET['email']); } if (!empty($_GET['phone'])) { $defaults['phone'] = Security::remove_XSS($_GET['phone']);
$date = sprintf(get_lang('CreatedByXYOnZ'), 'user_information.php?user_id=' . $user_data['creator_id'], $creatorInfo['username'], $user_data['registration_date']); $form->addElement('label', get_lang('RegistrationDate'), $date); if (!$user_data['platform_admin']) { // Expiration Date $form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), get_lang('NeverExpires'), 0); $group = array(); $group[] = $form->createElement('radio', 'radio_expiration_date', null, get_lang('Enabled'), 1); $group[] = $form->createElement('DateTimePicker', 'expiration_date', null, array('onchange' => 'javascript: enable_expiration_date();')); $form->addGroup($group, 'max_member_group', null, '', false); // Active account or inactive account $form->addElement('radio', 'active', get_lang('ActiveAccount'), get_lang('Active'), 1); $form->addElement('radio', 'active', '', get_lang('Inactive'), 0); } // EXTRA FIELDS $extraField = new ExtraField('user'); $returnParams = $extraField->addElements($form, $user_data['user_id']); $jquery_ready_content = $returnParams['jquery_ready_content']; // the $jquery_ready_content variable collects all functions that will be load in the $(document).ready javascript function $htmlHeadXtra[] = '<script> $(document).ready(function(){ ' . $jquery_ready_content . ' }); </script>'; // Submit button $form->addButtonSave(get_lang('Save')); // Set default values $user_data['reset_password'] = 0; $expiration_date = $user_data['expiration_date']; if (empty($expiration_date)) { $user_data['radio_expiration_date'] = 0; $user_data['expiration_date'] = api_get_local_time();
$group[] = $form->createElement('radio', 'visibility', null, get_lang('CourseVisibilityHidden'), COURSE_VISIBILITY_HIDDEN); $form->addGroup($group, '', get_lang('CourseAccess'), '<br />'); $group = array(); $group[] = $form->createElement('radio', 'subscribe', get_lang('Subscription'), get_lang('Allowed'), 1); $group[] = $form->createElement('radio', 'subscribe', null, get_lang('Denied'), 0); $form->addGroup($group, '', get_lang('Subscription'), '<br />'); $group = array(); $group[] = $form->createElement('radio', 'unsubscribe', get_lang('Unsubscription'), get_lang('AllowedToUnsubscribe'), 1); $group[] = $form->createElement('radio', 'unsubscribe', null, get_lang('NotAllowedToUnsubscribe'), 0); $form->addGroup($group, '', get_lang('Unsubscription'), '<br />'); $form->addElement('text', 'disk_quota', array(get_lang('CourseQuota'), null, get_lang('MB'))); $form->addRule('disk_quota', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric'); //Extra fields $extra_field = new ExtraField('course'); $extra = $extra_field->addElements($form, $courseId); $htmlHeadXtra[] = ' <script> $(function() { ' . $extra['jquery_ready_content'] . ' }); </script>'; $form->addButtonUpdate(get_lang('ModifyCourseInfo')); // Set some default values $courseInfo['disk_quota'] = round(DocumentManager::get_course_quota($courseInfo['code']) / 1024 / 1024, 1); $courseInfo['real_code'] = $courseInfo['code']; $courseInfo['add_teachers_to_sessions_courses'] = isset($courseInfo['add_teachers_to_sessions_courses']) ? $courseInfo['add_teachers_to_sessions_courses'] : 0; $form->setDefaults($courseInfo); // Validate form if ($form->validate()) { $course = $form->getSubmitValues();
if (is_platform_authentication() && is_profile_editable() && api_get_setting('profile', 'password') == 'true') { $form->addElement('password', 'password0', array(get_lang('Pass'), get_lang('Enter2passToChange')), array('size' => 40)); $form->addElement('password', 'password1', get_lang('NewPass'), array('id' => 'password1', 'size' => 40)); $checkPass = api_get_setting('security.allow_strength_pass_checker'); if ($checkPass == 'true') { $form->addElement('label', null, '<div id="password_progress"></div>'); } $form->addElement('password', 'password2', get_lang('Confirmation'), array('size' => 40)); // user must enter identical password twice so we can prevent some user errors $form->addRule(array('password1', 'password2'), get_lang('PassTwo'), 'compare'); if (CHECK_PASS_EASY_TO_FIND) { $form->addRule('password1', get_lang('CurrentPasswordEmptyOrIncorrect'), 'callback', 'api_check_password'); } } $extraField = new ExtraField('user'); $return = $extraField->addElements($form, api_get_user_id()); $jquery_ready_content = $return['jquery_ready_content']; // the $jquery_ready_content variable collects all functions that // will be load in the $(document).ready javascript function $htmlHeadXtra[] = '<script> $(document).ready(function(){ ' . $jquery_ready_content . ' }); </script>'; if (api_get_setting('profile', 'apikeys') == 'true') { $form->addElement('html', '<div id="div_api_key">'); $form->addElement('text', 'api_key_generate', get_lang('MyApiKey'), array('size' => 40, 'id' => 'id_api_key_generate')); $form->addElement('html', '</div>'); $form->addButton('generate_api_key', get_lang('GenerateApiKey'), 'cogs', 'default', 'default', null, ['id' => 'id_generate_api_key']); } // SUBMIT
/** * @param FormValidator $form * * @return array */ public static function setForm(FormValidator &$form, $sessionId = 0) { $categoriesList = SessionManager::get_all_session_category(); $userInfo = api_get_user_info(); $categoriesOptions = array('0' => get_lang('None')); if ($categoriesList != false) { foreach ($categoriesList as $categoryItem) { $categoriesOptions[$categoryItem['id']] = $categoryItem['name']; } } // Database Table Definitions $tbl_user = Database::get_main_table(TABLE_MAIN_USER); $form->addElement('text', 'name', get_lang('SessionName'), array('maxlength' => 50)); $form->addRule('name', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('name', get_lang('SessionNameAlreadyExists'), 'callback', 'check_session_name'); if (!api_is_platform_admin() && api_is_teacher()) { $form->addElement('select', 'coach_username', get_lang('CoachName'), [api_get_user_id() => $userInfo['complete_name']], array('id' => 'coach_username', 'class' => 'chzn-select', 'style' => 'width:370px;')); } else { $sql = "SELECT COUNT(1) FROM {$tbl_user} WHERE status = 1"; $rs = Database::query($sql); $countUsers = Database::result($rs, 0, 0); if (intval($countUsers) < 50) { $orderClause = "ORDER BY "; $orderClause .= api_sort_by_first_name() ? "firstname, lastname, username" : "lastname, firstname, username"; $sql = "SELECT user_id, lastname, firstname, username\n FROM {$tbl_user}\n WHERE status = '1' " . $orderClause; if (api_is_multiple_url_enabled()) { $userRelAccessUrlTable = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $accessUrlId = api_get_current_access_url_id(); if ($accessUrlId != -1) { $sql = "SELECT user.user_id, username, lastname, firstname\n FROM {$tbl_user} user\n INNER JOIN {$userRelAccessUrlTable} url_user\n ON (url_user.user_id = user.user_id)\n WHERE\n access_url_id = {$accessUrlId} AND\n status = 1 " . $orderClause; } } $result = Database::query($sql); $coachesList = Database::store_result($result); $coachesOptions = array(); foreach ($coachesList as $coachItem) { $coachesOptions[$coachItem['user_id']] = api_get_person_name($coachItem['firstname'], $coachItem['lastname']) . ' (' . $coachItem['username'] . ')'; } $form->addElement('select', 'coach_username', get_lang('CoachName'), $coachesOptions); } else { $form->addElement('select_ajax', 'coach_username', get_lang('CoachName'), null, ['url' => api_get_path(WEB_AJAX_PATH) . 'session.ajax.php?a=search_general_coach', 'width' => '100%']); } } $form->addRule('coach_username', get_lang('ThisFieldIsRequired'), 'required'); $form->addHtml('<div id="ajax_list_coachs"></div>'); $form->addButtonAdvancedSettings('advanced_params'); $form->addElement('html', '<div id="advanced_params_options" style="display:none">'); $form->addSelect('session_category', get_lang('SessionCategory'), $categoriesOptions, array('id' => 'session_category', 'class' => 'chzn-select', 'style' => 'width:370px;')); $form->addHtmlEditor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'Minimal')); $form->addElement('checkbox', 'show_description', null, get_lang('ShowDescription')); $visibilityGroup = array(); $visibilityGroup[] = $form->createElement('select', 'session_visibility', null, array(SESSION_VISIBLE_READ_ONLY => get_lang('SessionReadOnly'), SESSION_VISIBLE => get_lang('SessionAccessible'), SESSION_INVISIBLE => api_ucfirst(get_lang('SessionNotAccessible')))); $form->addGroup($visibilityGroup, 'visibility_group', get_lang('SessionVisibility'), null, false); $options = [0 => get_lang('ByDuration'), 1 => get_lang('ByDates')]; $form->addSelect('access', get_lang('Access'), $options, array('onchange' => 'accessSwitcher()', 'id' => 'access')); $form->addElement('html', '<div id="duration" style="display:none">'); $form->addElement('number', 'duration', array(get_lang('SessionDurationTitle'), get_lang('SessionDurationDescription')), array('maxlength' => 50)); $form->addElement('html', '</div>'); $form->addElement('html', '<div id="date_fields" style="display:none">'); // Dates $form->addDateTimePicker('access_start_date', array(get_lang('SessionStartDate'), get_lang('SessionStartDateComment')), array('id' => 'access_start_date')); $form->addDateTimePicker('access_end_date', array(get_lang('SessionEndDate'), get_lang('SessionEndDateComment')), array('id' => 'access_end_date')); $form->addRule(array('access_start_date', 'access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty'); $form->addDateTimePicker('display_start_date', array(get_lang('SessionDisplayStartDate'), get_lang('SessionDisplayStartDateComment')), array('id' => 'display_start_date')); $form->addDateTimePicker('display_end_date', array(get_lang('SessionDisplayEndDate'), get_lang('SessionDisplayEndDateComment')), array('id' => 'display_end_date')); $form->addRule(array('display_start_date', 'display_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty'); $form->addDateTimePicker('coach_access_start_date', array(get_lang('SessionCoachStartDate'), get_lang('SessionCoachStartDateComment')), array('id' => 'coach_access_start_date')); $form->addDateTimePicker('coach_access_end_date', array(get_lang('SessionCoachEndDate'), get_lang('SessionCoachEndDateComment')), array('id' => 'coach_access_end_date')); $form->addRule(array('coach_access_start_date', 'coach_access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty'); $form->addElement('html', '</div>'); $form->addCheckBox('send_subscription_notification', [get_lang('SendSubscriptionNotification'), get_lang('SendAnEmailWhenAUserBeingSubscribed')]); // Extra fields $extra_field = new ExtraField('session'); $extra = $extra_field->addElements($form, $sessionId); $form->addElement('html', '</div>'); $js = $extra['jquery_ready_content']; return ['js' => $js]; }
$form->addRule('disk_quota', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric'); $specialCourseField = new ExtraField('course'); $specialCourseFieldInfo = $specialCourseField->get_handler_field_info_by_field_variable('special_course'); if (!empty($specialCourseFieldInfo)) { $specialCourseValue = new ExtraFieldValue('course'); $specialCourseValueInfo = $specialCourseValue->get_values_by_handler_and_field_variable($course_code, 'special_course'); $specialCourseAttributes = array(); if (!empty($specialCourseValueInfo) && $specialCourseValueInfo['value'] == 1) { $specialCourseAttributes['checked'] = ''; } $form->addElement('checkbox', 'extra_special_course', array(null, get_lang('AllUsersAreAutomaticallyRegistered')), get_lang('SpecialCourse'), $specialCourseAttributes); } //Extra fields $extra_field = new ExtraField('course'); $extra = $extra_field->addElements($form, $courseId, ['special_course']); $htmlHeadXtra[] = ' <script> $(function() { ' . $extra['jquery_ready_content'] . ' }); </script>'; $form->addButtonUpdate(get_lang('ModifyCourseInfo')); // Set some default values $courseInfo['disk_quota'] = round(DocumentManager::get_course_quota($courseInfo['code']) / 1024 / 1024, 1); $courseInfo['real_code'] = $courseInfo['code']; $courseInfo['add_teachers_to_sessions_courses'] = isset($courseInfo['add_teachers_to_sessions_courses']) ? $courseInfo['add_teachers_to_sessions_courses'] : 0; $form->setDefaults($courseInfo); // Validate form if ($form->validate()) { $course = $form->getSubmitValues();
if (api_get_setting('profile.extended_profile') == 'true') { if (api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'mycomptetences') == 'true') { $form->addRule('competences', get_lang('ThisFieldIsRequired'), 'required'); } if (api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'mydiplomas') == 'true') { $form->addRule('diplomas', get_lang('ThisFieldIsRequired'), 'required'); } if (api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'myteach') == 'true') { $form->addRule('teach', get_lang('ThisFieldIsRequired'), 'required'); } if (api_get_setting_in_list('registration.extendedprofile_registrationrequired', 'mypersonalopenarea') == 'true') { $form->addRule('openarea', get_lang('ThisFieldIsRequired'), 'required'); } } $extraField = new ExtraField('user'); $extraField->addElements($form); } // Terms and conditions if (api_get_setting('registration.allow_terms_conditions') == 'true') { $language = api_get_interface_language(); $language = api_get_language_id($language); $term_preview = LegalManager::get_last_condition($language); if (!$term_preview) { //we load from the platform $language = api_get_setting('language.platform_language'); $language = api_get_language_id($language); $term_preview = LegalManager::get_last_condition($language); //if is false we load from english if (!$term_preview) { $language = api_get_language_id('english'); //this must work
$group[] = $form->createElement('radio', 'visibility', null, get_lang('CourseVisibilityHidden'), COURSE_VISIBILITY_HIDDEN); $form->addGroup($group, '', get_lang('CourseAccess'), '<br />'); $group = array(); $group[] = $form->createElement('radio', 'subscribe', get_lang('Subscription'), get_lang('Allowed'), 1); $group[] = $form->createElement('radio', 'subscribe', null, get_lang('Denied'), 0); $form->addGroup($group, '', get_lang('Subscription'), '<br />'); $group = array(); $group[] = $form->createElement('radio', 'unsubscribe', get_lang('Unsubscription'), get_lang('AllowedToUnsubscribe'), 1); $group[] = $form->createElement('radio', 'unsubscribe', null, get_lang('NotAllowedToUnsubscribe'), 0); $form->addGroup($group, '', get_lang('Unsubscription'), '<br />'); $form->addElement('text', 'disk_quota', array(get_lang('CourseQuota'), null, get_lang('MB'))); $form->addRule('disk_quota', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('disk_quota', get_lang('ThisFieldShouldBeNumeric'), 'numeric'); //Extra fields $extra_field = new ExtraField('course'); $extra = $extra_field->addElements($form, $course_code); $htmlHeadXtra[] = ' <script> $(function() { ' . $extra['jquery_ready_content'] . ' }); </script>'; $form->addElement('style_submit_button', 'button', get_lang('ModifyCourseInfo'), 'onclick="valide()"; class="save"'); // Set some default values //$course['disk_quota'] = round($course['disk_quota']/1024/1024, 1); $course['disk_quota'] = round(DocumentManager::get_course_quota($course_code) / 1024 / 1024, 1); $course['title'] = api_html_entity_decode($course['title'], ENT_QUOTES, $charset); $course['real_code'] = $course['code']; $form->setDefaults($course); // Validate form if ($form->validate()) {
if ($expired_on != '0000-00-00 00:00:00' && !empty($expired_on)) { $display_date = 'block'; $defaults['activate_end_date_check'] = 1; } $form->addElement('html', '<div id="end_date_div" style="display:' . $display_date . ';">'); $form->addElement('DatePicker', 'expired_on', get_lang('ExpirationDate')); $form->addElement('html', '</div>'); if (api_is_platform_admin()) { $form->addElement('checkbox', 'use_max_score', null, get_lang('UseMaxScore100')); $defaults['use_max_score'] = $learnpath->use_max_score; } $form->addElement('checkbox', 'subscribe_users', null, get_lang('SubscribeUsersToLp')); $enableLpExtraFields = false; if ($enableLpExtraFields) { $extraField = new ExtraField('lp'); $extra = $extraField->addElements($form, $learnpath->get_id()); } // Submit button $form->addButtonSave(get_lang('SaveLPSettings')); // Hidden fields $form->addElement('hidden', 'action', 'update_lp'); $form->addElement('hidden', 'lp_id', $learnpath->get_id()); if ($enableLpExtraFields) { $htmlHeadXtra[] = '<script> $(function() { ' . $extra['jquery_ready_content'] . ' }); </script>'; } $defaults['publicated_on'] = $publicated_on != '0000-00-00 00:00:00' && !empty($publicated_on) ? api_get_local_time($publicated_on) : date('Y-m-d 12:00:00'); $defaults['expired_on'] = $expired_on != '0000-00-00 00:00:00' && !empty($expired_on) ? api_get_local_time($expired_on) : date('Y-m-d 12:00:00', time() + 84600);