acquia_dam-1.0.0-rc1/src/AcquiaDamMediaLibraryEditorOpener.php
src/AcquiaDamMediaLibraryEditorOpener.php
<?php
namespace Drupal\acquia_dam;
use Drupal\acquia_dam\Plugin\media\Source\Asset;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\editor\Ajax\EditorDialogSave;
use Drupal\media\MediaInterface;
use Drupal\media_library\MediaLibraryEditorOpener;
use Drupal\media_library\MediaLibraryState;
/**
* Decorates the media library editor opener with our customizations.
*
* @phpstan-ignore-next-line
*/
class AcquiaDamMediaLibraryEditorOpener extends MediaLibraryEditorOpener {
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* Acquia DAM image style helper.
*
* @var \Drupal\acquia_dam\ImageStyleHelper
*/
protected $imageStyleHelper;
/**
* Sets the entity type manager.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
*/
public function setEntityTypeManager(EntityTypeManagerInterface $entity_type_manager) {
$this->entityTypeManager = $entity_type_manager;
}
/**
* Sets the Acquia DAM image style helper.
*
* @param \Drupal\acquia_dam\ImageStyleHelper $imageStyleHelper
* Acquia DAM image style helper.
*/
public function setImageStyleHelper(ImageStyleHelper $imageStyleHelper) {
$this->imageStyleHelper = $imageStyleHelper;
}
/**
* {@inheritDoc}
*/
public function getSelectionResponse(MediaLibraryState $state, array $selected_ids): AjaxResponse {
$selected_media = $this->entityTypeManager->getStorage('media')->load(reset($selected_ids));
if (!$selected_media instanceof MediaInterface) {
return parent::getSelectionResponse($state, $selected_ids);
}
if (!$selected_media->getSource() instanceof Asset) {
return parent::getSelectionResponse($state, $selected_ids);
}
$response = new AjaxResponse();
$values = [
'attributes' => [
'data-entity-type' => 'media',
'data-entity-uuid' => $selected_media->uuid(),
'data-align' => 'center',
'data-embed-code-id' => $state->get('embed_code'),
],
];
if ($state->get('versioning') === 'manual') {
$values['attributes']['data-entity-revision'] = $selected_media->getRevisionId();
}
if ($position = $state->get('focal_point')) {
$image_style = $state->get('embed_code');
[$x, $y] = explode(',', $position, 2);
$this
->imageStyleHelper
->saveCropEntity(
$x,
$y,
$selected_media,
$image_style
);
}
$response->addCommand(new EditorDialogSave($values));
return $response;
}
}
