You are here

public function GeysirModalParagraphDeleteForm::ajaxDelete in Geysir 8

File

src/Form/GeysirModalParagraphDeleteForm.php, line 77

Class

GeysirModalParagraphDeleteForm
Functionality to delete a paragraph through a modal.

Namespace

Drupal\geysir\Form

Code

public function ajaxDelete(array $form, FormStateInterface $form_state) {
  $response = new AjaxResponse();

  // Get all necessary data to be able to correctly update the correct
  // field on the parent node.
  $route_match = $this
    ->getRouteMatch();
  $parent_entity_type = $route_match
    ->getParameter('parent_entity_type');
  $temporary_data = $form_state
    ->getTemporary();
  $parent_entity_revision = isset($temporary_data['parent_entity_revision']) ? $temporary_data['parent_entity_revision'] : $route_match
    ->getParameter('parent_entity_revision');
  $field_name = $route_match
    ->getParameter('field');
  $field_wrapper_id = $route_match
    ->getParameter('field_wrapper_id');

  // Get the parent revision if available, otherwise the parent.
  $parent_entity_revision = $this
    ->getParentRevisionOrParent($parent_entity_type, $parent_entity_revision);

  // Refresh the paragraphs field.
  $response
    ->addCommand(new ReplaceCommand('[data-geysir-field-paragraph-field-wrapper=' . $field_wrapper_id . ']', $parent_entity_revision
    ->get($field_name)
    ->view('default')));
  $response
    ->addCommand(new CloseModalDialogCommand());
  $response
    ->addCommand(new GeysirReattachBehaviors());
  return $response;
}