EntityBrowserController.php in Entity Browser 8.2
File
src/Controllers/EntityBrowserController.php
View source
<?php
namespace Drupal\entity_browser\Controllers;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\CloseDialogCommand;
use Drupal\Core\Ajax\OpenDialogCommand;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Form\FormState;
use Drupal\Core\Entity\EntityInterface;
use Drupal\entity_browser\Ajax\ValueUpdatedCommand;
use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Ajax\AlertCommand;
use Symfony\Component\HttpFoundation\ParameterBag;
class EntityBrowserController extends ControllerBase {
public function entityBrowserEdit(EntityInterface $entity, Request $request) {
$trigger_name = $request->request
->get('_triggering_element_name');
$edit_button = strpos($trigger_name, 'edit_button') !== FALSE;
if ($edit_button) {
$original_request = $request->request;
$request->request = new ParameterBag();
}
$entity_type = $entity
->getEntityType();
if ($entity_type
->getFormClass('edit')) {
$operation = 'edit';
}
elseif ($entity_type
->getFormClass('default')) {
$operation = 'default';
}
if (!empty($operation)) {
$form_object = $this
->entityTypeManager()
->getFormObject($entity
->getEntityTypeId(), $operation);
$form_object
->setEntity($entity);
$form_state = (new FormState())
->setFormObject($form_object)
->disableRedirect();
$form = $this
->formBuilder()
->buildForm($form_object, $form_state);
}
if ($edit_button) {
$request->request = $original_request;
}
if ($operation && $form_state && !$form_state
->isExecuted()) {
$form['#attached']['library'][] = 'core/drupal.dialog.ajax';
$title = $this
->t('Edit entity @entity', [
'@entity' => $entity
->label(),
]);
$response = AjaxResponse::create()
->addCommand(new OpenDialogCommand('#' . $entity
->getEntityTypeId() . '-' . $entity
->id() . '-edit-dialog', $title, $form, [
'modal' => TRUE,
'width' => 800,
]));
return $response;
}
else {
$response = AjaxResponse::create()
->addCommand(new CloseDialogCommand('#' . $entity
->getEntityTypeId() . '-' . $entity
->id() . '-edit-dialog'));
$details_id = $request->query
->get('details_id');
if (!empty($details_id)) {
$response
->addCommand(new ValueUpdatedCommand($details_id));
if (empty($operation)) {
$response
->addCommand(new AlertCommand($this
->t("An edit form couldn't be found.")));
}
}
return $response;
}
}
}