comparison core/modules/quickedit/src/QuickEditController.php @ 18:af1871eacc83

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:33:08 +0100
parents 129ea1e6d783
children
comparison
equal deleted inserted replaced
17:129ea1e6d783 18:af1871eacc83
1 <?php 1 <?php
2 2
3 namespace Drupal\quickedit; 3 namespace Drupal\quickedit;
4 4
5 use Drupal\Core\Controller\ControllerBase; 5 use Drupal\Core\Controller\ControllerBase;
6 use Drupal\Core\Entity\EntityRepositoryInterface;
6 use Drupal\Core\Form\FormState; 7 use Drupal\Core\Form\FormState;
7 use Drupal\Core\Render\RendererInterface; 8 use Drupal\Core\Render\RendererInterface;
8 use Drupal\Core\TempStore\PrivateTempStoreFactory; 9 use Drupal\Core\TempStore\PrivateTempStoreFactory;
9 use Symfony\Component\DependencyInjection\ContainerInterface; 10 use Symfony\Component\DependencyInjection\ContainerInterface;
10 use Symfony\Component\HttpFoundation\JsonResponse; 11 use Symfony\Component\HttpFoundation\JsonResponse;
11 use Symfony\Component\HttpFoundation\Request; 12 use Symfony\Component\HttpFoundation\Request;
12 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; 13 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
13 use Drupal\Core\Ajax\AjaxResponse; 14 use Drupal\Core\Ajax\AjaxResponse;
14 use Drupal\Core\Entity\EntityInterface; 15 use Drupal\Core\Entity\EntityInterface;
16 use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
15 use Drupal\quickedit\Ajax\FieldFormCommand; 17 use Drupal\quickedit\Ajax\FieldFormCommand;
16 use Drupal\quickedit\Ajax\FieldFormSavedCommand; 18 use Drupal\quickedit\Ajax\FieldFormSavedCommand;
17 use Drupal\quickedit\Ajax\FieldFormValidationErrorsCommand; 19 use Drupal\quickedit\Ajax\FieldFormValidationErrorsCommand;
18 use Drupal\quickedit\Ajax\EntitySavedCommand; 20 use Drupal\quickedit\Ajax\EntitySavedCommand;
19 21
47 * The renderer. 49 * The renderer.
48 * 50 *
49 * @var \Drupal\Core\Render\RendererInterface 51 * @var \Drupal\Core\Render\RendererInterface
50 */ 52 */
51 protected $renderer; 53 protected $renderer;
54
55 /**
56 * The entity display repository service.
57 *
58 * @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface
59 */
60 protected $entityDisplayRepository;
61
62 /**
63 * The entity repository.
64 *
65 * @var \Drupal\Core\Entity\EntityRepositoryInterface
66 */
67 protected $entityRepository;
52 68
53 /** 69 /**
54 * Constructs a new QuickEditController. 70 * Constructs a new QuickEditController.
55 * 71 *
56 * @param \Drupal\Core\TempStore\PrivateTempStoreFactory $temp_store_factory 72 * @param \Drupal\Core\TempStore\PrivateTempStoreFactory $temp_store_factory
59 * The in-place editing metadata generator. 75 * The in-place editing metadata generator.
60 * @param \Drupal\quickedit\EditorSelectorInterface $editor_selector 76 * @param \Drupal\quickedit\EditorSelectorInterface $editor_selector
61 * The in-place editor selector. 77 * The in-place editor selector.
62 * @param \Drupal\Core\Render\RendererInterface $renderer 78 * @param \Drupal\Core\Render\RendererInterface $renderer
63 * The renderer. 79 * The renderer.
64 */ 80 * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
65 public function __construct(PrivateTempStoreFactory $temp_store_factory, MetadataGeneratorInterface $metadata_generator, EditorSelectorInterface $editor_selector, RendererInterface $renderer) { 81 * The entity display repository service.
82 * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
83 * The entity repository.
84 */
85 public function __construct(PrivateTempStoreFactory $temp_store_factory, MetadataGeneratorInterface $metadata_generator, EditorSelectorInterface $editor_selector, RendererInterface $renderer, EntityDisplayRepositoryInterface $entity_display_repository, EntityRepositoryInterface $entity_repository) {
66 $this->tempStoreFactory = $temp_store_factory; 86 $this->tempStoreFactory = $temp_store_factory;
67 $this->metadataGenerator = $metadata_generator; 87 $this->metadataGenerator = $metadata_generator;
68 $this->editorSelector = $editor_selector; 88 $this->editorSelector = $editor_selector;
69 $this->renderer = $renderer; 89 $this->renderer = $renderer;
90 if (!$entity_display_repository) {
91 @trigger_error('The entity_display.repository service must be passed to QuickEditController::__construct(), it is required before Drupal 9.0.0. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED);
92 $entity_display_repository = \Drupal::service('entity_display.repository');
93 }
94 $this->entityDisplayRepository = $entity_display_repository;
95 if (!$entity_repository) {
96 @trigger_error('The entity.repository service must be passed to QuickEditController::__construct(), it is required before Drupal 9.0.0. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED);
97 $entity_repository = \Drupal::service('entity.repository');
98 }
99 $this->entityRepository = $entity_repository;
70 } 100 }
71 101
72 /** 102 /**
73 * {@inheritdoc} 103 * {@inheritdoc}
74 */ 104 */
75 public static function create(ContainerInterface $container) { 105 public static function create(ContainerInterface $container) {
76 return new static( 106 return new static(
77 $container->get('tempstore.private'), 107 $container->get('tempstore.private'),
78 $container->get('quickedit.metadata.generator'), 108 $container->get('quickedit.metadata.generator'),
79 $container->get('quickedit.editor.selector'), 109 $container->get('quickedit.editor.selector'),
80 $container->get('renderer') 110 $container->get('renderer'),
111 $container->get('entity_display.repository'),
112 $container->get('entity.repository')
81 ); 113 );
82 } 114 }
83 115
84 /** 116 /**
85 * Returns the metadata for a set of fields. 117 * Returns the metadata for a set of fields.
101 $metadata = []; 133 $metadata = [];
102 foreach ($fields as $field) { 134 foreach ($fields as $field) {
103 list($entity_type, $entity_id, $field_name, $langcode, $view_mode) = explode('/', $field); 135 list($entity_type, $entity_id, $field_name, $langcode, $view_mode) = explode('/', $field);
104 136
105 // Load the entity. 137 // Load the entity.
106 if (!$entity_type || !$this->entityManager()->getDefinition($entity_type)) { 138 if (!$entity_type || !$this->entityTypeManager()->getDefinition($entity_type)) {
107 throw new NotFoundHttpException(); 139 throw new NotFoundHttpException();
108 } 140 }
109 $entity = $this->entityManager()->getStorage($entity_type)->load($entity_id); 141 $entity = $this->entityTypeManager()->getStorage($entity_type)->load($entity_id);
110 if (!$entity) { 142 if (!$entity) {
111 throw new NotFoundHttpException(); 143 throw new NotFoundHttpException();
112 } 144 }
113 145
114 // Validate the field name and language. 146 // Validate the field name and language.
254 * Rendered HTML. 286 * Rendered HTML.
255 * 287 *
256 * @see hook_quickedit_render_field() 288 * @see hook_quickedit_render_field()
257 */ 289 */
258 protected function renderField(EntityInterface $entity, $field_name, $langcode, $view_mode_id) { 290 protected function renderField(EntityInterface $entity, $field_name, $langcode, $view_mode_id) {
259 $entity_view_mode_ids = array_keys($this->entityManager()->getViewModes($entity->getEntityTypeId())); 291 $entity_view_mode_ids = array_keys($this->entityDisplayRepository->getViewModes($entity->getEntityTypeId()));
260 if (in_array($view_mode_id, $entity_view_mode_ids)) { 292 if (in_array($view_mode_id, $entity_view_mode_ids)) {
261 $entity = \Drupal::entityManager()->getTranslationFromContext($entity, $langcode); 293 $entity = $this->entityRepository->getTranslationFromContext($entity, $langcode);
262 $output = $entity->get($field_name)->view($view_mode_id); 294 $output = $entity->get($field_name)->view($view_mode_id);
263 } 295 }
264 else { 296 else {
265 // Each part of a custom (non-Entity Display) view mode ID is separated 297 // Each part of a custom (non-Entity Display) view mode ID is separated
266 // by a dash; the first part must be the module name. 298 // by a dash; the first part must be the module name.