public function MatchingProcessor::generateDropzoneRows in Opigno module 3.x
Same name and namespace in other branches
- 8 ActivityTypes/opigno_h5p/src/TypeProcessors/MatchingProcessor.php \Drupal\opigno_h5p\TypeProcessors\MatchingProcessor::generateDropzoneRows()
Generates single dropzone row and populate it with correct answers.
1 call to MatchingProcessor::generateDropzoneRows()
- MatchingProcessor::generateRows in ActivityTypes/
opigno_h5p/ src/ TypeProcessors/ MatchingProcessor.php - Generate rows of table.
File
- ActivityTypes/
opigno_h5p/ src/ TypeProcessors/ MatchingProcessor.php, line 153
Class
- MatchingProcessor
- Class MatchingProcessor.
Namespace
Drupal\opigno_h5p\TypeProcessorsCode
public function generateDropzoneRows($dropzone, $draggables, $crp, $response) {
$dzRows = count($crp) > count($response) ? count($crp) : count($response);
// Skip row if no correct or user answers.
if ($dzRows <= 0) {
return '';
}
$rows = '';
$lastCellInRow = 'h5p-matching-last-cell-in-row';
for ($i = 0; $i < $dzRows; $i++) {
$row = '';
$tdClass = $i >= $dzRows - 1 ? $lastCellInRow : '';
if ($i === 0) {
// Add drop zone.
$row .= '<th class="' . 'h5p-matching-dropzone ' . $lastCellInRow . '" rowspan="' . $dzRows . '">' . $dropzone->value . '</th>';
}
// Add correct response pattern.
$crpCellContent = isset($crp[$i]) ? $draggables[$crp[$i]]->value : '';
$row .= '<td class="' . $tdClass . '">' . $crpCellContent . '</td>';
// Add user response.
$isCorrectClass = '';
$responseCellContent = '';
if (isset($response[$i])) {
$isCorrectClass = isset($response[$i]) && in_array($response[$i], $crp) ? 'h5p-matching-draggable-correct' : 'h5p-matching-draggable-wrong';
foreach ($draggables as $draggable) {
if ($draggable->id === $response[$i]) {
$responseCellContent = $draggable->value;
break;
}
}
}
$classes = $tdClass . (count($isCorrectClass) ? ' ' : '') . $isCorrectClass;
$row .= '<td class="' . $classes . '">' . $responseCellContent . '</td>';
$rows .= '<tr>' . $row . '</tr>';
}
return $rows;
}