Using CSS class instead of width see BT#6509

1.9.x
Julio Montoya 12 years ago
parent 24ebb128cd
commit 4c6185f26a
  1. 37
      main/exercice/exercise.lib.php

@ -435,31 +435,32 @@ function showQuestion($questionId, $only_questions = false, $origin = false, $cu
if (!empty($value[0])) {
$value = str_replace(' ', '', trim($value[0]));
}
$correct_item = preg_quote($correct_item);
//var_dump($correct_item);
//$correct_item = preg_quote($correct_item);
// to prevent error if there is a / in the text to find
$correct_item = api_preg_replace('|/|', '\/', $correct_item);
//$correct_item = api_preg_replace('|/|', '\/', $correct_item);
$size = strlen($correct_item) * 10 + 10;
$attributes['style'] = 'width: '.$size.'px';
$size = strlen($correct_item);
$attributes['class'] = detectInputAppropriateClass($size);
//$answer = api_preg_replace('/'.$correct_item.'/', Display::input('text', "choice[$questionId][]", $value, $attributes), $answer, 1);
$answer = str_replace('/'.$correct_item.'/', Display::input('text', "choice[$questionId][]", $value, $attributes), $answer);
$answer = str_replace($correct_item, Display::input('text', "choice[$questionId][]", $value, $attributes), $answer);
}
$i++;
}
} else {
foreach ($correct_answer_list[0] as $item) {
$size = strlen($item) * 10 + 10;
$attributes['style'] = 'width: '.$size.'px';
$size = strlen($item);
$attributes['class'] = detectInputAppropriateClass($size);
//$pattern = '/\['.$item.'+\]/';
//$answer = api_preg_replace($pattern, Display::input('text', "choice[$questionId][]", '', $attributes), $answer);
$answer = str_replace($item, Display::input('text', "choice[$questionId][]", '', $attributes), $answer);
}
//$answer = api_preg_replace('/\[[^]]+\]/', Display::input('text', "choice[$questionId][]", '', $attributes), $answer);
}
$s .= $answer;
} elseif ($answerType == MATCHING) {
// matching type, showing suggestions and answers
@ -2327,3 +2328,23 @@ function get_question_ribbon($objExercise, $score, $weight, $check_pass_percenta
$ribbon .= '</div>';
return $ribbon;
}
function detectInputAppropriateClass($countLetter)
{
$limits = array(
0 => 'input-mini',
10 => 'input-mini',
15 => 'input-medium',
20 => 'input-xlarge',
40 => 'input-xlarge',
60 => 'input-xxlarge',
100 => 'input-xxlarge',
200 => 'input-xxlarge',
);
foreach ($limits as $size => $item) {
if ($countLetter <= $size) {
return $item;
}
}
return $limits[0];
}

Loading…
Cancel
Save