You are here

public function MatchingProcessor::generateDropzoneRows in Opigno module 3.x

Same name and namespace in other branches
  1. 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\TypeProcessors

Code

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;
}