public function ParagraphsFrontendUIAddBelow::addMoreAjax in Paragraphs frontend ui 8.2
File
- src/
Form/ ParagraphsFrontendUIAddBelow.php, line 100
Class
- ParagraphsFrontendUIAddBelow
- Class CleanupUrlAliases.
Namespace
Drupal\paragraphs_frontend_ui\FormCode
public 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 = LibraryItem::load($set);
$target_id = $set
->get('paragraphs')
->getValue()[0]['target_id'];
$set_paragraph = Paragraph::load($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();
// set the language off the parent
$langcode = \Drupal::service('language_manager')
->getCurrentLanguage()
->getId();
$new_paragraph
->set('langcode', $langcode);
$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')));
$response
->addCommand(new CloseModalDialogCommand());
return $response;
}
}