public function GeysirModalController::add in Geysir 8
Create a modal dialog to add a single paragraph.
1 string reference to 'GeysirModalController::add'
File
- src/
Controller/ GeysirModalController.php, line 64
Class
- GeysirModalController
- Controller for all modal dialogs.
Namespace
Drupal\geysir\ControllerCode
public function add($parent_entity_type, $parent_entity_bundle, $parent_entity_revision, $field, $field_wrapper_id, $delta, $paragraph, $paragraph_revision, $position, $js = 'nojs', $bundle = NULL) {
if ($js == 'ajax') {
$response = new AjaxResponse();
$paragraph_title = $this
->getParagraphTitle($parent_entity_type, $parent_entity_bundle, $field);
// Get the parent revision if available, otherwise the parent.
$entity = $this
->getParentRevisionOrParent($parent_entity_type, $parent_entity_revision);
if ($bundle) {
$newParagraph = Paragraph::create([
'type' => $bundle,
'langcode' => $entity
->language()
->getId(),
]);
$form = $this
->entityFormBuilder()
->getForm($newParagraph, 'geysir_modal_add', []);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Add @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
}
else {
$bundle_fields = $this->entityFieldManager
->getFieldDefinitions($parent_entity_type, $entity
->bundle());
$field_definition = $bundle_fields[$field];
$bundles = $field_definition
->getSetting('handler_settings')['target_bundles'];
if ($field_definition
->getSetting('handler_settings')['negate']) {
$bundles = array_diff_key(\Drupal::service('entity_type.bundle.info')
->getBundleInfo('paragraph'), $bundles);
}
$routeParams = [
'parent_entity_type' => $parent_entity_type,
'parent_entity_bundle' => $parent_entity_bundle,
'parent_entity_revision' => $parent_entity_revision,
'field' => $field,
'field_wrapper_id' => $field_wrapper_id,
'delta' => $delta,
'paragraph' => $paragraph
->id(),
'paragraph_revision' => $paragraph
->getRevisionId(),
'position' => $position,
'js' => $js,
];
$form = \Drupal::formBuilder()
->getForm('\\Drupal\\geysir\\Form\\GeysirModalParagraphAddSelectTypeForm', $routeParams, $bundles);
$response
->addCommand(new GeysirOpenModalDialogCommand($this
->t('Add @paragraph_title', [
'@paragraph_title' => $paragraph_title,
]), render($form)));
}
return $response;
}
return $this
->t('Javascript is required for this functionality to work properly.');
}