Mercurial > hg > isophonics-drupal-site
diff core/modules/views/src/Entity/Render/EntityTranslationRendererBase.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/views/src/Entity/Render/EntityTranslationRendererBase.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,54 @@ +<?php + +namespace Drupal\views\Entity\Render; + +use Drupal\views\Plugin\views\query\QueryPluginBase; +use Drupal\views\ResultRow; + +/** + * Defines a base class for entity translation renderers. + */ +abstract class EntityTranslationRendererBase extends RendererBase { + + /** + * Returns the language code associated with the given row. + * + * @param \Drupal\views\ResultRow $row + * The result row. + * + * @return string + * A language code. + */ + abstract public function getLangcode(ResultRow $row); + + /** + * {@inheritdoc} + */ + public function query(QueryPluginBase $query, $relationship = NULL) { + } + + /** + * {@inheritdoc} + */ + public function preRender(array $result) { + $view_builder = $this->view->rowPlugin->entityManager->getViewBuilder($this->entityType->id()); + + /** @var \Drupal\views\ResultRow $row */ + foreach ($result as $row) { + // @todo Take relationships into account. + // See https://www.drupal.org/node/2457999. + $entity = $row->_entity; + $entity->view = $this->view; + $this->build[$entity->id()] = $view_builder->view($entity, $this->view->rowPlugin->options['view_mode'], $this->getLangcode($row)); + } + } + + /** + * {@inheritdoc} + */ + public function render(ResultRow $row) { + $entity_id = $row->_entity->id(); + return $this->build[$entity_id]; + } + +}