Skip to content
Snippets Groups Projects
Commit 5a3dcd30 authored by Elmar Ludwig's avatar Elmar Ludwig
Browse files

automatically switch to HTML editor when needed, fixes #180

parent 9749fe8d
No related branches found
No related tags found
No related merge requests found
......@@ -126,7 +126,7 @@ abstract class Exercise extends SimpleORMap
public static function purifyFlexibleInput($html)
{
if (Studip\Markup::isHtml($html)) {
if (preg_match('/<.*</', $html)) {
if (preg_match('/<.*</s', $html)) {
$html = Studip\Markup::purifyHtml($html);
} else {
$html = Studip\Markup::removeHtml($html);
......
......@@ -419,6 +419,20 @@ function check_exercise_access($exercise_id, $assignment_id)
vips_require_view_permission($assignment, $exercise_id);
}
/**
* Calculate the size parameter for a flexible input element.
*
* @param string $text contents of the input
*/
function vips_flexible_input_size($text)
{
if (strpos($text, "\n") !== false || Studip\Markup::isHtml($text) || kill_format($text) !== $text) {
return 'large';
}
return 'small';
}
/**
* Calculate the optimal textarea height for text exercises.
*
......
......@@ -4,7 +4,7 @@
<div class="dynamic_list">
<? foreach ($exercise->task['answers'] as $i => $answer): ?>
<? $size = substr_count($answer['text'], "\n") == 0 ? 'small' : 'large'; ?>
<? $size = vips_flexible_input_size($answer['text']); ?>
<div class="dynamic_row mc_row">
<label class="dynamic_counter size_toggle size_<?= $size ?> undecorated">
......
......@@ -33,7 +33,7 @@
<div class="dynamic_list">
<? foreach ($exercise->task['answers'] as $i => $answer): ?>
<? $size = substr_count($answer['text'], "\n") == 0 ? 'small' : 'large'; ?>
<? $size = vips_flexible_input_size($answer['text']); ?>
<div class="dynamic_row mc_row">
<label class="dynamic_counter size_toggle size_<?= $size ?> undecorated">
......
......@@ -15,9 +15,9 @@
</tr>
</thead>
<tbody class="dynamic_list" style="vertical-align: top;">
<tbody class="dynamic_list">
<? foreach ($exercise->task['groups'] as $i => $group): ?>
<? $size = substr_count($group, "\n") == 0 ? 'small' : 'large' ?>
<? $size = vips_flexible_input_size($group) ?>
<tr class="dynamic_row">
<td class="size_toggle size_<?= $size ?>">
......@@ -31,7 +31,7 @@
<? $j = 0 ?>
<? foreach ($exercise->task['answers'] as $answer): ?>
<? if ($answer['group'] == $i): ?>
<? $size = substr_count($answer['text'], "\n") == 0 ? 'small' : 'large' ?>
<? $size = vips_flexible_input_size($answer['text']) ?>
<div class="dynamic_row size_toggle size_<?= $size ?>">
<?= $this->render_partial('exercises/flexible_input', ['name' => "answer[$i][$j]", 'value' => $answer['text'], 'size' => $size]) ?>
......@@ -96,7 +96,7 @@
<div class="dynamic_list">
<? foreach ($exercise->task['answers'] as $answer): ?>
<? if ($answer['group'] == -1): ?>
<? $size = substr_count($answer['text'], "\n") == 0 ? 'small' : 'large' ?>
<? $size = vips_flexible_input_size($answer['text']) ?>
<div class="dynamic_row mc_row">
<label class="dynamic_counter size_toggle size_<?= $size ?> undecorated">
......
......@@ -16,7 +16,7 @@
</label>
<? foreach ($task['answers'] as $i => $answer): ?>
<? $size = substr_count($answer['text'], "\n") == 0 ? 'small' : 'large'; ?>
<? $size = vips_flexible_input_size($answer['text']); ?>
<div class="dynamic_row mc_row">
<label class="dynamic_counter size_toggle size_<?= $size ?> undecorated">
......
......@@ -4,7 +4,7 @@
<div class="dynamic_list">
<? foreach ($exercise->task['answers'] as $i => $answer): ?>
<? $size = substr_count($answer['text'], "\n") == 0 ? 'small' : 'large'; ?>
<? $size = vips_flexible_input_size($answer['text']); ?>
<div class="dynamic_row mc_row">
<label class="dynamic_counter size_toggle size_<?= $size ?> undecorated">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment