You are here

public static function ParagraphsFrontendUIAddSet::addMoreAjax in Paragraphs frontend ui 8

File

src/Form/ParagraphsFrontendUIAddSet.php, line 85

Class

ParagraphsFrontendUIAddSet
Class CleanupUrlAliases.

Namespace

Drupal\paragraphs_frontend_ui\Form

Code

public static function addMoreAjax(array $form, FormStateInterface $form_state) {
  $build_info = $form_state
    ->getBuildInfo();
  $triggering_paragraph = $build_info['paragraph'];
  $trigger = $form_state
    ->getTriggeringElement()['#name'];
  $set = substr($trigger, 0, -8);
  if (is_numeric($set)) {
    $set = ParagraphSet::load($set);
    $set_paragraph = Paragraph::load($set
      ->get('field_paragraph')
      ->getValue()[0]['target_id']);
    $parent = $triggering_paragraph
      ->getParentEntity();
    $parent_type = $parent
      ->getEntityTypeId();
    $parent_bundle = $parent
      ->getType();
    $parent_entity_id = $parent
      ->id();
    $parent_field_name = $triggering_paragraph
      ->get('parent_field_name')
      ->getValue()[0]['value'];
    $paragraph_items = $parent->{$parent_field_name}
      ->getValue();
    $paragraphs_new = [];
    foreach ($paragraph_items as $delta => $paragraph_item) {
      $paragraphs_new[] = $paragraph_item;
      if ($paragraph_item['target_id'] == $triggering_paragraph
        ->id()) {
        $new_paragraph = $set_paragraph
          ->createDuplicate();
        $new_paragraph
          ->save();
        $paragraphs_new[] = [
          'target_id' => $new_paragraph
            ->id(),
          'target_revision_id' => $new_paragraph
            ->getRevisionId(),
        ];
      }
    }
    $parent->{$parent_field_name}
      ->setValue($paragraphs_new);
    $parent
      ->save();
    $identifier = '[data-paragraphs-frontend-ui=' . $parent_field_name . '-' . $parent
      ->id() . ']';
    $response = new AjaxResponse();

    // Refresh the paragraphs field.
    $response
      ->addCommand(new ReplaceCommand($identifier, $parent
      ->get($parent_field_name)
      ->view('default')));
    return $response;
  }

  /*
      $command = new CloseModalDialogCommand();
      $response->addCommand($command);
      return $response;*/
}