Sfoglia il codice sorgente

Using CSS class instead of width see BT#6509

Julio Montoya 11 anni fa
parent
commit
4c6185f26a
1 ha cambiato i file con 29 aggiunte e 8 eliminazioni
  1. 29 8
      main/exercice/exercise.lib.php

+ 29 - 8
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];
+}