farm-2.x-dev/modules/core/entity/modules/fields/farm_entity_fields.module
modules/core/entity/modules/fields/farm_entity_fields.module
<?php
/**
* @file
* Contains farm_entity_fields.module.
*/
use Drupal\Core\Entity\EntityTypeInterface;
/**
* Implements hook_entity_base_field_info().
*/
function farm_entity_fields_entity_base_field_info(EntityTypeInterface $entity_type) {
// Include helper functions.
\Drupal::moduleHandler()->loadInclude('farm_entity_fields', 'inc', 'farm_entity_fields.base_fields');
// Add common base fields to all asset types.
if ($entity_type->id() == 'asset') {
return farm_entity_fields_asset_base_fields();
}
// Add common base fields to all log types.
elseif ($entity_type->id() == 'log') {
return farm_entity_fields_log_base_fields();
}
// Add common base fields to all plan types.
elseif ($entity_type->id() == 'plan') {
return farm_entity_fields_plan_base_fields();
}
}
/**
* Implements hook_entity_base_field_info_alter().
*/
function farm_entity_fields_entity_base_field_info_alter(&$fields, EntityTypeInterface $entity_type) {
// Only alter asset, log, and plan fields.
if (!in_array($entity_type->id(), ['asset', 'log', 'plan'])) {
return;
}
$alter_fields = [
'name' => [
'label' => 'hidden',
'weight' => -100,
],
'timestamp' => [
'weight' => -90,
],
'type' => [
'weight' => -85,
'hidden' => 'form',
],
'status' => [
'weight' => -80,
],
'created' => [
'hidden' => TRUE,
],
'uid' => [
'hidden' => TRUE,
],
];
foreach ($alter_fields as $name => $options) {
// If the field does not exist on this entity type, skip it.
if (empty($fields[$name])) {
continue;
}
// Load the form and view display options.
$form_display_options = $fields[$name]->getDisplayOptions('form');
$view_display_options = $fields[$name]->getDisplayOptions('view');
// Set the field weight.
if (!empty($options['weight'])) {
$form_display_options['weight'] = $view_display_options['weight'] = $options['weight'];
}
// Hide the field, if desired.
if (!empty($options['hidden'])) {
if ($options['hidden'] === TRUE || $options['hidden'] === 'form') {
$form_display_options['region'] = 'hidden';
}
if ($options['hidden'] === TRUE || $options['hidden'] === 'view') {
$view_display_options['region'] = 'hidden';
}
}
// Hide the label, if desired.
if (!empty($options['label']) && $options['label'] == 'hidden') {
$view_display_options['label'] = 'hidden';
}
// Otherwise, set the label to inline.
else {
$view_display_options['label'] = 'inline';
}
switch ($name) {
// Change state field from transition form to default.
case 'status':
$view_display_options['type'] = 'list_default';
break;
// Don't display a link to the entity type reference.
case 'type':
$view_display_options['settings']['link'] = FALSE;
break;
}
// Save the options.
$fields[$name]->setDisplayOptions('form', $form_display_options);
$fields[$name]->setDisplayOptions('view', $view_display_options);
}
}
