Character encoding problem in test title - part 2 - ref #6933

1.9.x
Hubert Borderiou 11 years ago
parent eae54eceb4
commit 044b39d98f
  1. 47
      main/exercice/exercise.class.php
  2. 6
      main/inc/ajax/lp.ajax.php
  3. 27
      main/newscorm/learnpath.class.php
  4. 25
      main/newscorm/lp_controller.php

@ -1017,7 +1017,7 @@ class Exercise {
//we force the options to the DirectFeedback exercisetype
$form->addElement('hidden', 'exerciseFeedbackType', EXERCISE_FEEDBACK_TYPE_DIRECT);
$form->addElement('hidden', 'exerciseType', ONE_PER_PAGE);
// Type of questions disposition on page
$radios[] = $form->createElement('radio', 'exerciseType', null, get_lang('SimpleExercise'), '1', array('onclick' => 'check_per_page_all()', 'id'=>'option_page_all'));
$radios[] = $form->createElement('radio', 'exerciseType', null, get_lang('SequentialExercise'),'2', array('onclick' => 'check_per_page_one()', 'id'=>'option_page_one'));
@ -1169,7 +1169,7 @@ class Exercise {
$defaults['randomAnswers'] = $this->selectRandomAnswers();
$defaults['exerciseType'] = $this->selectType();
$defaults['exerciseTitle'] = api_html_entity_decode($this->selectTitle());
$defaults['exerciseTitle'] = $this->get_formated_title();
$defaults['exerciseDescription'] = $this->selectDescription();
$defaults['exerciseAttempts'] = $this->selectAttempts();
$defaults['exerciseFeedbackType'] = $this->selectFeedbackType();
@ -1250,7 +1250,7 @@ class Exercise {
*/
function processCreation($form, $type = '')
{
$this->updateTitle(api_htmlentities($form->getSubmitValue('exerciseTitle')));
$this->updateTitle(Exercise::format_title_variable($form->getSubmitValue('exerciseTitle')));
$this->updateDescription($form->getSubmitValue('exerciseDescription'));
$this->updateAttempts($form->getSubmitValue('exerciseAttempts'));
$this->updateFeedbackType($form->getSubmitValue('exerciseFeedbackType'));
@ -3723,13 +3723,13 @@ class Exercise {
$isRandomByCategory = $this->selectRandomByCat();
// on tri les categories en fonction du terme entre [] en tete de la description de la categorie
/*
* ex de catégories :
* ex de catégories :
* [biologie] Maitriser les mecanismes de base de la genetique
* [biologie] Relier les moyens de depenses et les agents infectieux
* [biologie] Savoir ou est produite l'enrgie dans les cellules et sous quelle forme
* [chimie] Classer les molles suivant leur pouvoir oxydant ou reacteur
* [chimie] Connaître la denition de la theoie acide/base selon Brönsted
* [chimie] Connaître les charges des particules
* [chimie] Connaître la denition de la theoie acide/base selon Brönsted
* [chimie] Connaître les charges des particules
* On veut dans l'ordre des groupes definis par le terme entre crochet au debut du titre de la categorie
*/
// If test option is Grouped By Categories
@ -3989,4 +3989,39 @@ class Exercise {
}
return $out_max_score;
}
/**
* @return string
*/
public function get_formated_title()
{
return api_html_entity_decode($this->selectTitle());
}
/**
* @param $in_title
* @return string
*/
public static function get_formated_title_variable($in_title) {
return api_html_entity_decode($in_title);
}
/**
* @return string
*/
public function format_title()
{
return api_htmlentities($this->title);
}
/**
* @param $in_title
* @return string
*/
public static function format_title_variable($in_title)
{
return api_htmlentities($in_title);
}
}

@ -17,7 +17,11 @@ switch ($action) {
if ($_SESSION['oLP']) {
//Updating the lp.modified_on
$_SESSION['oLP']->set_modified_on();
echo $_SESSION['oLP']->add_item($_REQUEST['parent_id'], $_REQUEST['previous_id'], $_REQUEST['type'], $_REQUEST['id'], $_REQUEST['title'], null);
$title = $_REQUEST['title'];
if ($_REQUEST['type'] == TOOL_QUIZ) {
$title = Exercise::format_title_variable($title);
}
echo $_SESSION['oLP']->add_item($_REQUEST['parent_id'], $_REQUEST['previous_id'], $_REQUEST['type'], $_REQUEST['id'], $title, null);
}
}
break;

@ -5838,15 +5838,20 @@ class learnpath
$arrLP = $this->arrMenu;
unset ($this->arrMenu);
if ($action == 'add')
if ($action == 'add') {
$legend .= get_lang('CreateTheExercise') . ' :';
elseif ($action == 'move') $legend .= get_lang('MoveTheCurrentExercise') . ' :';
else
} elseif ($action == 'move') {
$legend .= get_lang('MoveTheCurrentExercise') . ' :';
} else {
$legend .= get_lang('EditCurrentExecice') . ' :';
}
if (isset ($_GET['edit']) && $_GET['edit'] == 'true') {
$legend .= Display :: return_warning_message(get_lang('Warning') . ' ! ' . get_lang('WarningEditingDocument'));
}
$legend .= '</legend>';
$return = '';
$return .= '<div class="sectioncomment">';
$return .= '<form method="POST">';
@ -5865,6 +5870,7 @@ class learnpath
$return .= '<td class="label"><label for="idParent">' . get_lang('Parent') . '</label></td>';
$return .= '<td class="input">';
// Select for Parent item, root or chapter
$return .= '<select id="idParent" style="width:100%;" name="parent" onChange="javascript: load_cbo(this.value);" size="1">';
$return .= '<option class="top" value="0">' . $this->name . '</option>';
@ -5898,9 +5904,7 @@ class learnpath
$return .= '<td class="input">';
$return .= '<select class="learnpath_item_form" style="width:100%;" id="previous" name="previous" size="1">';
$return .= '<option class="top" value="0">' . get_lang('FirstPosition') . '</option>';
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'])
@ -5908,12 +5912,11 @@ class learnpath
elseif ($action == 'add') $selected = 'selected="selected" ';
else
$selected = '';
$return .= '<option ' . $selected . 'value="' . $arrLP[$i]['id'] . '">' . get_lang('After') . ' "' . $arrLP[$i]['title'] . '"</option>';
}
}
$return .= '</select>';
$return .= '</td>';
$return .= '</tr>';
if ($action != 'move') {
@ -7585,7 +7588,10 @@ class learnpath
*
* @return string
*/
public function get_js_dropdown_array() {
$course_id = api_get_course_int_id();
$return = 'var child_name = new Array();' . "\n";
@ -7602,7 +7608,10 @@ class learnpath
$i = 0;
while ($row_zero = Database :: fetch_array($res_zero)) {
$js_var = json_encode(get_lang('After').' '.$row_zero['title']);
if ($row_zero['item_type'] == TOOL_QUIZ) {
$row_zero['title'] = Exercise::get_formated_title_variable($row_zero['title']);
}
$js_var = json_encode(get_lang('After').' '.$row_zero['title']);
$return .= 'child_name[0][' . $i . '] = '.$js_var.' ;' . "\n";
$return .= 'child_value[0][' . $i++ . '] = "' . $row_zero['id'] . '";' . "\n";
}
@ -7620,7 +7629,7 @@ class learnpath
$return .= 'child_value[' . $row['id'] . '] = new Array();' . "\n\n";
while ($row_parent = Database :: fetch_array($res_parent)) {
$js_var = json_encode(get_lang('After').' '.$row_parent['title']);
$js_var = json_encode(get_lang('After').' '.$row_parent['title']);
$return .= 'child_name[' . $row['id'] . '][' . $i . '] = '.$js_var.' ;' . "\n";
$return .= 'child_value[' . $row['id'] . '][' . $i++ . '] = "' . $row_parent['id'] . '";' . "\n";
}

@ -326,7 +326,7 @@ if (!$lp_found || (!empty($_REQUEST['lp_id']) && $_SESSION['oLP']->get_id() != $
if ($debug > 0) error_log('New LP - found row - type dokeos - Calling constructor with '.api_get_course_id().' - '.$lp_id.' - '.api_get_user_id(), 0);
$oLP = new learnpath(api_get_course_id(), $lp_id, api_get_user_id());
if ($oLP !== false) { $lp_found = true; } else { error_log($oLP->error, 0); }
break;
break;
case 2:
if ($debug > 0) error_log('New LP - found row - type scorm - Calling constructor with '.api_get_course_id().' - '.$lp_id.' - '.api_get_user_id(), 0);
$oLP = new scorm(api_get_course_id(), $lp_id, api_get_user_id());
@ -382,6 +382,15 @@ if (isset($_GET['isStudentView']) && $_GET['isStudentView'] == 'true') {
$action = (!empty($_REQUEST['action']) ? $_REQUEST['action'] : '');
// format title to be displayed correctly if QUIZ
$post_title = "";
if (isset($_POST['title'])) {
$post_title = $_POST['title'];
if (isset($_POST['type']) && isset($_POST['title']) && $_POST['type'] == TOOL_QUIZ && !empty($_POST['title'])) {
$post_title = Exercise::format_title_variable($_POST['title']);
}
}
switch ($action) {
case 'add_item':
if (!$is_allowed_to_edit) {
@ -396,7 +405,7 @@ switch ($action) {
} else {
$_SESSION['refresh'] = 1;
if (isset($_POST['submit_button']) && !empty($_POST['title'])) {
if (isset($_POST['submit_button']) && !empty($post_title)) {
// If a title was sumbitted:
//Updating the lp.modified_on
@ -406,6 +415,7 @@ switch ($action) {
// Check post_time to ensure ??? (counter-hacking measure?)
require 'lp_add_item.php';
} else {
$_SESSION['post_time'] = $_POST['post_time'];
if ($_POST['type'] == TOOL_DOCUMENT) {
if (isset($_POST['path']) && $_GET['edit'] != 'true') {
@ -413,10 +423,10 @@ switch ($action) {
} else {
$document_id = $_SESSION['oLP']->create_document($_course);
}
$new_item_id = $_SESSION['oLP']->add_item($_POST['parent'], $_POST['previous'], $_POST['type'], $document_id, $_POST['title'], $_POST['description'], $_POST['prerequisites']);
$new_item_id = $_SESSION['oLP']->add_item($_POST['parent'], $_POST['previous'], $_POST['type'], $document_id, $post_title, $_POST['description'], $_POST['prerequisites']);
} else {
// For all other item types than documents, load the item using the item type and path rather than its ID.
$new_item_id = $_SESSION['oLP']->add_item($_POST['parent'], $_POST['previous'], $_POST['type'], $_POST['path'], $_POST['title'], $_POST['description'], $_POST['prerequisites'], $_POST['maxTimeAllowed']);
$new_item_id = $_SESSION['oLP']->add_item($_POST['parent'], $_POST['previous'], $_POST['type'], $_POST['path'], $post_title, $_POST['description'], $_POST['prerequisites'], $_POST['maxTimeAllowed']);
}
$url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id);
header('Location: '.$url);
@ -566,7 +576,7 @@ switch ($action) {
if (!$lp_found) { error_log('New LP - No learnpath given for edit item', 0); require 'lp_list.php'; }
else {
$_SESSION['refresh'] = 1;
if (isset($_POST['submit_button']) && !empty($_POST['title'])) {
if (isset($_POST['submit_button']) && !empty($post_title)) {
//Updating the lp.modified_on
$_SESSION['oLP']->set_modified_on();
@ -576,7 +586,7 @@ switch ($action) {
if (isset($_FILES['mp3'])) {
$audio = $_FILES['mp3'];
}
$_SESSION['oLP']->edit_item($_REQUEST['id'], $_POST['parent'], $_POST['previous'], $_POST['title'], $_POST['description'], $_POST['prerequisites'], $audio, $_POST['maxTimeAllowed']);
$_SESSION['oLP']->edit_item($_REQUEST['id'], $_POST['parent'], $_POST['previous'], $post_title, $_POST['description'], $_POST['prerequisites'], $audio, $_POST['maxTimeAllowed']);
if (isset($_POST['content_lp'])) {
$_SESSION['oLP']->edit_document($_course);
@ -631,8 +641,7 @@ switch ($action) {
if (isset($_POST['submit_button'])) {
//Updating the lp.modified_on
$_SESSION['oLP']->set_modified_on();
$_SESSION['oLP']->edit_item($_GET['id'], $_POST['parent'], $_POST['previous'], $_POST['title'], $_POST['description']);
$_SESSION['oLP']->edit_item($_GET['id'], $_POST['parent'], $_POST['previous'], $post_title, $_POST['description']);
$is_success = true;
$url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id);
header('Location: '.$url);

Loading…
Cancel
Save