Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EWPP-508: Fix labels of fields in full and teaser view modes. #714

Open
wants to merge 1 commit into
base: 2.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,20 @@ function oe_theme_content_call_proposals_node_view_alter(array &$build, EntityIn
// Field labels are different in frontend and backend.
// Here we override them, in full and teaser view mode.
$label_overrides = [];
if (in_array($build['#view_mode'], ['full', 'teaser'])
&& ($entity->get('oe_call_proposals_deadline')->count() > 1)) {
if ($entity->get('oe_call_proposals_deadline')->count() > 1) {
$label_overrides['oe_call_proposals_deadline'] = t('Deadline dates');
}

if ($build['#view_mode'] === 'full') {
$label_overrides += [
'oe_departments' => t('Departments'),
'oe_call_proposals_grants' => t('Results'),
];
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full', 'teaser']);

if ($entity->get('oe_departments')->count() === 1) {
$label_overrides['oe_departments'] = t('Department');
}
}
$label_overrides += [
'oe_departments' => t('Departments'),
'oe_call_proposals_grants' => t('Results'),
];

foreach ($label_overrides as $name => $label_override) {
if (!$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
if ($entity->get('oe_departments')->count() === 1) {
$label_overrides['oe_departments'] = t('Department');
}

_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full']);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,15 @@ function oe_theme_content_call_tenders_node_view_alter(array &$build, EntityInte

// Field labels are different in frontend and backend.
// Here we override them, in full and teaser view mode.
if (in_array($build['#view_mode'], ['full', 'teaser'])) {
$label_overrides = [
'body' => t('Description'),
'oe_departments' => t('Departments'),
];
$label_overrides = [
'body' => t('Description'),
'oe_departments' => t('Departments'),
];

if ($entity->get('oe_departments')->count() === 1) {
$label_overrides['oe_departments'] = t('Department');
}

foreach ($label_overrides as $name => $label_override) {
if (!$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
if ($entity->get('oe_departments')->count() === 1) {
$label_overrides['oe_departments'] = t('Department');
}
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full', 'teaser']);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,9 @@ use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
function oe_theme_content_entity_contact_oe_contact_view_alter(array &$build, ContactInterface $entity, EntityViewDisplayInterface $display) {
// Field labels are different in frontend and backend.
// Here we override them, per view mode.
if ($build['#view_mode'] === 'full') {
$label_overrides = [
'oe_address' => t('Postal address'),
'oe_social_media' => t('Social media'),
];

foreach ($label_overrides as $name => $label_override) {
if ($entity->hasField($name) && !$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
}
$label_overrides = [
'oe_address' => t('Postal address'),
'oe_social_media' => t('Social media'),
];
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full']);
}
55 changes: 10 additions & 45 deletions modules/oe_theme_content_event/oe_theme_content_event.module
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,6 @@ use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\oe_theme\ValueObject\DateValueObject;

/**
* Implements hook_theme().
*/
function oe_theme_content_event_theme() {
return [
'oe_theme_content_event_registration_button' => [
'variables' => [
'label' => '',
'url' => '',
'description' => '',
'enabled' => FALSE,
'show_button' => TRUE,
],
],
'oe_theme_content_event_summary' => [
'variables' => [
'text' => '',
],
],
'oe_theme_content_event_contacts' => [
'variables' => [
'general' => [],
'press' => [],
],
],
];
}

/**
* Implements hook_ENTITY_TYPE_view_alter().
*/
Expand All @@ -50,23 +22,16 @@ function oe_theme_content_event_node_view_alter(array &$build, EntityInterface $

// Field labels are different in frontend and backend.
// Here we override them, per view mode.
if ($build['#view_mode'] === 'full') {
$label_overrides = [
'oe_event_dates' => t('When'),
'oe_event_online_type' => t('Live stream'),
'oe_event_languages' => t('Languages'),
'oe_event_website' => t('Website'),
'oe_event_registration_capacity' => t('Number of seats'),
'oe_event_entrance_fee' => t('Entrance fee'),
'oe_event_venue' => t('Where'),
];

foreach ($label_overrides as $name => $label_override) {
if (!$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
}
$label_overrides = [
'oe_event_dates' => t('When'),
'oe_event_online_type' => t('Live stream'),
'oe_event_languages' => t('Languages'),
'oe_event_website' => t('Website'),
'oe_event_registration_capacity' => t('Number of seats'),
'oe_event_entrance_fee' => t('Entrance fee'),
'oe_event_venue' => t('Where'),
];
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full']);
}

/**
Expand Down
15 changes: 4 additions & 11 deletions modules/oe_theme_content_news/oe_theme_content_news.module
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,9 @@ function oe_theme_content_news_node_view_alter(array &$build, EntityInterface $e
return;
}

if ($build['#view_mode'] === 'full') {
// Rename field labels based on number of items.
$plural_label_overrides = [
'oe_author' => t('Authors'),
];

foreach ($plural_label_overrides as $name => $label_override) {
if (!$entity->get($name)->isEmpty() && $entity->get($name)->count() > 1 && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
$label_overrides = [];
if ($entity->get('oe_author')->count() > 1) {
$label_overrides['oe_author'] = t('Authors');
}
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full']);
}
26 changes: 10 additions & 16 deletions modules/oe_theme_content_project/oe_theme_content_project.module
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,16 @@ function oe_theme_content_project_node_view_alter(array &$build, EntityInterface

// Field labels are different in frontend and backend.
// Here we override them, per view mode.
if ($build['#view_mode'] === 'full') {
$label_overrides = [
'oe_project_dates' => t('Project duration'),
'oe_project_website' => t('Project website'),
];
$label_overrides = [
'oe_project_dates' => t('Project duration'),
'oe_project_website' => t('Project website'),
];

// If there is only a start date, set "Start date" as label.
$dates = $entity->get('oe_project_dates')->getValue();
if (!empty($dates[0]) && (empty($dates[0]['end_value']) || $dates[0]['value'] === $dates[0]['end_value'])) {
$label_overrides['oe_project_dates'] = t('Start date');
}

foreach ($label_overrides as $name => $label_override) {
if (!$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
// If there is only a start date, set "Start date" as label.
$dates = $entity->get('oe_project_dates')->getValue();
if (!empty($dates[0]) && (empty($dates[0]['end_value']) || $dates[0]['value'] === $dates[0]['end_value'])) {
$label_overrides['oe_project_dates'] = t('Start date');
}
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full']);

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,17 @@ function oe_theme_content_publication_node_view_alter(array &$build, EntityInter
}

// Override field labels.
if ($build['#view_mode'] === 'full') {
$label_overrides = [
'oe_reference_codes' => t('Identification'),
];

if ($entity->get('oe_departments')->count() > 1) {
$label_overrides['oe_departments'] = t('Related departments');
}

if ($entity->get('oe_publication_countries')->count() > 1) {
$label_overrides['oe_publication_countries'] = t('Countries');
}

foreach ($label_overrides as $name => $label_override) {
if (!$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
$label_overrides = [
'oe_reference_codes' => t('Identification'),
];

if ($entity->get('oe_departments')->count() > 1) {
$label_overrides['oe_departments'] = t('Related departments');
}

if ($entity->get('oe_publication_countries')->count() > 1) {
$label_overrides['oe_publication_countries'] = t('Countries');
}
_oe_theme_helper_field_view_label_override($build, $entity, $label_overrides, ['full']);

}
22 changes: 22 additions & 0 deletions modules/oe_theme_helper/oe_theme_helper.module
Original file line number Diff line number Diff line change
Expand Up @@ -210,3 +210,25 @@ function template_preprocess_oe_theme_helper_call_status(array &$variables) {
function oe_theme_helper_locale_translation_projects_alter(&$projects) {
$projects['oe_theme_helper']['info']['interface translation server pattern'] = drupal_get_path('module', 'oe_theme_helper') . '/translations/%project-%language.po';
}

/**
* Helper function for overriding field labels before rendering.
*
* @param $build
* The renderable array.
* @param EntityInterface $entity
* The entity.
* @param $label_overrides
* Array with overridden labels keyed by field name.
* @param $display_modes
* Array with display modes.
*/
function _oe_theme_helper_field_view_label_override(&$build, EntityInterface $entity, $label_overrides, $display_modes): void {
if (in_array($build['#view_mode'], $display_modes)) {
foreach ($label_overrides as $name => $label_override) {
if ($entity->hasField($name) && !$entity->get($name)->isEmpty() && isset($build[$name]['#title'])) {
$build[$name]['#title'] = $label_override;
}
}
}
}