You are here

function paragraphs_table_preprocess_field_multiple_value_form in Paragraphs table 8

Implements hook_preprocess_HOOK().

File

./paragraphs_table.module, line 58
Contains paragraphs_table.module.

Code

function paragraphs_table_preprocess_field_multiple_value_form(&$variables) {
  $element = $variables['element'];
  if (empty($element['#paragraphsTable'])) {
    return FALSE;
  }
  if (!empty($variables['table'])) {

    // Case number of values unlimited - cardinality = -1.
    if (!empty($element['#paragraphsTable']) && !empty($variables["table"]["#tabledrag"])) {
      if ($element["#paragraphsTable"]["#show_all"]) {
        foreach (range(0, $element["#cardinality"] - 1) as $delta) {
          if (empty($variables["table"]["#rows"][$delta])) {
            $variables["table"]["#rows"][$delta] = $variables["table"]["#rows"][0];
          }
        }

        // We don't need button add more anymore.
        foreach (Element::children($variables["button"]) as $child) {
          if (substr($child, 0, 16) === "add_more_button_") {
            $variables["button"][$child]["#access"] = FALSE;
            break;
          }
        }
        $variables["button"]['#access'] = FALSE;
      }
      if (!$element["#paragraphsTable"]["#table_vertical"]) {

        // Add caption header.
        if (!empty($element["#title"])) {
          $variables["table"]["#caption"] = $variables["element"]["#title"];
        }
        if (!empty($element["#title_display"]) && $element["#title_display"] == 'invisible') {
          unset($variables["table"]["#caption"]);
        }
        $row_weight = end($variables["table"]["#header"]);
        if ($element["#cardinality"] < 2) {
          $element["#paragraphsTable"]["#show_all"] = FALSE;
        }
        elseif (!empty($element["#paragraphsTable"]["#show_all"])) {
          unset($variables["table"]["#tabledrag"]);
        }
        $is_new = isset($variables['table']['#rows']) && count($variables['table']['#rows']) == 0;
        $variables["table"]["#header"] = _paragraphs_table_header($element["#paragraphsTable"]["#fields"], $element["#paragraphsTable"]["#show_all"], $row_weight, $is_new);
        $remove_row = FALSE;
        foreach ($variables["table"]["#rows"] as $delta => $rows) {
          $row = _paragraphs_table_row($element["#paragraphsTable"]["#fields"], $rows['data'], $element["#paragraphsTable"]["#show_all"]);
          if (!empty($row)) {
            $variables["table"]["#rows"][$delta]['data'] = $row;
          }
          else {
            $remove_row = TRUE;
            unset($variables["table"]["#rows"][$delta]);
          }
        }
        if ($remove_row) {
          $variables["table"]["#rows"] = array_merge($variables["table"]["#rows"]);
        }
        if (empty($variables["table"]["#rows"]) && !empty($element["#no_header"])) {
          unset($variables["table"]["#header"]);
          unset($variables["table"]["#caption"]);
        }
        elseif ($element["#paragraphsTable"]["#paste_clipboard"]) {
          $variables['table']['#prefix'] = '<a class="paste-paragraphs-clipboard" data-table="' . $variables["table"]["#attributes"]["id"] . '" href="#' . $variables["table"]["#attributes"]["id"] . '">' . t('Paste from excel') . '</a>';
          $variables['table']['#attached']['library'][] = 'paragraphs_table/paste-clipboard';
        }
      }
      else {

        // Table vertical.
        foreach ($variables["table"]["#rows"] as $delta => $rows) {
          if (!empty($element["#paragraphsTable"]["#widget_state"]["paragraphs"][$delta]["mode"]) && $element["#paragraphsTable"]["#widget_state"]["paragraphs"][$delta]["mode"] == 'remove') {
            continue;
          }
          if (!empty($rows["data"][1]["data"]["subform"])) {
            $row = _paragraphs_table_vertical($element["#paragraphsTable"]["#fields"], $rows["data"][1]["data"]["subform"], $delta);
            $variables["table"]["#rows"][$delta]["data"][1]["data"] = $row;
            if (empty($element["#paragraphsTable"]["#show_all"]) && !empty($rows["data"][1]["data"]["top"]["actions"])) {
              $actions = $rows["data"][1]["data"]["top"]["actions"];
              if (!empty($actions["actions"]["collapse_button"])) {
                unset($actions["actions"]["collapse_button"]);
              }
              $variables["table"]["#rows"][$delta]["data"][3]["data"] = $actions;
            }
          }
          else {
            unset($variables["table"]["#rows"][$delta]);
          }
        }
        if (empty($element["#paragraphsTable"]["#show_all"])) {
          $variables["table"]["#header"][] = [
            'data' => '',
            'class' => [
              'action',
            ],
          ];
        }
      }
    }
  }
  elseif (!empty($element["#cardinality"]) && $element["#cardinality"] == 1) {

    // Case single value.
    if (!$element["#paragraphsTable"]["#table_vertical"]) {
      $variables["elements"][0]["subform"] = _paragraphs_table_1_row($element["#paragraphsTable"]["#fields"], $variables["elements"][0]["subform"]);
      $variables["elements"][0]["subform"]["#header"] = _paragraphs_table_header($element["#paragraphsTable"]["#fields"], TRUE);
    }
    else {

      // Table vertical.
      $variables["elements"][0]["subform"] = _paragraphs_table_vertical($element["#paragraphsTable"]["#fields"], $variables["elements"][0]["subform"]);
    }
  }
}