class ParagraphEntityForm in Paragraphs Inline Entity Form 8
Same name and namespace in other branches
- 2.x src/Plugin/EntityBrowser/Widget/ParagraphEntityForm.php \Drupal\paragraphs_inline_entity_form\Plugin\EntityBrowser\Widget\ParagraphEntityForm
- 2.0.x src/Plugin/EntityBrowser/Widget/ParagraphEntityForm.php \Drupal\paragraphs_inline_entity_form\Plugin\EntityBrowser\Widget\ParagraphEntityForm
A wrapper for EntityForm to provide a two step form where on the first step the user can select the Entity type and on the second step, to create content
Plugin annotation
@EntityBrowserWidget(
id = "paragraph_entity_form",
label = @Translation("Paragraph form"),
description = @Translation("Provides entity form widget."),
auto_select = FALSE
)
Hierarchy
- class \Drupal\paragraphs_inline_entity_form\Plugin\EntityBrowser\Widget\ParagraphEntityForm extends \Drupal\entity_browser_entity_form\Plugin\EntityBrowser\Widget\EntityForm
Expanded class hierarchy of ParagraphEntityForm
File
- src/
Plugin/ EntityBrowser/ Widget/ ParagraphEntityForm.php, line 19
Namespace
Drupal\paragraphs_inline_entity_form\Plugin\EntityBrowser\WidgetView source
class ParagraphEntityForm extends EntityForm {
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'entity_type' => 'paragraph',
'submit_text' => $this
->t('Save paragraph'),
] + parent::defaultConfiguration();
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form = parent::buildConfigurationForm($form, $form_state);
$form['bundle'] = [
'#type' => 'select',
'#title' => $this
->t('Bundle'),
'#options' => [
'Paragraph Selector',
],
];
return $form;
}
/**
* {@inheritdoc}
*
* @todo fix the edit form
*/
public function getForm(array &$original_form, FormStateInterface $form_state, array $additional_widget_parameters) {
if (empty($this->configuration['entity_type']) || empty($this->configuration['form_mode'])) {
return [
'#markup' => $this
->t('The settings for %label widget are not configured correctly.', [
'%label' => $this
->label(),
]),
];
}
// Check if we need to show the content type selector form or the entity create form
if (!empty($form_state
->getUserInput()['selected_bundle'])) {
$this->configuration['bundle'] = $form_state
->getUserInput()['selected_bundle'];
}
if ($this->configuration['bundle'] == '0') {
$form = $this
->entitySelectorForm($original_form, $form_state, $additional_widget_parameters);
return $form;
}
if ($form_state
->has([
'entity_browser',
'widget_context',
])) {
$this
->handleWidgetContext($form_state
->get([
'entity_browser',
'widget_context',
]));
}
$form = parent::getForm($original_form, $form_state, $additional_widget_parameters);
$form['#submit'] = [
[
'Drupal\\inline_entity_form\\ElementSubmit',
'trigger',
],
];
$form['actions'] = [
'#type' => 'actions',
'submit' => [
'#type' => 'submit',
'#value' => $this->configuration['submit_text'],
'#eb_widget_main_submit' => empty($form_state
->getValues()) ? FALSE : TRUE,
'#attributes' => [
'class' => [
'is-entity-browser-submit',
],
],
'#button_type' => 'primary',
],
];
$form['actions']['submit']['#ief_submit_trigger'] = TRUE;
$form['actions']['submit']['#ief_submit_trigger_all'] = TRUE;
$form['#attached']['drupalSettings']['entity_browser_widget']['auto_select'] = TRUE;
$form['inline_entity_form'] = [
'#type' => 'inline_entity_form',
'#op' => 'add',
'#entity_type' => $this->configuration['entity_type'],
'#bundle' => $this->configuration['bundle'],
'#form_mode' => $this->configuration['form_mode'],
];
return $form;
}
/**
* {@inheritdoc}
*/
public function entitySelectorForm(array &$original_form, FormStateInterface $form_state, array $additional_widget_parameters) {
$path_parts = array_values(array_filter($additional_widget_parameters['path_parts']));
$form['#prefix'] = '<div id="paragraphs-wysiwyg">';
$form['#suffix'] = '</div>';
$form['selected_bundle'] = [
'#type' => 'hidden',
'#value' => '',
];
$form['actions'] = [
'#type' => 'actions',
];
$form['#attached']['library'][] = 'paragraphs_inline_entity_form/dialog';
if ($path_parts[0] == 'entity-embed') {
$embed_button = $this->entityTypeManager
->getStorage('embed_button')
->load($path_parts[3]);
}
$allowed_bundles = $embed_button
->getTypeSetting('bundles');
$bundles = $this
->getAllowedBundles($allowed_bundles);
$paragraphs_type_storage = $this->entityTypeManager
->getStorage('paragraphs_type');
$default_icon = drupal_get_path('module', 'paragraphs_inline_entity_form') . '/images/paragraph_thumb.png';
foreach ($bundles as $bundle => $label) {
$icon_url = $default_icon;
if ($paragraphs_type_storage
->load($bundle)
->getIconFile()) {
$style = $this->entityTypeManager
->getStorage('image_style')
->load('thumbnail');
$path = $paragraphs_type_storage
->load($bundle)
->getIconFile()
->getFileUri();
$icon_url = $style
->buildUrl($path);
}
$form['items'][$bundle] = [
'#type' => 'image_button',
'#prefix' => '<div class="paragraphs-wysiwyg-add-type">',
'#suffix' => '<span>' . $label . '</span></div>',
'#src' => $icon_url,
'#value' => $label,
'#attributes' => [
'data-paragraph-bundle' => $bundle,
],
];
}
return $form;
}
/**
* Returns a list of allowed Paragraph bundles to add.
*
* @param array $allowed_bundles
* An array with Paragraph bundles which are allowed to add.
*
* @return array
* Array with allowed Paragraph bundles.
*/
protected function getAllowedBundles($allowed_bundles = NULL) {
$bundles = $this->entityTypeBundleInfo
->getBundleInfo('paragraph');
if (is_array($allowed_bundles) && count($allowed_bundles)) {
// Preserve order of allowed bundles setting.
$allowed_bundles_order = array_flip($allowed_bundles);
// Only keep allowed bundles.
$bundles = array_intersect_key(array_replace($allowed_bundles_order, $bundles), $allowed_bundles_order);
}
// Enrich bundles with their label.
foreach ($bundles as $bundle => $props) {
$label = empty($props['label']) ? ucfirst($bundle) : $props['label'];
$bundles[$bundle] = $label;
}
return $bundles;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ParagraphEntityForm:: |
public | function | ||
ParagraphEntityForm:: |
public | function | ||
ParagraphEntityForm:: |
public | function | ||
ParagraphEntityForm:: |
protected | function | Returns a list of allowed Paragraph bundles to add. | |
ParagraphEntityForm:: |
public | function | @todo fix the edit form |