diff --git a/config/install/core.entity_view_display.eventinstance.eventinstance.default.yml b/config/install/core.entity_view_display.eventinstance.eventinstance.default.yml index 86f89c9b04d722e2b48dbf2cefaa8b02746cc563..2fb3cc9959de6528bb382d54b1737d9df443e440 100644 --- a/config/install/core.entity_view_display.eventinstance.eventinstance.default.yml +++ b/config/install/core.entity_view_display.eventinstance.eventinstance.default.yml @@ -28,29 +28,6 @@ content: label: above settings: { } third_party_settings: { } - inherited_title: - type: string - weight: 0 - region: content - label: above - settings: - link_to_entity: false - third_party_settings: { } - owen_field: - type: text_default - weight: 3 - region: content - label: above - settings: { } - third_party_settings: { } - title: - type: string - weight: 0 - region: content - label: above - settings: - link_to_entity: false - third_party_settings: { } hidden: body: true - inherited_description: true + title: true diff --git a/recurring_events.routing.yml b/recurring_events.routing.yml index b054bd0142b1fa1b48aa9e675cc2791f04be3239..8ce08967c65d98631bd43aad838eb394f5338e8c 100644 --- a/recurring_events.routing.yml +++ b/recurring_events.routing.yml @@ -81,6 +81,7 @@ entity.eventinstance.canonical: path: '/events/{eventinstance}' defaults: _entity_view: 'eventinstance' + _title_callback: '\Drupal\recurring_events\Controller\EventInstanceController::getTitle' requirements: _entity_access: 'eventinstance.view' options: diff --git a/src/Controller/EventInstanceController.php b/src/Controller/EventInstanceController.php index b680e756556531f953d7c5b2153ca85a8516a0f2..46d44d292a571141a4d47a308cafae714bd942e4 100644 --- a/src/Controller/EventInstanceController.php +++ b/src/Controller/EventInstanceController.php @@ -12,6 +12,7 @@ use Drupal\recurring_events\EventInterface; use Drupal\Component\Utility\Xss; use Drupal\Core\Url; use Drupal\Core\Link; +use Drupal\Core\Language\LanguageManagerInterface; /** * The EventInstanceController class. @@ -39,6 +40,20 @@ class EventInstanceController extends ControllerBase implements ContainerInjecti */ protected $systemManager; + /** + * The language manager service. + * + * @var \Drupal\Core\Language\LanguageManagerInterface + */ + protected $languageManager; + + /** + * The current language code. + * + * @var string + */ + protected $langCode; + /** * Constructs a EventInstanceController object. * @@ -48,11 +63,15 @@ class EventInstanceController extends ControllerBase implements ContainerInjecti * The renderer service. * @param \Drupal\system\SystemManager $systemManager * System manager service. + * @param Drupal\Core\Language\LanguageManagerInterface $language_manager + * The language manager service. */ - public function __construct(DateFormatterInterface $date_formatter, RendererInterface $renderer, SystemManager $systemManager) { + public function __construct(DateFormatterInterface $date_formatter, RendererInterface $renderer, SystemManager $systemManager, LanguageManagerInterface $language_manager) { $this->dateFormatter = $date_formatter; $this->renderer = $renderer; $this->systemManager = $systemManager; + $this->languageManager = $language_manager; + $this->langCode = $this->languageManager->getCurrentLanguage()->getId(); } /** @@ -62,15 +81,33 @@ class EventInstanceController extends ControllerBase implements ContainerInjecti return new static( $container->get('date.formatter'), $container->get('renderer'), - $container->get('system.manager') + $container->get('system.manager'), + $container->get('language_manager') ); } + /** + * Get the page title for an eventinstance. + * + * @param \Drupal\recurring_events\EventInterface $eventinstance + * A eventinstance object. + * + * @return string + * The title of the page. + */ + public function getTitle(EventInterface $eventinstance) { + $title = $eventinstance->title->value; + if ($eventinstance->hasTranslation($this->langCode)) { + $title = $eventinstance->getTranslation($this->langCode)->title->value; + } + return $title; + } + /** * Displays an eventinstance revision. * * @param int $eventinstance_revision - * The Default entity revision ID. + * The eventinstance revision ID. * * @return array * An array suitable for drupal_render(). @@ -86,7 +123,7 @@ class EventInstanceController extends ControllerBase implements ContainerInjecti * Page title callback for an eventinstance revision. * * @param int $eventinstance_revision - * The Default entity revision ID. + * The eventinstance revision ID. * * @return string * The page title. @@ -103,7 +140,7 @@ class EventInstanceController extends ControllerBase implements ContainerInjecti * Generates an overview table of older revisions of an eventinstance. * * @param \Drupal\recurring_events\EventInterface $eventinstance - * A Default entity object. + * A eventinstance object. * * @return array * An array as expected by drupal_render(). diff --git a/src/Controller/EventSeriesController.php b/src/Controller/EventSeriesController.php index a1e49a0e222705d34519da61a1778dd544946cb7..ff7e5dec275b3d301f8e644b8bcdffae53c105b2 100644 --- a/src/Controller/EventSeriesController.php +++ b/src/Controller/EventSeriesController.php @@ -84,7 +84,7 @@ class EventSeriesController extends ControllerBase implements ContainerInjection * Displays an eventseries revision. * * @param int $eventseries_revision - * The Default entity revision ID. + * The eventseries revision ID. * * @return array * An array suitable for drupal_render(). @@ -100,7 +100,7 @@ class EventSeriesController extends ControllerBase implements ContainerInjection * Page title callback for an eventseries revision. * * @param int $eventseries_revision - * The Default entity revision ID. + * The eventseries revision ID. * * @return string * The page title. @@ -117,7 +117,7 @@ class EventSeriesController extends ControllerBase implements ContainerInjection * Generates an overview table of older revisions of an eventseries. * * @param \Drupal\recurring_events\EventInterface $eventseries - * A Default entity object. + * A eventseries object. * * @return array * An array as expected by drupal_render(). diff --git a/src/Entity/EventInstance.php b/src/Entity/EventInstance.php index cdb17a97835d72adc515688684b29b9f1af9816a..5c085037bd6e6e626eae0872d54ff66e414b25d9 100644 --- a/src/Entity/EventInstance.php +++ b/src/Entity/EventInstance.php @@ -101,7 +101,8 @@ use Drupal\user\UserInterface; * "revision" = "vid", * "published" = "status", * "langcode" = "langcode", - * "uuid" = "uuid" + * "uuid" = "uuid", + * "label" = "title" * }, * revision_metadata_keys = { * "revision_user" = "revision_uid",