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

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

@ -1169,7 +1169,7 @@ class Exercise {
$defaults['randomAnswers'] = $this->selectRandomAnswers(); $defaults['randomAnswers'] = $this->selectRandomAnswers();
$defaults['exerciseType'] = $this->selectType(); $defaults['exerciseType'] = $this->selectType();
$defaults['exerciseTitle'] = api_html_entity_decode($this->selectTitle()); $defaults['exerciseTitle'] = $this->get_formated_title();
$defaults['exerciseDescription'] = $this->selectDescription(); $defaults['exerciseDescription'] = $this->selectDescription();
$defaults['exerciseAttempts'] = $this->selectAttempts(); $defaults['exerciseAttempts'] = $this->selectAttempts();
$defaults['exerciseFeedbackType'] = $this->selectFeedbackType(); $defaults['exerciseFeedbackType'] = $this->selectFeedbackType();
@ -1250,7 +1250,7 @@ class Exercise {
*/ */
function processCreation($form, $type = '') 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->updateDescription($form->getSubmitValue('exerciseDescription'));
$this->updateAttempts($form->getSubmitValue('exerciseAttempts')); $this->updateAttempts($form->getSubmitValue('exerciseAttempts'));
$this->updateFeedbackType($form->getSubmitValue('exerciseFeedbackType')); $this->updateFeedbackType($form->getSubmitValue('exerciseFeedbackType'));
@ -3723,13 +3723,13 @@ class Exercise {
$isRandomByCategory = $this->selectRandomByCat(); $isRandomByCategory = $this->selectRandomByCat();
// on tri les categories en fonction du terme entre [] en tete de la description de la categorie // 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] Maitriser les mecanismes de base de la genetique
* [biologie] Relier les moyens de depenses et les agents infectieux * [biologie] Relier les moyens de depenses et les agents infectieux
* [biologie] Savoir ou est produite l'enrgie dans les cellules et sous quelle forme * [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] 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 la denition de la theoie acide/base selon Brönsted
* [chimie] Connaître les charges des particules * [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 * 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 // If test option is Grouped By Categories
@ -3989,4 +3989,39 @@ class Exercise {
} }
return $out_max_score; 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']) { if ($_SESSION['oLP']) {
//Updating the lp.modified_on //Updating the lp.modified_on
$_SESSION['oLP']->set_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; break;

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

@ -382,6 +382,15 @@ if (isset($_GET['isStudentView']) && $_GET['isStudentView'] == 'true') {
$action = (!empty($_REQUEST['action']) ? $_REQUEST['action'] : ''); $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) { switch ($action) {
case 'add_item': case 'add_item':
if (!$is_allowed_to_edit) { if (!$is_allowed_to_edit) {
@ -396,7 +405,7 @@ switch ($action) {
} else { } else {
$_SESSION['refresh'] = 1; $_SESSION['refresh'] = 1;
if (isset($_POST['submit_button']) && !empty($_POST['title'])) { if (isset($_POST['submit_button']) && !empty($post_title)) {
// If a title was sumbitted: // If a title was sumbitted:
//Updating the lp.modified_on //Updating the lp.modified_on
@ -406,6 +415,7 @@ switch ($action) {
// Check post_time to ensure ??? (counter-hacking measure?) // Check post_time to ensure ??? (counter-hacking measure?)
require 'lp_add_item.php'; require 'lp_add_item.php';
} else { } else {
$_SESSION['post_time'] = $_POST['post_time']; $_SESSION['post_time'] = $_POST['post_time'];
if ($_POST['type'] == TOOL_DOCUMENT) { if ($_POST['type'] == TOOL_DOCUMENT) {
if (isset($_POST['path']) && $_GET['edit'] != 'true') { if (isset($_POST['path']) && $_GET['edit'] != 'true') {
@ -413,10 +423,10 @@ switch ($action) {
} else { } else {
$document_id = $_SESSION['oLP']->create_document($_course); $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 { } else {
// For all other item types than documents, load the item using the item type and path rather than its ID. // 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); $url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id);
header('Location: '.$url); 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'; } if (!$lp_found) { error_log('New LP - No learnpath given for edit item', 0); require 'lp_list.php'; }
else { else {
$_SESSION['refresh'] = 1; $_SESSION['refresh'] = 1;
if (isset($_POST['submit_button']) && !empty($_POST['title'])) { if (isset($_POST['submit_button']) && !empty($post_title)) {
//Updating the lp.modified_on //Updating the lp.modified_on
$_SESSION['oLP']->set_modified_on(); $_SESSION['oLP']->set_modified_on();
@ -576,7 +586,7 @@ switch ($action) {
if (isset($_FILES['mp3'])) { if (isset($_FILES['mp3'])) {
$audio = $_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'])) { if (isset($_POST['content_lp'])) {
$_SESSION['oLP']->edit_document($_course); $_SESSION['oLP']->edit_document($_course);
@ -631,8 +641,7 @@ switch ($action) {
if (isset($_POST['submit_button'])) { if (isset($_POST['submit_button'])) {
//Updating the lp.modified_on //Updating the lp.modified_on
$_SESSION['oLP']->set_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; $is_success = true;
$url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id); $url = api_get_self().'?action=add_item&type=step&lp_id='.intval($_SESSION['oLP']->lp_id);
header('Location: '.$url); header('Location: '.$url);

Loading…
Cancel
Save