/** * function which redefine Question::createAnswersForm * @param FormValidator $form */ function createAnswersForm($form) { $form->addElement('text', 'weighting', get_lang('Weighting'), array('class' => 'span1')); global $text, $class; // setting the save button here and not in the question class.php $form->addButtonSave($text, 'submitQuestion'); if (!empty($this->id)) { $form->setDefaults(array('weighting' => float_format($this->weighting, 1))); } else { if ($this->isContent == 1) { $form->setDefaults(array('weighting' => '10')); } } }
/** * @param FormValidator $form * @param array $questionData * @param array $answers */ public function render(FormValidator $form, $questionData = array(), $answers = '') { $name = 'question' . $questionData['question_id']; $form->addSelect($name, null, $questionData['options']); if (!empty($answers)) { $form->setDefaults([$name => $answers]); } }
/** * @param FormValidator $form * @param array $questionData * @param string $answers */ public function render(FormValidator $form, $questionData = array(), $answers = '') { if (is_array($answers)) { $content = implode('', $answers); } else { $content = $answers; } $name = 'question' . $questionData['question_id']; $form->addTextarea($name, null); $form->setDefaults([$name => $answers]); }
/** * @param FormValidator $form * @param array $questionData * @param array $answers */ public function render(FormValidator $form, $questionData = array(), $answers = '') { $options = array('--' => '--'); foreach ($questionData['options'] as $key => &$value) { $options[$key] = $value; } $name = 'question' . $questionData['question_id']; $form->addSelect($name, null, $options); if (!empty($answers)) { $form->setDefaults([$name => $answers]); } }
/** * @todo move to testcategory.class.php * @param string $in_action */ function edit_category_form($in_action) { $in_action = Security::remove_XSS($in_action); if (isset($_GET['category_id']) && is_numeric($_GET['category_id'])) { $category_id = Security::remove_XSS($_GET['category_id']); $objcat = new Testcategory($category_id); // initiate the object $form = new FormValidator('note', 'post', api_get_self() . '?action=' . $in_action . '&category_id=' . $category_id); // settting the form elements $form->addElement('header', get_lang('EditCategory')); $form->addElement('hidden', 'category_id'); $form->addElement('text', 'category_name', get_lang('CategoryName'), array('size' => '95')); $form->add_html_editor('category_description', get_lang('CategoryDescription'), false, false, array('ToolbarSet' => 'test_category', 'Width' => '90%', 'Height' => '200')); $form->addElement('style_submit_button', 'SubmitNote', get_lang('ModifyCategory'), 'class="add"'); // setting the defaults $defaults = array(); $defaults["category_id"] = $objcat->id; $defaults["category_name"] = $objcat->name; $defaults["category_description"] = $objcat->description; $form->setDefaults($defaults); // setting the rules $form->addRule('category_name', get_lang('ThisFieldIsRequired'), 'required'); // The validation or display if ($form->validate()) { $check = Security::check_token('post'); if ($check) { $values = $form->exportValues(); $v_id = Security::remove_XSS($values['category_id']); $v_name = Security::remove_XSS($values['category_name'], COURSEMANAGER); $v_description = Security::remove_XSS($values['category_description'], COURSEMANAGER); $objcat = new Testcategory($v_id, $v_name, $v_description); if ($objcat->modifyCategory()) { Display::display_confirmation_message(get_lang('MofidfyCategoryDone')); } else { Display::display_confirmation_message(get_lang('ModifyCategoryError')); } } Security::clear_token(); } else { display_goback(); $token = Security::get_token(); $form->addElement('hidden', 'sec_token'); $form->setConstants(array('sec_token' => $token)); $form->display(); } } else { Display::display_error_message(get_lang('CannotEditCategory')); } }
/** * @param FormValidator $form * @param array $questionData * @param array $answers */ public function render(FormValidator $form, $questionData = array(), $answers = null) { if (is_array($questionData['options'])) { if ($questionData['display'] == 'vertical') { $class = 'radio'; } else { $class = 'radio-inline'; } $name = 'question' . $questionData['question_id']; $form->addRadio($name, null, $questionData['options'], ['radio-class' => $class, 'label-class' => $class]); if (!empty($answers)) { $form->setDefaults([$name => $answers]); } } }
/** * @param FormValidator $form * @param array $questionData * @param array $answers */ public function render(FormValidator $form, $questionData = array(), $answers = array()) { if ($questionData['display'] == 'vertical') { $class = 'checkbox'; } else { $class = 'checkbox-inline'; } $name = 'question' . $questionData['question_id']; $form->addCheckBoxGroup($name, null, $questionData['options'], array('checkbox-class' => $class, 'label-class' => $class)); $defaults = []; if (!empty($answers)) { foreach ($answers as $answer) { $defaults[$name . '[' . $answer . ']'] = true; } } $form->setDefaults($defaults); }
/** * Returns a form displaying all options for this tool. * These are * - make all files visible / invisible * - set the default visibility of uploaded files * @param $defaults * @return string The HTML form */ function settingsForm($defaults) { $is_allowed_to_edit = api_is_allowed_to_edit(null, true); if (!$is_allowed_to_edit) { return; } $url = api_get_path(WEB_CODE_PATH) . 'work/work.php?' . api_get_cidreq() . '&action=settings'; $form = new FormValidator('edit_settings', 'post', $url); $form->addElement('hidden', 'changeProperties', 1); $form->addElement('header', get_lang('EditToolOptions')); $group = array($form->createElement('radio', 'show_score', null, get_lang('NewVisible'), 0), $form->createElement('radio', 'show_score', null, get_lang('NewUnvisible'), 1)); $form->addGroup($group, '', get_lang('DefaultUpload')); $group = array($form->createElement('radio', 'student_delete_own_publication', null, get_lang('Yes'), 1), $form->createElement('radio', 'student_delete_own_publication', null, get_lang('No'), 0)); $form->addGroup($group, '', get_lang('StudentAllowedToDeleteOwnPublication')); $form->addButtonSave(get_lang('Save')); $form->setDefaults($defaults); return $form->returnForm(); }
/** * @param FormValidator $form * @param array $questionData * @param array $answers */ public function render(FormValidator $form, $questionData = array(), $answers = array()) { $defaults = []; foreach ($questionData['options'] as $key => &$value) { $options = array(); for ($i = 1; $i <= $questionData['maximum_score']; $i++) { $options[$i] = $i; } $name = 'question' . $questionData['question_id'] . '[' . $key . ']'; $form->addSelect($name, $value, $options); if (!empty($answers)) { if (in_array($key, array_keys($answers))) { $defaults[$name] = $answers[$key]; } } } if (!empty($defaults)) { $form->setDefaults($defaults); } }
/** * Returns a Form validator Obj * @param string $url * @param string $action add, edit * * @return FormValidator */ public function return_form($url, $action) { $form = new FormValidator('career', 'post', $url); // Setting the form elements $header = get_lang('Add'); if ($action == 'edit') { $header = get_lang('Modify'); } $form->addElement('header', $header); $id = isset($_GET['id']) ? intval($_GET['id']) : ''; $form->addElement('hidden', 'id', $id); $form->addElement('text', 'name', get_lang('Name'), array('size' => '70')); $form->addHtmlEditor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'careers', 'Width' => '100%', 'Height' => '250')); $status_list = $this->get_status_list(); $form->addElement('select', 'status', get_lang('Status'), $status_list); if ($action == 'edit') { $form->addElement('text', 'created_at', get_lang('CreatedAt')); $form->freeze('created_at'); } if ($action == 'edit') { $form->addButtonSave(get_lang('Modify'), 'submit'); } else { $form->addButtonCreate(get_lang('Add'), 'submit'); } // Setting the defaults $defaults = $this->get($id); if (!empty($defaults['created_at'])) { $defaults['created_at'] = api_convert_and_format_date($defaults['created_at']); } if (!empty($defaults['updated_at'])) { $defaults['updated_at'] = api_convert_and_format_date($defaults['updated_at']); } $form->setDefaults($defaults); // Setting the rules $form->addRule('name', get_lang('ThisFieldIsRequired'), 'required'); return $form; }
} $form->addElement('select', 'exercise_id', get_lang('Exercise'), $exercise_list); } //$form->addElement('submit','submit',get_lang('Filter')); $form->addElement('style_submit_button', 'submit', get_lang('Filter'), 'class="search"'); if (!empty($_REQUEST['score'])) { $filter_score = intval($_REQUEST['score']); } else { $filter_score = 70; } if (!empty($_REQUEST['exercise_id'])) { $exercise_id = intval($_REQUEST['exercise_id']); } else { $exercise_id = 0; } $form->setDefaults(array('score' => $filter_score)); if (!$export_to_xls) { Display::display_header(get_lang('Reporting')); echo '<div class="actions">'; if ($global) { echo '<a href="' . api_get_path(WEB_CODE_PATH) . 'auth/my_progress.php">' . Display::return_icon('stats.png', get_lang('MyStats'), '', ICON_SIZE_MEDIUM); echo '</a>'; echo '<span style="float:right">'; echo '<a href="' . api_get_self() . '?export=1&score=' . $filter_score . '&exercise_id=' . $exercise_id . '">' . Display::return_icon('export_excel.png', get_lang('ExportAsXLS'), '', ICON_SIZE_MEDIUM) . '</a>'; echo '<a href="javascript: void(0);" onclick="javascript: window.print()">' . Display::return_icon('printer.png', get_lang('Print'), '', ICON_SIZE_MEDIUM) . '</a>'; echo '</span>'; $menu_items[] = Display::url(Display::return_icon('teacher.png', get_lang('TeacherInterface'), array(), 32), api_get_path(WEB_CODE_PATH) . 'mySpace/?view=teacher'); if (api_is_platform_admin()) { $menu_items[] = Display::url(Display::return_icon('star.png', get_lang('AdminInterface'), array(), 32), api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin'); } else { $menu_items[] = Display::url(Display::return_icon('star.png', get_lang('CoachInterface'), array(), 32), api_get_path(WEB_CODE_PATH) . 'mySpace/?view=coach');
/** * function which redefines Question::createAnswersForm * @param FormValidator $form */ public function createAnswersForm($form) { $defaults = array(); if (!empty($this->id)) { $objectAnswer = new Answer($this->id); $answer = $objectAnswer->selectAnswer(1); $listAnswersInfo = FillBlanks::getAnswerInfo($answer); if ($listAnswersInfo["switchable"]) { $defaults['multiple_answer'] = 1; } else { $defaults['multiple_answer'] = 0; } //take the complete string except after the last '::' $defaults['answer'] = $listAnswersInfo["text"]; $defaults['select_separator'] = $listAnswersInfo["blankseparatornumber"]; $blanksepartornumber = $listAnswersInfo["blankseparatornumber"]; } else { $defaults['answer'] = get_lang('DefaultTextInBlanks'); $defaults['select_separator'] = 0; $blanksepartornumber = 0; } $blankSeparatorStart = self::getStartSeparator($blanksepartornumber); $blankSeparatorEnd = self::getEndSeparator($blanksepartornumber); $setValues = null; if (isset($a_weightings) && count($a_weightings) > 0) { foreach ($a_weightings as $i => $weighting) { $setValues .= 'document.getElementById("weighting[' . $i . ']").value = "' . $weighting . '";'; } } // javascript echo '<script> var blankSeparatortStart = "' . $blankSeparatorStart . '"; var blankSeparatortEnd = "' . $blankSeparatorEnd . '"; var blankSeparatortStartRegexp = getBlankSeparatorRegexp(blankSeparatortStart); var blankSeparatortEndRegexp = getBlankSeparatorRegexp(blankSeparatortEnd); CKEDITOR.on("instanceCreated", function(e) { if (e.editor.name === "answer") { e.editor.on("change", updateBlanks); } }); var firstTime = true; function updateBlanks() { if (firstTime) { var field = document.getElementById("answer"); var answer = field.value; } else { var answer = CKEDITOR.instances["answer"].getData(); } // disable the save button, if not blanks have been created $("button").attr("disabled", "disabled"); $("#defineoneblank").show(); var blanksRegexp = "/"+blankSeparatortStartRegexp+"[^"+blankSeparatortStartRegexp+"]*"+blankSeparatortEndRegexp+"/g"; var blanks = answer.match(eval(blanksRegexp)); var fields = "<div class=\\"form-group \\">"; fields += "<label class=\\"col-sm-2 control-label\\">' . get_lang('Weighting') . '</label>"; fields += "<div class=\\"col-sm-8\\">"; fields += "<table>"; fields += "<tr><th style=\\"padding:0 20px\\">' . get_lang("WordTofind") . '</th><th style=\\"padding:0 20px\\">' . get_lang("QuestionWeighting") . '</th><th style=\\"padding:0 20px\\">' . get_lang("BlankInputSize") . '</th></tr>"; if (blanks != null) { for (var i=0 ; i < blanks.length ; i++){ // remove forbidden characters that causes bugs blanks[i] = removeForbiddenChars(blanks[i]); // trim blanks between brackets blanks[i] = trimBlanksBetweenSeparator(blanks[i], blankSeparatortStart, blankSeparatortEnd); // if the word is empty [] if (blanks[i] == blankSeparatortStartRegexp+blankSeparatortEndRegexp) { break; } // get input size var lainputsize = 200; if ($("#samplesize\\\\["+i+"\\\\]").width()) { lainputsize = $("#samplesize\\\\["+i+"\\\\]").width(); } if (document.getElementById("weighting["+i+"]")) { var value = document.getElementById("weighting["+i+"]").value; } else { var value = "10"; } fields += "<tr>"; fields += "<td>"+blanks[i]+"</td>"; fields += "<td><input style=\\"width:35px\\" value=\\""+value+"\\" type=\\"text\\" id=\\"weighting["+i+"]\\" name=\\"weighting["+i+"]\\" /></td>"; fields += "<td>"; fields += "<input type=\\"button\\" value=\\"-\\" onclick=\\"changeInputSize(-1, "+i+")\\">"; fields += "<input type=\\"button\\" value=\\"+\\" onclick=\\"changeInputSize(1, "+i+")\\">"; fields += "<input value=\\""+blanks[i].substr(1, blanks[i].length - 2)+"\\" style=\\"width:"+lainputsize+"px\\" disabled=disabled id=\\"samplesize["+i+"]\\"/>"; fields += "<input type=\\"hidden\\" id=\\"sizeofinput["+i+"]\\" name=\\"sizeofinput["+i+"]\\" value=\\""+lainputsize+"\\" \\"/>"; fields += "</td>"; fields += "</tr>"; // enable the save button $("button").removeAttr("disabled"); $("#defineoneblank").hide(); } } document.getElementById("blanks_weighting").innerHTML = fields + "</table></div></div>"; if (firstTime) { firstTime = false; '; if (isset($listAnswersInfo) && count($listAnswersInfo["tabweighting"]) > 0) { foreach ($listAnswersInfo["tabweighting"] as $i => $weighting) { if (!empty($i)) { echo 'document.getElementById("weighting[' . $i . ']").value = "' . $weighting . '";'; } } foreach ($listAnswersInfo["tabinputsize"] as $i => $sizeOfInput) { if (!empty($i)) { echo 'document.getElementById("sizeofinput[' . $i . ']").value = "' . $sizeOfInput . '";'; echo '$("#samplesize\\\\[' . $i . '\\\\]").width(' . $sizeOfInput . ');'; } } } echo '} } window.onload = updateBlanks; function getInputSize() { var outTabSize = new Array(); $("input").each(function() { if ($(this).attr("id") && $(this).attr("id").match(/samplesize/)) { var tabidnum = $(this).attr("id").match(/\\d+/); var idnum = tabidnum[0]; var thewidth = $(this).next().attr("value"); tabInputSize[idnum] = thewidth; } }); } function changeInputSize(inCoef, inIdNum) { var currentWidth = $("#samplesize\\\\["+inIdNum+"\\\\]").width(); var newWidth = currentWidth + inCoef * 20; newWidth = Math.max(20, newWidth); newWidth = Math.min(newWidth, 600); $("#samplesize\\\\["+inIdNum+"\\\\]").width(newWidth); $("#sizeofinput\\\\["+inIdNum+"\\\\]").attr("value", newWidth); } function removeForbiddenChars(inTxt) { outTxt = inTxt; outTxt = outTxt.replace(/"/g, ""); // remove the char outTxt = outTxt.replace(/\\x22/g, ""); // remove the char outTxt = outTxt.replace(/"/g, ""); // remove the char outTxt = outTxt.replace(/\\\\/g, ""); // remove the \\ char outTxt = outTxt.replace(/ /g, " "); outTxt = outTxt.replace(/^ +/, ""); outTxt = outTxt.replace(/ +$/, ""); return outTxt; } function changeBlankSeparator() { var separatorNumber = $("#select_separator").val(); var tabSeparator = getSeparatorFromNumber(separatorNumber); blankSeparatortStart = tabSeparator[0]; blankSeparatortEnd = tabSeparator[1]; blankSeparatortStartRegexp = getBlankSeparatorRegexp(blankSeparatortStart); blankSeparatortEndRegexp = getBlankSeparatorRegexp(blankSeparatortEnd); updateBlanks(); } // this function is the same than the PHP one // if modify it modify the php one escapeForRegexp function getBlankSeparatorRegexp(inTxt) { var tabSpecialChar = new Array(".", "+", "*", "?", "[", "^", "]", "$", "(", ")", "{", "}", "=", "!", "<", ">", "|", ":", "-", ")"); for (var i=0; i < tabSpecialChar.length; i++) { if (inTxt == tabSpecialChar[i]) { return "\\\\"+inTxt; } } return inTxt; } // this function is the same than the PHP one // if modify it modify the php one getAllowedSeparator function getSeparatorFromNumber(innumber) { tabSeparator = new Array(); tabSeparator[0] = new Array("[", "]"); tabSeparator[1] = new Array("{", "}"); tabSeparator[2] = new Array("(", ")"); tabSeparator[3] = new Array("*", "*"); tabSeparator[4] = new Array("#", "#"); tabSeparator[5] = new Array("%", "%"); tabSeparator[6] = new Array("$", "$"); return tabSeparator[innumber]; } function trimBlanksBetweenSeparator(inTxt, inSeparatorStart, inSeparatorEnd) { // blankSeparatortStartRegexp // blankSeparatortEndRegexp var result = inTxt result = result.replace(inSeparatorStart, ""); result = result.replace(inSeparatorEnd, ""); result = result.trim(); return inSeparatorStart+result+inSeparatorEnd; } </script>'; // answer $form->addElement('label', null, '<br /><br />' . get_lang('TypeTextBelow') . ', ' . get_lang('And') . ' ' . get_lang('UseTagForBlank')); $form->addHtmlEditor('answer', Display::return_icon('fill_field.png'), ['id' => 'answer', 'onkeyup' => "javascript: updateBlanks(this);"], array('ToolbarSet' => 'TestQuestionDescription')); $form->addRule('answer', get_lang('GiveText'), 'required'); //added multiple answers $form->addElement('checkbox', 'multiple_answer', '', get_lang('FillInBlankSwitchable')); $form->addElement('select', 'select_separator', get_lang("SelectFillTheBlankSeparator"), self::getAllowedSeparatorForSelect(), ' id="select_separator" style="width:150px" onchange="changeBlankSeparator()" '); $form->addElement('label', null, '<input type="button" onclick="updateBlanks()" value="' . get_lang('RefreshBlanks') . '" class="btn btn-default" />'); $form->addElement('html', '<div id="blanks_weighting"></div>'); global $text; // setting the save button here and not in the question class.php $form->addElement('html', '<div id="defineoneblank" style="color:#D04A66; margin-left:160px">' . get_lang('DefineBlanks') . '</div>'); $form->addButtonSave($text, 'submitQuestion'); if (!empty($this->id)) { $form->setDefaults($defaults); } else { if ($this->isContent == 1) { $form->setDefaults($defaults); } } }
/** * function which redefines Question::createAnswersForm * @param FormValidator $form */ public function createAnswersForm($form) { $nb_answers = isset($_POST['nb_answers']) ? $_POST['nb_answers'] : 4; $nb_answers += isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0); $obj_ex = Session::read('objExercise'); /* Mise en variable de Affichage "Reponses" et son icone, "N�", "Vrai", "Reponse" */ $html = '<table class="data_table"> <tr> <th width="10px"> ' . get_lang('Number') . ' </th> <th width="10px"> ' . get_lang('True') . ' </th> <th width="50%"> ' . get_lang('Answer') . ' </th>'; $html .= '<th>' . get_lang('Comment') . '</th>'; $html .= '</tr>'; $form->addElement('label', get_lang('Answers') . '<br /> <img src="../img/fill_field.png">', $html); $defaults = array(); $correct = 0; $answer = false; if (!empty($this->id)) { $answer = new Answer($this->id); $answer->read(); if (count($answer->nbrAnswers) > 0 && !$form->isSubmitted()) { $nb_answers = $answer->nbrAnswers; } } #le nombre de r�ponses est bien enregistr� sous la forme int(nb) /* Ajout mise en forme nb reponse */ $form->addElement('hidden', 'nb_answers'); $boxes_names = array(); /* V�rification : Cr�action d'au moins une r�ponse */ if ($nb_answers < 1) { $nb_answers = 1; Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer')); } //D�but affichage score global dans la modification d'une question $scoreA = "0"; //par reponse $scoreG = "0"; //Global /* boucle pour sauvegarder les donn�es dans le tableau defaults */ for ($i = 1; $i <= $nb_answers; ++$i) { /* si la reponse est de type objet */ if (is_object($answer)) { $defaults['answer[' . $i . ']'] = $answer->answer[$i]; $defaults['comment[' . $i . ']'] = $answer->comment[$i]; $defaults['correct[' . $i . ']'] = $answer->correct[$i]; // start $scoreA = $answer->weighting[$i]; } if ($scoreA > 0) { $scoreG = $scoreG + $scoreA; } //------------- Fin //------------- Debut si un des scores par reponse est egal � 0 : la coche vaut 1 (coch�) if ($scoreA == 0) { $defaults['pts'] = 1; } $renderer =& $form->defaultRenderer(); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'correct[' . $i . ']'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'counter[' . $i . ']'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'answer[' . $i . ']'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'comment[' . $i . ']'); //$renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'weighting['.$i.']'); $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, 'value="' . $i . '"'); $answer_number->freeze(); $form->addElement('checkbox', 'correct[' . $i . ']', null, null, 'class="checkbox"'); $boxes_names[] = 'correct[' . $i . ']'; $form->addHtmlEditor('answer[' . $i . ']', null, null, array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100')); $form->addRule('answer[' . $i . ']', get_lang('ThisFieldIsRequired'), 'required'); $form->addHtmlEditor('comment[' . $i . ']', null, null, array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '100')); $form->addElement('html', '</tr>'); } //--------- Mise en variable du score global lors d'une modification de la question/r�ponse $defaults['weighting[1]'] = round($scoreG); $form->addElement('html', '</div></div></table>'); //$form -> addElement ('html', '<br />'); $form->add_multiple_required_rule($boxes_names, get_lang('ChooseAtLeastOneCheckbox'), 'multiple_required'); //only 1 answer the all deal ... $form->addElement('text', 'weighting[1]', get_lang('Score')); global $pts; //--------- Creation coche pour ne pas prendre en compte les n�gatifs $form->addElement('checkbox', 'pts', '', get_lang('NoNegativeScore')); $form->addElement('html', '<br />'); // Affiche un message si le score n'est pas renseign� $form->addRule('weighting[1]', get_lang('ThisFieldIsRequired'), 'required'); global $text, $class; if ($obj_ex->edit_exercise_in_lp == true) { $form->addButtonDelete(get_lang('LessAnswer'), 'lessAnswers'); $form->addButtonCreate(get_lang('PlusAnswer'), 'moreAnswers'); $form->addButtonSave($text, 'submitQuestion'); // setting the save button here and not in the question class.php } $renderer->setElementTemplate('{element} ', 'lessAnswers'); $renderer->setElementTemplate('{element} ', 'submitQuestion'); $renderer->setElementTemplate('{element}', 'moreAnswers'); $form->addElement('html', '</div></div>'); $defaults['correct'] = $correct; if (!empty($this->id)) { $form->setDefaults($defaults); } else { if ($this->isContent == 1) { $form->setDefaults($defaults); } } $form->setConstants(array('nb_answers' => $nb_answers)); }
} $values['group'] = isset($values['group']) ? $values['group'] : '0'; $form->addElement('checkbox', 'send_mail', null, get_lang('SendMail')); if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add') { $form->addElement('checkbox', 'add_to_calendar', null, get_lang('AddToCalendar')); $text = get_lang('AddNews'); $class = 'add'; $form->addElement('hidden', 'action', 'add'); } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'edit') { $text = get_lang('EditNews'); $class = 'save'; $form->addElement('hidden', 'action', 'edit'); } $form->addElement('checkbox', 'send_email_test', null, get_lang('SendOnlyAnEmailToMySelfToTest')); $form->addButtonSend($text, 'submit'); $form->setDefaults($values); if ($form->validate()) { $values = $form->exportValues(); if (!isset($values['visible_teacher'])) { $values['visible_teacher'] = false; } if (!isset($values['visible_student'])) { $values['visible_student'] = false; } if (!isset($values['visible_guest'])) { $values['visible_guest'] = false; } if ($values['lang'] == 'all') { $values['lang'] = null; } $sendMail = isset($values['send_mail']) ? $values['send_mail'] : null;
/** * @param int $id * @param string $action * * @return FormValidator */ public static function getCategoryForm($id, $action) { $form = new FormValidator('category', 'post', api_get_self() . '?action=' . $action . '&' . api_get_cidreq()); $defaults = []; if ($action == 'addcategory') { $form->addHeader(get_lang('CategoryAdd')); $my_cat_title = get_lang('CategoryAdd'); } else { $form->addHeader(get_lang('CategoryMod')); $my_cat_title = get_lang('CategoryMod'); $defaults = self::getCategory($id); } $form->addHidden('id', $id); $form->addText('category_title', get_lang('CategoryName')); $form->addTextarea('description', get_lang('Description')); $form->addButtonSave($my_cat_title, 'submitCategory'); $form->setDefaults($defaults); return $form; }
/** * function which redefines Question::createAnswersForm * @param FormValidator $form */ public function createAnswersForm($form) { // Getting the exercise list $obj_ex = $_SESSION['objExercise']; $editor_config = array('ToolbarSet' => 'TestProposedAnswer', 'Width' => '100%', 'Height' => '125'); //this line defines how many questions by default appear when creating a choice question // The previous default value was 2. See task #1759. $nb_answers = isset($_POST['nb_answers']) ? (int) $_POST['nb_answers'] : 4; $nb_answers += isset($_POST['lessAnswers']) ? -1 : (isset($_POST['moreAnswers']) ? 1 : 0); /* Types of Feedback $feedback_option[0]=get_lang('Feedback'); $feedback_option[1]=get_lang('DirectFeedback'); $feedback_option[2]=get_lang('NoFeedback'); */ $feedback_title = ''; if ($obj_ex->selectFeedbackType() == EXERCISE_FEEDBACK_TYPE_DIRECT) { //Scenario $editor_config['Width'] = '250'; $editor_config['Height'] = '110'; $comment_title = '<th width="500px" >' . get_lang('Comment') . '</th>'; $feedback_title = '<th width="350px" >' . get_lang('Scenario') . '</th>'; } else { $comment_title = '<th>' . get_lang('Comment') . '</th>'; } $html = '<table class="data_table"> <tr style="text-align: center;"> <th width="10px"> ' . get_lang('Number') . ' </th> <th width="10px" > ' . get_lang('True') . ' </th> <th width="50%"> ' . get_lang('Answer') . ' </th> ' . $comment_title . ' ' . $feedback_title . ' <th width="50px"> ' . get_lang('Weighting') . ' </th> </tr>'; $form->addElement('label', get_lang('Answers') . '<br /> <img src="../img/fill_field.png">', $html); $defaults = array(); $correct = 0; if (!empty($this->id)) { $answer = new Answer($this->id); $answer->read(); if (count($answer->nbrAnswers) > 0 && !$form->isSubmitted()) { $nb_answers = $answer->nbrAnswers; } } $form->addElement('hidden', 'nb_answers'); //Feedback SELECT $question_list = $obj_ex->selectQuestionList(); $select_question = array(); $select_question[0] = get_lang('SelectTargetQuestion'); require_once '../newscorm/learnpathList.class.php'; if (is_array($question_list)) { foreach ($question_list as $key => $questionid) { //To avoid warning messages if (!is_numeric($questionid)) { continue; } $question = Question::read($questionid); $select_question[$questionid] = 'Q' . $key . ' :' . cut($question->selectTitle(), 20); } } $select_question[-1] = get_lang('ExitTest'); $list = new LearnpathList(api_get_user_id()); $flat_list = $list->get_flat_list(); $select_lp_id = array(); $select_lp_id[0] = get_lang('SelectTargetLP'); foreach ($flat_list as $id => $details) { $select_lp_id[$id] = cut($details['lp_name'], 20); } $temp_scenario = array(); if ($nb_answers < 1) { $nb_answers = 1; Display::display_normal_message(get_lang('YouHaveToCreateAtLeastOneAnswer')); } for ($i = 1; $i <= $nb_answers; ++$i) { $form->addElement('html', '<tr>'); if (isset($answer) && is_object($answer)) { if ($answer->correct[$i]) { $correct = $i; } $defaults['answer[' . $i . ']'] = $answer->answer[$i]; $defaults['comment[' . $i . ']'] = $answer->comment[$i]; $defaults['weighting[' . $i . ']'] = float_format($answer->weighting[$i], 1); $item_list = explode('@@', $answer->destination[$i]); $try = $item_list[0]; $lp = $item_list[1]; $list_dest = $item_list[2]; $url = $item_list[3]; if ($try == 0) { $try_result = 0; } else { $try_result = 1; } if ($url == 0) { $url_result = ''; } else { $url_result = $url; } $temp_scenario['url' . $i] = $url_result; $temp_scenario['try' . $i] = $try_result; $temp_scenario['lp' . $i] = $lp; $temp_scenario['destination' . $i] = $list_dest; } else { $defaults['answer[1]'] = get_lang('DefaultUniqueAnswer1'); $defaults['weighting[1]'] = 10; $defaults['answer[2]'] = get_lang('DefaultUniqueAnswer2'); $defaults['weighting[2]'] = 0; $temp_scenario['destination' . $i] = array('0'); $temp_scenario['lp' . $i] = array('0'); } $defaults['scenario'] = $temp_scenario; $renderer = $form->defaultRenderer(); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'correct'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'counter[' . $i . ']'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'answer[' . $i . ']'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'comment[' . $i . ']'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}</td>', 'weighting[' . $i . ']'); $answer_number = $form->addElement('text', 'counter[' . $i . ']', null, ' value = "' . $i . '"'); $answer_number->freeze(); $form->addElement('radio', 'correct', null, null, $i, 'class="checkbox" style="margin-left: 0em;"'); $form->addElement('html_editor', 'answer[' . $i . ']', null, 'style="vertical-align:middle"', $editor_config); $form->addRule('answer[' . $i . ']', get_lang('ThisFieldIsRequired'), 'required'); if ($obj_ex->selectFeedbackType() == EXERCISE_FEEDBACK_TYPE_DIRECT) { $form->addElement('html_editor', 'comment[' . $i . ']', null, 'style="vertical-align:middle"', $editor_config); // Direct feedback //Adding extra feedback fields $group = array(); $group['try' . $i] = $form->createElement('checkbox', 'try' . $i, null, get_lang('TryAgain')); $group['lp' . $i] = $form->createElement('select', 'lp' . $i, get_lang('SeeTheory') . ': ', $select_lp_id); $group['destination' . $i] = $form->createElement('select', 'destination' . $i, get_lang('GoToQuestion') . ': ', $select_question); $group['url' . $i] = $form->createElement('text', 'url' . $i, get_lang('Other') . ': ', array('class' => 'span2', 'placeholder' => get_lang('Other'))); $form->addGroup($group, 'scenario'); $renderer->setElementTemplate('<td><!-- BEGIN error --><span class="form_error">{error}</span><!-- END error --><br/>{element}', 'scenario'); } else { $form->addElement('html_editor', 'comment[' . $i . ']', null, 'style="vertical-align:middle"', $editor_config); } $form->addElement('text', 'weighting[' . $i . ']', null, array('class' => "span1", 'value' => '0')); $form->addElement('html', '</tr>'); } $form->addElement('html', '</table>'); $form->addElement('html', '<br />'); $navigator_info = api_get_navigator(); global $text, $class; //ie6 fix if ($obj_ex->edit_exercise_in_lp == true) { if ($navigator_info['name'] == 'Internet Explorer' && $navigator_info['version'] == '6') { $form->addElement('submit', 'lessAnswers', get_lang('LessAnswer'), 'class="btn minus"'); $form->addElement('submit', 'moreAnswers', get_lang('PlusAnswer'), 'class="btn plus"'); $form->addElement('submit', 'submitQuestion', $text, 'class="' . $class . '"'); } else { //setting the save button here and not in the question class.php $form->addElement('style_submit_button', 'lessAnswers', get_lang('LessAnswer'), 'class="btn minus"'); $form->addElement('style_submit_button', 'moreAnswers', get_lang('PlusAnswer'), 'class="btn plus"'); $form->addElement('style_submit_button', 'submitQuestion', $text, 'class="' . $class . '"'); } } $renderer->setElementTemplate('{element} ', 'submitQuestion'); $renderer->setElementTemplate('{element} ', 'lessAnswers'); $renderer->setElementTemplate('{element} ', 'moreAnswers'); $form->addElement('html', '</div></div>'); // We check the first radio button to be sure a radio button will be check if ($correct == 0) { $correct = 1; } $defaults['correct'] = $correct; if (!empty($this->id)) { $form->setDefaults($defaults); } else { if ($this->isContent == 1) { // Default sample content. $form->setDefaults($defaults); } else { $form->setDefaults(array('correct' => 1)); } } $form->setConstants(array('nb_answers' => $nb_answers)); }
function manage_form($default, $select_from_user_list = null, $sent_to = null) { $group_id = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null; $message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null; $param_f = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null; $form = new FormValidator('compose_message', null, api_get_self() . '?f=' . $param_f, null, array('enctype' => 'multipart/form-data')); if (empty($group_id)) { if (isset($select_from_user_list)) { $form->addText('id_text_name', get_lang('SendMessageTo'), true, array('id' => 'id_text_name', 'onkeyup' => 'send_request_and_search()', 'autocomplete' => 'off')); $form->addRule('id_text_name', get_lang('ThisFieldIsRequired'), 'required'); $form->addElement('html', '<div id="id_div_search" style="padding:0px" class="message-select-box" > </div>'); $form->addElement('hidden', 'user_list', 0, array('id' => 'user_list')); } else { if (!empty($sent_to)) { $form->addLabel(get_lang('SendMessageTo'), $sent_to); } if (empty($default['users'])) { //fb select $form->addElement('select_ajax', 'users', get_lang('SendMessageTo'), array(), ['multiple' => 'multiple', 'url' => api_get_path(WEB_AJAX_PATH) . 'message.ajax.php?a=find_users']); } else { $form->addElement('hidden', 'hidden_user', $default['users'][0], array('id' => 'hidden_user')); } } } else { $userGroup = new UserGroup(); $group_info = $userGroup->get($group_id); $form->addElement('label', get_lang('ToGroup'), api_xml_http_response_encode($group_info['name'])); $form->addElement('hidden', 'group_id', $group_id); $form->addElement('hidden', 'parent_id', $message_id); } $form->addText('title', get_lang('Subject'), true); $form->addHtmlEditor('content', get_lang('Message'), false, false, array('ToolbarSet' => 'Messages', 'Width' => '100%', 'Height' => '250')); if (isset($_GET['re_id'])) { $message_reply_info = MessageManager::get_message_by_id($_GET['re_id']); $default['title'] = get_lang('MailSubjectReplyShort') . " " . $message_reply_info['title']; $form->addElement('hidden', 're_id', intval($_GET['re_id'])); $form->addElement('hidden', 'save_form', 'save_form'); //adding reply mail $user_reply_info = api_get_user_info($message_reply_info['user_sender_id']); $default['content'] = '<p><br/></p>' . sprintf(get_lang('XWroteY'), $user_reply_info['complete_name'], Security::filter_terms($message_reply_info['content'])); } if (empty($group_id)) { $form->addElement('label', '', '<div id="filepaths" class="form-group"> <div id="filepath_1"> <label>' . get_lang('FilesAttachment') . '</label> <input type="file" name="attach_1"/> <label>' . get_lang('Description') . '</label> <input id="file-descrtiption" type="text" name="legend[]" class="form-control"/> </div> </div>'); $form->addElement('label', '', '<span id="link-more-attach"><a href="javascript://" onclick="return add_image_form()">' . get_lang('AddOneMoreFile') . '</a></span> (' . sprintf(get_lang('MaximunFileSizeX'), format_file_size(api_get_setting('message.message_max_upload_filesize'))) . ')'); } $form->addButtonSend(get_lang('SendMessage'), 'compose'); $form->setRequiredNote('<span class="form_required">*</span> <small>' . get_lang('ThisFieldIsRequired') . '</small>'); if (!empty($group_id) && !empty($message_id)) { $message_info = MessageManager::get_message_by_id($message_id); $default['title'] = get_lang('MailSubjectReplyShort') . " " . $message_info['title']; } $form->setDefaults($default); $html = ''; if ($form->validate()) { $check = Security::check_token('post'); if ($check) { $user_list = $default['users']; $file_comments = $_POST['legend']; $title = $default['title']; $content = $default['content']; $group_id = isset($default['group_id']) ? $default['group_id'] : null; $parent_id = isset($default['parent_id']) ? $default['parent_id'] : null; if (is_array($user_list) && count($user_list) > 0) { //all is well, send the message foreach ($user_list as $user) { $res = MessageManager::send_message($user, $title, $content, $_FILES, $file_comments, $group_id, $parent_id); if ($res) { $html .= MessageManager::display_success_message($user); } } } else { Display::display_error_message('ErrorSendingMessage'); } } Security::clear_token(); } else { $token = Security::get_token(); $form->addElement('hidden', 'sec_token'); $form->setConstants(array('sec_token' => $token)); $html .= $form->returnForm(); } return $html; }
$actionsRight = Display::url(Display::return_icon('printer.png', get_lang('Print'), array(), 32), 'javascript: void(0);', array('onclick' => 'javascript: window.print();')); $actionsRight .= Display::url(Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), array(), 32), api_get_self() . '?export=csv'); } $toolbar = Display::toolbarAction('toolbar-session', $content = array(0 => $actionsLeft, 1 => $actionsRight)); echo $toolbar; echo Display::page_header(get_lang('YourSessionsList')); } else { $a_sessions = Tracking::get_sessions_coached_by_user($id_coach); } $form = new FormValidator('search_course', 'get', api_get_path(WEB_CODE_PATH) . 'mySpace/session.php'); $form->addElement('text', 'keyword', get_lang('Keyword')); $form->addButtonSearch(get_lang('Search')); $keyword = ''; if ($form->validate()) { $keyword = $form->getSubmitValue('keyword'); } $form->setDefaults(array('keyword' => $keyword)); $url = api_get_path(WEB_AJAX_PATH) . 'model.ajax.php?a=get_sessions_tracking&keyword=' . Security::remove_XSS($keyword); $columns = array(get_lang('Title'), get_lang('Date'), get_lang('NbCoursesPerSession'), get_lang('NbStudentPerSession'), get_lang('Details')); // Column config $columnModel = array(array('name' => 'name', 'index' => 'name', 'width' => '255', 'align' => 'left'), array('name' => 'date', 'index' => 'date', 'width' => '150', 'align' => 'left', 'sortable' => 'false'), array('name' => 'course_per_session', 'index' => 'course_per_session', 'width' => '150', 'sortable' => 'false'), array('name' => 'student_per_session', 'index' => 'student_per_session', 'width' => '100', 'sortable' => 'false'), array('name' => 'details', 'index' => 'details', 'width' => '100', 'sortable' => 'false')); $extraParams = array('autowidth' => 'true', 'height' => 'auto'); $js = '<script> $(function() { ' . Display::grid_js('session_tracking', $url, $columns, $columnModel, $extraParams, array(), null, true) . ' }); </script>'; echo $js; $form->display(); echo Display::grid_html('session_tracking'); Display::display_footer();
/** * Returns the form to update or create a document * * @param string Action (add/edit) * @param integer ID of the lp_item (if already exists) * @param mixed Integer if document ID, string if info ('new') * @return string HTML form */ function display_document_form($action = 'add', $id = 0, $extra_info = 'new') { global $charset, $_course; require_once api_get_path(LIBRARY_PATH) . 'fileUpload.lib.php'; require_once api_get_path(LIBRARY_PATH) . 'document.lib.php'; $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM); $tbl_doc = Database::get_course_table(TABLE_DOCUMENT); $path_parts = pathinfo($extra_info['dir']); $no_display_edit_textarea = false; //If action==edit document //We don't display the document form if it's not an editable document (html or txt file) if ($action == "edit") { if (is_array($extra_info)) { if ($path_parts['extension'] != "txt" && $path_parts['extension'] != "html") { $no_display_edit_textarea = true; } } } $no_display_add = false; //If action==add an existing document //We don't display the document form if it's not an editable document (html or txt file) if ($action == "add") { if (is_numeric($extra_info)) { $sql_doc = "SELECT path FROM " . $tbl_doc . "WHERE id = " . Database::escape_string($extra_info); $result = Database::query($sql_doc, __FILE__, __LINE__); $path_file = Database::result($result, 0, 0); $path_parts = pathinfo($path_file); if ($path_parts['extension'] != "txt" && $path_parts['extension'] != "html") { $no_display_add = true; } } } // create css folder $css_name = api_get_setting('stylesheets'); $perm = api_get_setting('permissions_for_new_directories'); $perm = octdec(!empty($perm) ? $perm : '0770'); $css_folder = api_get_path(SYS_COURSE_PATH) . $_course['path'] . '/document/css'; if (!is_dir($css_folder)) { mkdir($css_folder); chmod($css_folder, $perm); $doc_id = add_document($_course, '/css', 'folder', 0, 'css'); api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'FolderCreated', $_user['user_id']); api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', $_user['user_id']); } if (!file_exists($css_folder . '/templates.css')) { if (file_exists(api_get_path(SYS_PATH) . 'main/css/' . $css_name . '/templates.css')) { $template_content = str_replace('../../img/', api_get_path(REL_CODE_PATH) . 'img/', file_get_contents(api_get_path(SYS_PATH) . 'main/css/' . $css_name . '/templates.css')); $template_content = str_replace('images/', api_get_path(REL_CODE_PATH) . 'css/' . $css_name . '/images/', $template_content); file_put_contents($css_folder . '/templates.css', $template_content); } } if ($action == 'add' && (isset($_GET['tplid']) && $_GET['tplid'] >= 0)) { $table_sys_template = Database::get_main_table(TABLE_MAIN_SYSTEM_TEMPLATE); $user_id = api_get_user_id(); // Session used by the ajax request when we are using php 5.3 $_SESSION['dbName'] = $_course['dbName']; // setting some paths $img_dir = api_get_path(REL_CODE_PATH) . 'img/'; $default_course_dir = api_get_path(REL_CODE_PATH) . 'default_course_document/'; if (!isset($_GET['resource'])) { // Load a template into a document $query = 'SELECT content, title FROM ' . $table_sys_template . ' WHERE id=' . Database::escape_string(Security::remove_XSS($_GET['tplid'])); $result = Database::query($query, __FILE__, __LINE__); $obj = Database::fetch_object($result); $valcontent = $obj->content; $valtitle = $obj->title != '' ? get_lang($obj->title) : get_lang('Empty'); if (isset($_GET['tplid']) && $_GET['tplid'] == 0) { $valcontent = '<head>{CSS}<style type="text/css">.text{font-weight: normal;}</style></head><body></body>'; } $template_css = ''; if (strpos($valcontent, '/css/templates.css') === false) { $template_css = '<link rel="stylesheet" href="' . api_get_path(WEB_COURSE_PATH) . $_course['path'] . '/document/css/templates.css" type="text/css" />'; } $js = ''; if (strpos($valcontent, 'javascript/jquery.highlight.js') === false) { $js .= '<script type="text/javascript" src="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/jquery-1.4.2.min.js" language="javascript"></script>'; $js .= '<script type="text/javascript" src="' . api_get_path(WEB_LIBRARY_PATH) . 'jwplayer/jwplayer.js" language="javascript"></script>' . PHP_EOL; if (api_get_setting('show_glossary_in_documents') != 'none') { $js .= '<script language="javascript" src="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/jquery.highlight.js"></script>'; if (api_get_setting('show_glossary_in_documents') == 'ismanual') { $js .= '<script language="javascript" src="' . api_get_path(WEB_LIBRARY_PATH) . 'fckeditor/editor/plugins/glossary/fck_glossary_manual.js"></script>'; } else { $js .= '<script language="javascript" src="' . api_get_path(WEB_LIBRARY_PATH) . 'fckeditor/editor/plugins/glossary/fck_glossary_automatic.js"></script>'; } } } $valcontent = str_replace('{CSS}', $template_css . $js, $valcontent); if (strpos($valcontent, '/css/templates.css') === false) { $valcontent = str_replace('</head>', $template_css . '</head>', $valcontent); } if (strpos($valcontent, 'javascript/jquery.highlight.js') === false) { $valcontent = str_replace('</head>', $js . '</head>', $valcontent); } $valcontent = str_replace('{IMG_DIR}', $img_dir, $valcontent); $valcontent = str_replace('{REL_PATH}', api_get_path(REL_PATH), $valcontent); $valcontent = str_replace('{COURSE_DIR}', $default_course_dir, $valcontent); } elseif (isset($_GET['resource']) && $_GET['resource'] == 'mindmap' || $_GET['resource'] == 'video') { // Load a mindmap or video into a document $propTable = Database::get_course_table(TABLE_ITEM_PROPERTY); $curdirpath = '/mindmaps/'; if ($_GET['resource'] == 'video') { $curdirpath = '/video/'; $curdirpath_flv = '/video/flv/'; } $my_course = api_get_course_id(); $src_path = api_get_path(WEB_COURSE_PATH) . $my_course . '/document'; $sql = "SELECT path,title FROM {$tbl_doc} doc,{$propTable} prop WHERE doc.id = prop.ref AND prop.tool = '" . TOOL_DOCUMENT . "'\n AND doc.filetype = 'file' AND (doc.path LIKE '" . $curdirpath . "%' OR doc.path LIKE '" . $curdirpath_flv . "%') AND (doc.path NOT LIKE '" . $curdirpath . "%/%' OR doc.path NOT LIKE '" . $curdirpath_flv . "%/%')\n AND prop.visibility = 1 AND doc.id = '" . Database::escape_string(Security::remove_XSS($_GET['tplid'])) . "'"; $rs = Database::query($sql); $row = Database::fetch_array($rs); $resource = $src_path . $row['path']; $valtitle = $row['title']; if ($valtitle != '') { $search = array('.png', '.gif', '.jpg', '.mpg', '.flv', '.swf'); // Add other extensions $replace = array('', '', '', '', '', ''); $valtitle = str_replace($search, $replace, $valtitle); } if ($_GET['resource'] == 'mindmap') { $valcontent = '<table cellspacing="2" cellpadding="10" border="0" style="width: 95%; height: 500px;"> <tbody> <tr> <td valign="top"><img border="0" vspace="0" hspace="0" src="' . $resource . '" alt="' . $title . '" title="' . $title . '"/></td> </tr> </tbody> </table>'; } elseif ($_GET['resource'] == 'video') { $sys_resource = api_get_path(SYS_COURSE_PATH) . $my_course . '/document' . $row['path']; $resource_info = pathinfo($sys_resource); //$video_web_path = api_get_path(WEB_LIBRARY_PATH) . 'fckeditor/editor/plugins/flvPlayer/'; $valcontent = '<table cellspacing="2" cellpadding="10" border="0" style="width: 95%; height: 500px;"> <tbody> <tr> <td valign="top"> <!-- Video player plugin --> <div id="player986311-parent" align="left"> <div style="border-style: none; height: 240px; width: 375px; overflow: hidden; background-color: rgb(220, 220, 220);" id="test"> <div style="display: none; visibility: hidden; width: 0px; height: 0px; overflow: hidden;" id="player986311-config">url=' . $resource . ' width=375 height=240 loop=1 play=true downloadable=false fullscreen=true</div> <div class="thePlayer" id="player986311">'; if (in_array($resource_info['extension'], array('flv', 'mp4', 'mov'))) { /*if (!api_is_windows_os()) { $valcontent .= ' <script src="'.api_get_path(WEB_CODE_PATH).'inc/lib/fckeditor/editor/plugins/videoPlayer/jwplayer.min.js" type="text/javascript"></script> <object id="player986311-parent2" name="player986311-parent2" width="375" height="240" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="movie" value="'.api_get_path(WEB_CODE_PATH).'inc/lib/fckeditor/editor/plugins/videoPlayer/player.swf" /> <param name="allowFullScreen" value="true" /> <param name="allowscriptaccess" value="always" /> <param name="seamlesstabbing" value="true" /> <param name="wmode" value="transparent" /> <param name="flashvars" value="id=player986311-parent2&autostart=true&repeat=false&file='.$resource.'&skin='.api_get_path(WEB_CODE_PATH).'inc/lib/fckeditor/editor/plugins/videoPlayer/skins/facebook.zip&controlbar.position=over" /> </object> '; } else {*/ $valcontent .= ' <script src="' . api_get_path(WEB_CODE_PATH) . 'inc/lib/fckeditor/editor/plugins/videoPlayer/jwplayer.min.js" type="text/javascript"></script> <div id="player986311-parent2">Loading the player ...</div> <script type="text/javascript">jwplayer("player986311-parent2").setup({flashplayer: "' . api_get_path(WEB_CODE_PATH) . 'inc/lib/fckeditor/editor/plugins/videoPlayer/player.swf",autostart: "true",repeat: "always",file: "' . $resource . '",height: 240,width: 375,skin: "' . api_get_path(WEB_CODE_PATH) . 'inc/lib/fckeditor/editor/plugins/videoPlayer/skins/facebook.zip"});</script>'; //} } else { $sType = ''; if ($resource_info['extension'] == 'mpg' || $resource_info['extension'] == 'mpeg') { $sType = 'video/mpeg'; } else { if ($resource_info['extension'] == 'avi' || $resource_info['extension'] == 'wmv' || $resource_info['extension'] == 'asf') { $sType = 'video/x-msvideo'; } } $valcontent .= '<embed type="' . $sType . '" src="' . $resource . '" autosize = "false" autostart = "true" loop = "false" fullscreen = "true" showcontrols = "true" showpositioncontrols = "false" showtracker = "true" showaudiocontrols = "true" showgotobar = "true" showstatusbar = "true" pluginspace = "http://www.microsoft.com/Windows/MediaPlayer/" codebase = "http://www.microsoft.com/Windows/MediaPlayer/"'; $valcontent .= 'width="375px" height="240px"'; $valcontent .= '></embed>'; } $valcontent .= ' </div> </div> </div> </td> </tr> </tbody> </table>'; } } } if ($id != 0 && is_array($extra_info)) { $item_title = stripslashes($extra_info['title']); $item_description = stripslashes($extra_info['description']); $item_terms = stripslashes($extra_info['terms']); if (empty($item_title)) { $path_parts = pathinfo($extra_info['path']); $item_title = stripslashes($path_parts['filename']); } } elseif (is_numeric($extra_info)) { $sql_doc = "SELECT path, title\n\t\t\t\t\t\t\t\t\tFROM " . $tbl_doc . "\n\t\t\t\t\t\t\t\t\tWHERE id = " . Database::escape_string($extra_info); $result = Database::query($sql_doc, __FILE__, __LINE__); $row = Database::fetch_array($result); $explode = explode('.', $row['title']); if (count($explode) > 1) { for ($i = 0; $i < count($explode) - 1; $i++) { $item_title .= $explode[$i]; } } else { $item_title = $row['title']; } $item_title = str_replace('_', ' ', $item_title); if (empty($item_title)) { $path_parts = pathinfo($row['path']); $item_title = stripslashes($path_parts['filename']); } } else { $item_title = ''; $item_description = ''; } /* $return = ' <div class="row"> <div class="form_header">'; */ if ($id != 0 && is_array($extra_info)) { $parent = $extra_info['parent_item_id']; } else { $parent = 0; } $sql = "\n\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\tFROM " . $tbl_lp_item . "\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tlp_id = " . $this->lp_id; $result = Database::query($sql, __FILE__, __LINE__); $arrLP = array(); while ($row = Database::fetch_array($result)) { $arrLP[] = array('id' => $row['id'], 'item_type' => $row['item_type'], 'title' => $row['title'], 'path' => $row['path'], 'description' => $row['description'], 'parent_item_id' => $row['parent_item_id'], 'previous_item_id' => $row['previous_item_id'], 'next_item_id' => $row['next_item_id'], 'display_order' => $row['display_order'], 'max_score' => $row['max_score'], 'min_score' => $row['min_score'], 'mastery_score' => $row['mastery_score'], 'prerequisite' => $row['prerequisite']); } $this->tree_array($arrLP); $arrLP = $this->arrMenu; unset($this->arrMenu); if (isset($_GET['edit']) && $_GET['edit'] == 'true') { $return .= Display::return_warning_message('<strong>' . get_lang("Warning") . ' !</strong><br />' . get_lang("WarningEditingDocument"), false); } require_once api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php'; $form = new FormValidator('form', 'POST', api_get_self() . "?" . $_SERVER["QUERY_STRING"], '', 'enctype="multipart/form-data"'); $defaults["title"] = Security::remove_XSS(api_convert_encoding($item_title, api_get_system_encoding(), $this->encoding)); if (empty($item_title)) { $defaults["title"] = Security::remove_XSS($item_title); } $defaults["description"] = api_convert_encoding($item_description, $charset, $this->encoding); $form->addElement('html', $return); if ($action != 'move') { $form->addElement('html', '<div style="float:left;padding-right:135px;">'); $form->addElement('text', 'title', get_lang('Title'), 'id="idTitle" class="learnpath_item_form" size=44%'); $form->applyFilter('title', 'html_filter'); $form->addElement('html', '</div>'); } //$arrHide = array($id); $arrHide[0]['value'] = $this->name; $arrHide[0]['padding'] = 3; for ($i = 0; $i < count($arrLP); $i++) { if ($action != 'add') { if (($arrLP[$i]['item_type'] == 'dokeos_module' || $arrLP[$i]['item_type'] == 'dokeos_chapter' || $arrLP[$i]['item_type'] == 'dir') && !in_array($arrLP[$i]['id'], $arrHide) && !in_array($arrLP[$i]['parent_item_id'], $arrHide)) { $arrHide[$arrLP[$i]['id']]['value'] = $arrLP[$i]['title']; $arrHide[$arrLP[$i]['id']]['padding'] = 3 + $arrLP[$i]['depth'] * 10; if ($parent == $arrLP[$i]['id']) { $s_selected_parent = $arrHide[$arrLP[$i]['id']]; } } } else { if ($arrLP[$i]['item_type'] == 'dokeos_module' || $arrLP[$i]['item_type'] == 'dokeos_chapter' || $arrLP[$i]['item_type'] == 'dir') { $arrHide[$arrLP[$i]['id']]['value'] = $arrLP[$i]['title']; $arrHide[$arrLP[$i]['id']]['padding'] = 3 + $arrLP[$i]['depth'] * 10; if ($parent == $arrLP[$i]['id']) { $s_selected_parent = $arrHide[$arrLP[$i]['id']]; } } } } //$parent_select = & $form->addElement('select', 'parent', get_lang('Parent'), '', 'class="learnpath_item_form" style="width:40%;" onchange="load_cbo(this.value);"'); $parent_select =& $form->addElement('select', 'parent', '', '', 'class="learnpath_item_form" style="width:40%;display:none;float:left" onchange="load_cbo(this.value);"'); $my_count = 0; foreach ($arrHide as $key => $value) { if ($my_count != 0) { // the LP name is also the first section and is not in the same charset like the other sections $value['value'] = Security::remove_XSS(api_convert_encoding($value['value'], api_get_system_encoding(), $this->encoding)); $parent_select->addOption($value['value'], $key, 'style="padding-left:' . $value['padding'] . 'px;"'); } else { $value['value'] = Security::remove_XSS($value['value']); $parent_select->addOption($value['value'], $key, 'style="padding-left:' . $value['padding'] . 'px;"'); } $my_count++; } if (!empty($id)) { $parent_select->setSelected($parent); } else { $parent_item_id = $_SESSION['parent_item_id']; $parent_select->setSelected($parent_item_id); } if (is_array($arrLP)) { reset($arrLP); } $arrHide = array(); //POSITION for ($i = 0; $i < count($arrLP); $i++) { if ($arrLP[$i]['parent_item_id'] == $parent && $arrLP[$i]['id'] != $id) { if ($extra_info['previous_item_id'] == $arrLP[$i]['id']) { $s_selected_position = $arrLP[$i]['id']; } elseif ($action == 'add') { $s_selected_position = $arrLP[$i]['id']; } $arrHide[$arrLP[$i]['id']]['value'] = get_lang("After") . ' "' . api_convert_encoding($arrLP[$i]['title'], $charset, $this->encoding) . '"'; } } //$position = & $form->addElement('select', 'previous', get_lang('Position'), '', 'id="idPosition" class="learnpath_item_form" style="width:40%;"'); $position =& $form->addElement('select', 'previous', '', '', 'id="idPosition" class="learnpath_item_form" style="width:40%;float:left;display:none;"'); $position->addOption(get_lang("FirstPosition"), 0); foreach ($arrHide as $key => $value) { $position->addOption($value['value'], $key, 'style="padding-left:' . $value['padding'] . 'px;"'); } $position->setSelected($s_selected_position); if (is_array($arrLP)) { reset($arrLP); } if ($action != 'move') { $id_prerequisite = 0; if (is_array($arrLP)) { foreach ($arrLP as $key => $value) { if ($value['id'] == $id) { $id_prerequisite = $value['prerequisite']; break; } } } //comented the prerequisites, only visible in edit (new document) //$select_prerequisites=$form->addElement('select', 'prerequisites', get_lang('Prerequisites'),null,'id="prerequisites" class="learnpath_item_form" style="width:263px;"'); //$select_prerequisites->addOption(get_lang("NoPrerequisites"),0); // form element for uploading an mp3 file //$form->addElement('file','mp3',get_lang('UploadMp3audio'),'id="mp3" size="33"'); //$form->addRule('file', 'The extension of the Song file should be *.mp3', 'filename', '/^.*\.mp3$/'); /* Code deprecated - moved to lp level (not lp-item) if ( api_get_setting('search_enabled') === 'true' ) { //add terms field $terms = $form->addElement('text','terms', get_lang('SearchFeatureTerms').' :','id="idTerms" class="learnpath_item_form"'); $terms->setValue($item_terms); } */ $arrHide = array(); for ($i = 0; $i < count($arrLP); $i++) { if ($arrLP[$i]['id'] != $id && $arrLP[$i]['item_type'] != 'dokeos_chapter') { if ($extra_info['previous_item_id'] == $arrLP[$i]['id']) { $s_selected_position = $arrLP[$i]['id']; } elseif ($action == 'add') { $s_selected_position = $arrLP[$i]['id']; } $arrHide[$arrLP[$i]['id']]['value'] = api_convert_encoding($arrLP[$i]['title'], $charset, $this->encoding); } } /* foreach($arrHide as $key => $value){ $select_prerequisites->addOption($value['value'],$key,'style="padding-left:'.$value['padding'].'px;"'); if($key==$s_selected_position && $action == 'add'){ $select_prerequisites -> setSelected(0); } elseif($key==$id_prerequisite && $action == 'edit'){ $select_prerequisites -> setSelected($id_prerequisite); } } */ if (!$no_display_add) { if ($extra_info == 'new' || $extra_info['item_type'] == TOOL_DOCUMENT || $_GET['edit'] == 'true') { if (isset($_POST['content'])) { $content = stripslashes($_POST['content']); } elseif (is_array($extra_info)) { //If it's an html document or a text file if (!$no_display_edit_textarea) { $content = $this->display_document($extra_info['path'], false, false); } } elseif (is_numeric($extra_info)) { $content = $this->display_document($extra_info, false, false); } else { $content = ''; } if (!$no_display_edit_textarea) { // We need to claculate here some specific settings for the online editor. // The calculated settings work for documents in the Documents tool // (on the root or in subfolders). // For documents in native scorm packages it is unclear whether the // online editor should be activated or not. $relative_path = $extra_info['dir']; if ($relative_path == 'n/') { // A new document, it is in the root of the repository. $relative_path = ''; $relative_prefix = ''; } else { // The document already exists. Whe have to determine its relative path towards the repository root. $relative_path = explode('/', $relative_path); $cnt = count($relative_path) - 2; if ($cnt < 0) { $cnt = 0; } $relative_prefix = str_repeat('../', $cnt); $relative_path = array_slice($relative_path, 1, $cnt); $relative_path = implode('/', $relative_path); if (strlen($relative_path) > 0) { $relative_path = $relative_path . '/'; } } $editor_config = array('ToolbarSet' => api_is_allowed_to_edit() ? 'Documents' : 'DocumentsStudent', 'Width' => '100%', 'Height' => '700', 'FullPage' => true, 'CreateDocumentDir' => $relative_prefix, 'CreateDocumentWebDir' => api_get_path('WEB_COURSE_PATH') . api_get_course_path() . '/document/', 'BaseHref' => api_get_path('WEB_COURSE_PATH') . api_get_course_path() . '/document/' . $relative_path); if ($_GET['action'] == 'add_item') { $class = 'save'; $text = get_lang('Validate'); } else { if ($_GET['action'] == 'edit_item') { $class = 'save'; $text = get_lang('SaveDocument'); } } $form->addElement('html', '<div style="float:right;margin-top:-55px">'); $form->addElement('style_submit_button', 'submit_button', $text, 'class="' . $class . '"'); $form->addElement('html', '</div>'); $renderer = $form->defaultRenderer(); $renderer->setElementTemplate('{label}{element}', 'content_lp'); //$form->addElement('html', '<div'); $form->addElement('html_editor', 'content_lp', '', null, $editor_config); //$form->addElement('html', '</div>'); $defaults["content_lp"] = $content; } } elseif (is_numeric($extra_info)) { $form->addElement('style_submit_button', 'submit_button', get_lang('SaveDocument'), 'class="save"'); $return = $this->display_document($extra_info, true, true, true); $form->addElement('html', $return); } } } // Add template to content if ($action == 'add' && (isset($_GET['tplid']) && $_GET['tplid'] >= 0)) { $defaults["content_lp"] = $valcontent; $defaults["title"] = $valtitle; } if ($action == 'move') { $form->addElement('hidden', 'title', $item_title); $form->addElement('hidden', 'description', $item_description); } if (is_numeric($extra_info)) { $form->addElement('style_submit_button', 'submit_button', get_lang('SaveDocument'), 'value="submit_button", class="save" style="float:right"'); $form->addElement('hidden', 'path', $extra_info); } elseif (is_array($extra_info)) { $form->addElement('html', '<div style="float:right;margin-top:-55px">'); $form->addElement('style_submit_button', 'submit_button', get_lang('SaveDocument'), 'class="save"'); $form->addElement('hidden', 'path', $extra_info['path']); $form->addElement('html', '</div>'); } $form->addElement('hidden', 'type', TOOL_DOCUMENT); $form->addElement('hidden', 'post_time', time()); $form->setDefaults($defaults); return $form->return_form(); }
foreach ($session_list as $sesion_item) { $my_session_list[$sesion_item['id']] = $sesion_item['name']; } $form = new FormValidator('search_simple', 'POST', '', '', null, false); $form->addElement('select', 'session_id', get_lang('Sessions'), $my_session_list, array('id' => 'session_id', 'onchange' => 'load_courses();')); $form->addElement('select', 'course_code', get_lang('Courses'), $course_select_list); $form->addElement('style_submit_button', 'submit_form', get_lang('Filter')); if (!empty($_REQUEST['course_code'])) { $course_code = $_REQUEST['course_code']; } else { $course_code = ''; } if (empty($course_code)) { $course_code = 0; } $form->setDefaults(array('course_code' => (string) $course_code)); $course_info = api_get_course_info($course_code); if (!empty($course_info)) { $list = new LearnpathList('', $course_code); $lp_list = $list->get_flat_list(); $_course = $course_info; $main_question_list = array(); foreach ($lp_list as $lp_id => $lp) { $exercise_list = ExerciseLib::get_all_exercises_from_lp($lp_id, $course_info['real_id']); foreach ($exercise_list as $exercise) { $my_exercise = new Exercise(); $my_exercise->read($exercise['path']); $question_list = $my_exercise->selectQuestionList(); $exercise_stats = get_all_exercise_event_from_lp($exercise['path'], $course_info['real_id'], $session_id); foreach ($question_list as $question_id) { $question_data = Question::read($question_id);
foreach ($groupList as $group) { $groupIdList[$group['id']] = $group['name']; } if (!empty($groupList)) { $form->addSelect('group_id', get_lang('Group'), $groupIdList); } if (isset($_REQUEST['filter'])) { if (in_array($_REQUEST['filter'], array_keys($values))) { $default_filter = $_REQUEST['filter']; } } else { $default_filter = 'today'; } $renderer = $form->defaultRenderer(); $renderer->setCustomElementTemplate('<div class="col-md-2">{label}</div><div class="col-md-10"> {element} </div>'); $form->setDefaults(array('filter' => $default_filter, 'group_id' => $groupId)); if (!$is_locked_attendance || api_is_platform_admin()) { $actionsLeft = '<a style="float:left;" href="index.php?' . api_get_cidreq() . '&action=calendar_list&attendance_id=' . $attendance_id . '">' . Display::return_icon('attendance_calendar.png', get_lang('AttendanceCalendar'), '', ICON_SIZE_MEDIUM) . '</a>'; $actionsLeft .= '<a id="pdf_export" style="float:left;" href="index.php?' . api_get_cidreq() . '&action=attendance_sheet_export_to_pdf&attendance_id=' . $attendance_id . '&filter=' . $default_filter . '&group_id=' . $groupId . '">' . Display::return_icon('pdf.png', get_lang('ExportToPDF'), '', ICON_SIZE_MEDIUM) . '</a>'; //if (count($users_in_course) > 0) { $actionsRight = $form->returnForm(); //} $toolbar = Display::toolbarAction('toolbar-attendance', array(0 => $actionsLeft, 1 => $actionsRight), 2, false); echo $toolbar; } $message_information = get_lang('AttendanceSheetDescription'); if (!empty($message_information)) { $message = '<strong>' . get_lang('Information') . '</strong><br />'; $message .= $message_information; Display::display_normal_message($message, false); }
/** * @param FormValidator $form * @param $extra_data * @param $form_name * @param bool $admin_permissions * @param null $user_id * @deprecated * @return array */ static function set_extra_fields_in_form($form, $extra_data, $admin_permissions = false, $user_id = null) { $user_id = intval($user_id); // EXTRA FIELDS $extra = UserManager::get_extra_fields(0, 50, 5, 'ASC'); $jquery_ready_content = null; foreach ($extra as $field_details) { if (!$admin_permissions) { if ($field_details[6] == 0) { continue; } } switch ($field_details[2]) { case ExtraField::FIELD_TYPE_TEXT: $form->addElement('text', 'extra_' . $field_details[1], $field_details[3], array('size' => 40)); $form->applyFilter('extra_' . $field_details[1], 'stripslashes'); $form->applyFilter('extra_' . $field_details[1], 'trim'); $form->applyFilter('extra_' . $field_details[1], 'html_filter'); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } break; case ExtraField::FIELD_TYPE_TEXTAREA: $form->addHtmlEditor('extra_' . $field_details[1], $field_details[3], false, false, array('ToolbarSet' => 'Profile', 'Width' => '100%', 'Height' => '130')); $form->applyFilter('extra_' . $field_details[1], 'stripslashes'); $form->applyFilter('extra_' . $field_details[1], 'trim'); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } break; case ExtraField::FIELD_TYPE_RADIO: $group = array(); foreach ($field_details[9] as $option_id => $option_details) { $options[$option_details[1]] = $option_details[2]; $group[] = $form->createElement('radio', 'extra_' . $field_details[1], $option_details[1], $option_details[2] . '<br />', $option_details[1]); } $form->addGroup($group, 'extra_' . $field_details[1], $field_details[3], ''); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } break; case ExtraField::FIELD_TYPE_SELECT: $get_lang_variables = false; if (in_array($field_details[1], array('mail_notify_message', 'mail_notify_invitation', 'mail_notify_group_message'))) { $get_lang_variables = true; } $options = array(); foreach ($field_details[9] as $option_id => $option_details) { if ($get_lang_variables) { $options[$option_details[1]] = get_lang($option_details[2]); } else { $options[$option_details[1]] = $option_details[2]; } } if ($get_lang_variables) { $field_details[3] = get_lang($field_details[3]); } $form->addElement('select', 'extra_' . $field_details[1], $field_details[3], $options, array('id' => 'extra_' . $field_details[1])); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } break; case ExtraField::FIELD_TYPE_SELECT_MULTIPLE: $options = array(); foreach ($field_details[9] as $option_id => $option_details) { $options[$option_details[1]] = $option_details[2]; } $form->addElement('select', 'extra_' . $field_details[1], $field_details[3], $options, array('multiple' => 'multiple')); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } break; case ExtraField::FIELD_TYPE_DATE: $form->addDatePicker('extra_' . $field_details[1], $field_details[3]); $defaults['extra_' . $field_details[1]] = date('Y-m-d 12:00:00'); $form->setDefaults($defaults); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } $form->applyFilter('theme', 'trim'); break; case ExtraField::FIELD_TYPE_DATETIME: $form->addDateTimePicker('extra_' . $field_details[1], $field_details[3]); $defaults['extra_' . $field_details[1]] = date('Y-m-d 12:00:00'); $form->setDefaults($defaults); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } $form->applyFilter('theme', 'trim'); break; case ExtraField::FIELD_TYPE_DOUBLE_SELECT: foreach ($field_details[9] as $key => $element) { if ($element[2][0] == '*') { $values['*'][$element[0]] = str_replace('*', '', $element[2]); } else { $values[0][$element[0]] = $element[2]; } } $group = ''; $group[] = $form->createElement('select', 'extra_' . $field_details[1], '', $values[0], ''); $group[] = $form->createElement('select', 'extra_' . $field_details[1] . '*', '', $values['*'], ''); $form->addGroup($group, 'extra_' . $field_details[1], $field_details[3], ' '); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } /* Recoding the selected values for double : if the user has selected certain values, we have to assign them to the correct select form */ if (array_key_exists('extra_' . $field_details[1], $extra_data)) { // exploding all the selected values (of both select forms) $selected_values = explode(';', $extra_data['extra_' . $field_details[1]]); $extra_data['extra_' . $field_details[1]] = array(); // looping through the selected values and assigning the selected values to either the first or second select form foreach ($selected_values as $key => $selected_value) { if (array_key_exists($selected_value, $values[0])) { $extra_data['extra_' . $field_details[1]]['extra_' . $field_details[1]] = $selected_value; } else { $extra_data['extra_' . $field_details[1]]['extra_' . $field_details[1] . '*'] = $selected_value; } } } break; case ExtraField::FIELD_TYPE_DIVIDER: $form->addElement('static', $field_details[1], '<br /><strong>' . $field_details[3] . '</strong>'); break; case ExtraField::FIELD_TYPE_TAG: //the magic should be here $user_tags = UserManager::get_user_tags($user_id, $field_details[0]); $tag_list = ''; if (is_array($user_tags) && count($user_tags) > 0) { foreach ($user_tags as $tag) { $tag_list .= '<option value="' . $tag['tag'] . '" class="selected">' . $tag['tag'] . '</option>'; } } $multi_select = '<select id="extra_' . $field_details[1] . '" name="extra_' . $field_details[1] . '"> ' . $tag_list . ' </select>'; $form->addElement('label', $field_details[3], $multi_select); $url = api_get_path(WEB_AJAX_PATH) . 'user_manager.ajax.php'; $complete_text = get_lang('StartToType'); //if cache is set to true the jquery will be called 1 time $jquery_ready_content = <<<EOF \$("#extra_{$field_details['1']}").fcbkcomplete({ json_url: "{$url}?a=search_tags&field_id={$field_details['0']}", cache: false, filter_case: true, filter_hide: true, complete_text:"{$complete_text}", firstselected: true, //onremove: "testme", //onselect: "testme", filter_selected: true, newel: true }); EOF; break; case ExtraField::FIELD_TYPE_TIMEZONE: $form->addElement('select', 'extra_' . $field_details[1], $field_details[3], api_get_timezones(), ''); if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } break; case ExtraField::FIELD_TYPE_SOCIAL_PROFILE: // get the social network's favicon $icon_path = UserManager::get_favicon_from_url($extra_data['extra_' . $field_details[1]], $field_details[4]); // special hack for hi5 $leftpad = '1.7'; $top = '0.4'; $domain = parse_url($icon_path, PHP_URL_HOST); if ($domain == 'www.hi5.com' or $domain == 'hi5.com') { $leftpad = '3'; $top = '0'; } // print the input field $form->addElement('text', 'extra_' . $field_details[1], $field_details[3], array('size' => 60, 'style' => 'background-image: url(\'' . $icon_path . '\'); background-repeat: no-repeat; background-position: 0.4em ' . $top . 'em; padding-left: ' . $leftpad . 'em; ')); $form->applyFilter('extra_' . $field_details[1], 'stripslashes'); $form->applyFilter('extra_' . $field_details[1], 'trim'); if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } break; case ExtraField::FIELD_TYPE_FILE: $extra_field = 'extra_' . $field_details[1]; $form->addElement('file', $extra_field, $field_details[3], null, ''); if ($extra_file_list = UserManager::build_user_extra_file_list($user_id, $field_details[1], '', true)) { $form->addElement('static', $extra_field . '_list', null, $extra_file_list); } if ($field_details[7] == 0) { $form->freeze($extra_field); } break; case ExtraField::FIELD_TYPE_MOBILE_PHONE_NUMBER: $form->addElement('text', 'extra_' . $field_details[1], $field_details[3] . " (" . get_lang('CountryDialCode') . ")", array('size' => 40, 'placeholder' => '(xx)xxxxxxxxx')); $form->applyFilter('extra_' . $field_details[1], 'stripslashes'); $form->applyFilter('extra_' . $field_details[1], 'trim'); $form->applyFilter('extra_' . $field_details[1], 'mobile_phone_number_filter'); $form->addRule('extra_' . $field_details[1], get_lang('MobilePhoneNumberWrong'), 'mobile_phone_number'); if (!$admin_permissions) { if ($field_details[7] == 0) { $form->freeze('extra_' . $field_details[1]); } } break; } } $return = array(); $return['jquery_ready_content'] = $jquery_ready_content; return $return; }
} } }); $( "#dialog-confirm" ).dialog("open"); return false; }); }); </script>'; $extra .= '<div id="dialog-confirm" title="' . get_lang("ConfirmYourChoice") . '">'; $form = new FormValidator('report', 'post', null, null, array('class' => 'form-vertical')); $form->addElement('radio', 'export_format', null, get_lang('ExportAsCSV'), 'csv', array('id' => 'export_format_csv_label')); $form->addElement('radio', 'export_format', null, get_lang('ExportAsXLS'), 'xls', array('id' => 'export_format_xls_label')); $form->addElement('checkbox', 'load_extra_data', null, get_lang('LoadExtraData'), '0', array('id' => 'export_format_xls_label')); $form->addElement('checkbox', 'include_all_users', null, get_lang('IncludeAllUsers'), '0'); $form->addElement('checkbox', 'only_best_attempts', null, get_lang('OnlyBestAttempts'), '0'); $form->setDefaults(array('export_format' => 'csv')); $extra .= $form->return_form(); $extra .= '</div>'; if ($is_allowedToEdit) { echo $extra; } echo $actions; $url = api_get_path(WEB_AJAX_PATH) . 'model.ajax.php?a=get_exercise_results&exerciseId=' . $exercise_id . '&filter_by_user='******'&' . api_get_cidreq(); $action_links = ''; //Generating group list $group_list = GroupManager::get_group_list(); $group_parameters = array('group_all:' . get_lang('All'), 'group_none:' . get_lang('None')); foreach ($group_list as $group) { $group_parameters[] = $group['id'] . ':' . $group['name']; } if (!empty($group_parameters)) {
/** * Blog admin | Display the form to edit a blog. * */ public static function display_edit_blog_form($blog_id) { $course_id = api_get_course_int_id(); $blog_id = intval($blog_id); $tbl_blogs = Database::get_course_table(TABLE_BLOGS); $sql = "SELECT blog_id, blog_name, blog_subtitle FROM {$tbl_blogs} WHERE c_id = {$course_id} AND blog_id = '" . $blog_id . "'"; $result = Database::query($sql); $blog = Database::fetch_array($result); // the form contained errors but we do not want to lose the changes the user already did if ($_POST) { $blog['blog_name'] = Security::remove_XSS($_POST['blog_name']); $blog['blog_subtitle'] = Security::remove_XSS($_POST['blog_subtitle']); } $form = new FormValidator('edit_blog', 'post', 'blog_admin.php?action=edit&blog_id=' . intval($_GET['blog_id'])); $form->addElement('header', get_lang('EditBlog')); $form->addElement('text', 'blog_name', get_lang('Title')); $form->addElement('textarea', 'blog_subtitle', get_lang('SubTitle')); $form->addElement('hidden', 'edit_blog_submit', 'true'); $form->addElement('hidden', 'blog_id', $blog['blog_id']); $form->addButtonSave(get_lang('Save')); $defaults = array(); $defaults['blog_name'] = $blog['blog_name']; $defaults['blog_subtitle'] = $blog['blog_subtitle']; $form->setDefaults($defaults); $form->display(); }
$skillList = [0 => get_lang('None')]; $gradebookList = []; foreach ($allSkills as $skill) { $skillList[$skill['id']] = $skill['name']; } foreach ($allGradebooks as $gradebook) { $gradebookList[$gradebook['id']] = $gradebook['name']; } /* Form */ $createForm = new FormValidator('skill_create'); $createForm->addHeader(get_lang('CreateSkill')); $createForm->addText('name', get_lang('Name'), true, ['id' => 'name']); $createForm->addText('short_code', get_lang('ShortCode'), false, ['id' => 'short_code']); $createForm->addSelect('parent_id', get_lang('Parent'), $skillList, ['id' => 'parent_id']); $createForm->addSelect('gradebook_id', [get_lang('Gradebook'), get_lang('WithCertificate')], $gradebookList, ['id' => 'gradebook_id', 'multiple' => 'multiple', 'size' => 10]); $createForm->addTextarea('description', get_lang('Description'), ['id' => 'description', 'rows' => 7]); $createForm->addButtonSave(get_lang('Save')); $createForm->addHidden('id', null); $createForm->setDefaults($formDefaultValues); if ($createForm->validate()) { $created = $objSkill->add($createForm->getSubmitValues()); if ($created) { Display::return_message(get_lang('TheSkillHasBeenCreated'), 'success'); } else { Display::return_message(get_lang('CannotCreateSkill'), 'error'); } header('Location: ' . api_get_path(WEB_CODE_PATH) . 'admin/skill_list.php'); exit; } //$tpl = new Template(get_lang('CreateSkill')); echo $createForm->returnForm();
$element->freeze(); $form->addElement('style_submit_button', 'SubmitGlossary', get_lang('TermUpdateButton'), 'class="save"'); // setting the defaults $glossary_data = GlossaryManager::get_glossary_information($_GET['glossary_id']); // Date treatment for timezones if (!empty($glossary_data['insert_date']) && $glossary_data['insert_date'] != '0000-00-00 00:00:00:') { $glossary_data['insert_date'] = api_get_local_time($glossary_data['insert_date']); } else { $glossary_data['insert_date'] = ''; } if (!empty($glossary_data['update_date']) && $glossary_data['update_date'] != '0000-00-00 00:00:00:') { $glossary_data['update_date'] = api_get_local_time($glossary_data['update_date']); } else { $glossary_data['update_date'] = ''; } $form->setDefaults($glossary_data); // setting the rules $form->addRule('glossary_title', get_lang('ThisFieldIsRequired'), 'required'); // The validation or display if ($form->validate()) { $check = Security::check_token('post'); if ($check) { $values = $form->exportValues(); GlossaryManager::update_glossary($values); } Security::clear_token(); GlossaryManager::display_glossary(); } else { $token = Security::get_token(); $form->addElement('hidden', 'sec_token'); $form->setConstants(array('sec_token' => $token));
$label = Text::cut($label, 80); $label = str_repeat(' ', count($path_parts) - 2) . ' — ' . $label; } $parent_select->addOption($label, $folder); if ($selected != '') { $parent_select->setSelected($folder); } } } } if ($is_certificate_mode) { $form->addElement('style_submit_button', 'submit', get_lang('CreateCertificate'), 'class="save"'); } else { $form->addElement('style_submit_button', 'submit', get_lang('CreateDoc'), 'class="save"'); } $form->setDefaults($defaults); // If form validates -> save the new document if ($form->validate()) { $values = $form->exportValues(); $readonly = isset($values['readonly']) ? 1 : 0; $values['title'] = trim($values['title']); if (!empty($values['curdirpath'])) { $dir = $values['curdirpath']; } if ($dir[strlen($dir) - 1] != '/') { $dir .= '/'; } //Setting the filename $filename = $values['title']; $filename = addslashes(trim($filename)); $filename = Security::remove_XSS($filename);
$form_title .= ' ' . get_lang('Into') . ' ' . Security::remove_XSS($category); } $url = api_get_self() . '?action=' . Security::remove_XSS($action) . '&category=' . Security::remove_XSS($category) . '&id=' . Security::remove_XSS($categoryId); $form = new FormValidator('course_category', 'post', $url); $form->addElement('header', '', $form_title); $form->addElement('hidden', 'formSent', 1); $form->addElement('text', 'code', get_lang("CategoryCode")); $form->addElement('text', 'name', get_lang("CategoryName")); $form->addRule('name', get_lang('PleaseEnterCategoryInfo'), 'required'); $form->addRule('code', get_lang('PleaseEnterCategoryInfo'), 'required'); $group = array($form->createElement('radio', 'auth_course_child', get_lang("AllowCoursesInCategory"), get_lang('Yes'), 'TRUE'), $form->createElement('radio', 'auth_course_child', null, get_lang('No'), 'FALSE')); $form->addGroup($group, null, get_lang("AllowCoursesInCategory")); if (!empty($categoryInfo)) { $class = "save"; $text = get_lang('Save'); $form->setDefaults($categoryInfo); $form->addButtonSave($text); } else { $class = "add"; $text = get_lang('AddCategory'); $form->setDefaults(array('auth_course_child' => 'TRUE')); $form->addButtonCreate($text); } $form->display(); } elseif (api_get_multiple_access_url() && api_get_current_access_url_id() != 1) { // If multiple URLs and not main URL, prevent edition and inform user Display::display_warning_message(get_lang('CourseCategoriesAreGlobal')); } } else { // If multiple URLs and not main URL, prevent deletion and inform user if ($action == 'delete' && api_get_multiple_access_url() && api_get_current_access_url_id() != 1) {
/** * Shows statistics about the time of last visit to each course. */ static function print_course_last_visit() { $access_url_rel_course_table = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $current_url_id = api_get_current_access_url_id(); $columns[0] = 'c_id'; $columns[1] = 'access_date'; $sql_order[SORT_ASC] = 'ASC'; $sql_order[SORT_DESC] = 'DESC'; $per_page = isset($_GET['per_page']) ? intval($_GET['per_page']) : 10; $page_nr = isset($_GET['page_nr']) ? intval($_GET['page_nr']) : 1; $column = isset($_GET['column']) ? intval($_GET['column']) : 0; $date_diff = isset($_GET['date_diff']) ? intval($_GET['date_diff']) : 60; if (!in_array($_GET['direction'], array(SORT_ASC, SORT_DESC))) { $direction = SORT_ASC; } else { $direction = isset($_GET['direction']) ? $_GET['direction'] : SORT_ASC; } $form = new FormValidator('courselastvisit', 'get'); $form->addElement('hidden', 'report', 'courselastvisit'); $form->add_textfield('date_diff', get_lang('Days'), true); $form->addRule('date_diff', 'InvalidNumber', 'numeric'); $form->addElement('style_submit_button', 'submit', get_lang('Search'), 'class="search"'); if (!isset($_GET['date_diff'])) { $defaults['date_diff'] = 60; } else { $defaults['date_diff'] = Security::remove_XSS($_GET['date_diff']); } $form->setDefaults($defaults); $form->display(); $values = $form->exportValues(); $date_diff = $values['date_diff']; $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LASTACCESS); $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE); if (api_is_multiple_url_enabled()) { $sql = "SELECT access_date, c.code FROM {$table} s , {$access_url_rel_course_table} u, {$tableCourse} c\n WHERE c.id = u.c_id AND c.id = s.c_id AND access_url_id='" . $current_url_id . "' " . "GROUP BY access_cours_code " . "HAVING s.c_id <> '' " . "AND DATEDIFF( '" . date('Y-m-d h:i:s') . "' , access_date ) <= " . $date_diff; } else { $sql = "SELECT access_date, c.code FROM {$table} , {$tableCourse} c\n WHERE c_id = c.id\n GROUP BY c_id\n HAVING c_id <> ''AND\n DATEDIFF( '" . date('Y-m-d h:i:s') . "' , access_date ) <= " . $date_diff; } $res = Database::query($sql); $number_of_courses = Database::num_rows($res); $sql .= ' ORDER BY ' . $columns[$column] . ' ' . $sql_order[$direction]; $from = ($page_nr - 1) * $per_page; $sql .= ' LIMIT ' . $from . ',' . $per_page; echo '<p>' . get_lang('LastAccess') . ' >= ' . $date_diff . ' ' . get_lang('Days') . '</p>'; $res = Database::query($sql); if (Database::num_rows($res) > 0) { $courses = array(); while ($obj = Database::fetch_object($res)) { $course = array(); $course[] = '<a href="' . api_get_path(WEB_PATH) . 'courses/' . $obj->code . '">' . $obj->code . ' <a>'; //Allow sort by date hiding the numerical date $course[] = '<span style="display:none;">' . $obj->access_date . '</span>' . api_convert_and_format_date($obj->access_date); $courses[] = $course; } $parameters['date_diff'] = $date_diff; $parameters['report'] = 'courselastvisit'; $table_header[] = array(get_lang("CourseCode"), true); $table_header[] = array(get_lang("LastAccess"), true); Display::display_sortable_table($table_header, $courses, array('column' => $column, 'direction' => $direction), array(), $parameters); } else { echo get_lang('NoSearchResults'); } }
$form->addElement('select', 'session_id', get_lang('Sessions'), $my_session_list); $form->addElement('style_submit_button', 'submit', get_lang('Filter')); if (!empty($_REQUEST['score'])) { $filter_score = intval($_REQUEST['score']); } else { $filter_score = 70; } if (!empty($_REQUEST['session_id'])) { $session_id = intval($_REQUEST['session_id']); } else { $session_id = 0; } if (empty($session_id)) { $session_id = key($my_session_list); } $form->setDefaults(array('session_id' => $session_id)); $course_list = SessionManager::get_course_list_by_session_id($session_id); if (!$export_to_xls) { Display::display_header(get_lang("MySpace")); echo '<div class="actions" style ="font-size:10pt;" >'; if ($global) { $menu_items[] = Display::url(Display::return_icon('stats.png', get_lang('MyStats'), '', ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH) . "auth/my_progress.php"); $menu_items[] = Display::url(Display::return_icon('teacher.png', get_lang('TeacherInterface'), array(), 32), api_get_path(WEB_CODE_PATH) . 'mySpace/?view=teacher'); $menu_items[] = Display::return_icon('star_na.png', get_lang('AdminInterface'), array(), 32); $menu_items[] = Display::url(Display::return_icon('quiz.png', get_lang('ExamTracking'), array(), 32), api_get_path(WEB_CODE_PATH) . 'tracking/exams.php'); $nb_menu_items = count($menu_items); if ($nb_menu_items > 1) { foreach ($menu_items as $key => $item) { echo $item; } echo '<br />';