Browse Source

Make links and bundle formatter work for node, media, vocabulary.

main
Rosie Le Faive 3 weeks ago
parent
commit
051f8e910a
  1. 47
      src/Controller/MetadataProfileController.php

47
src/Controller/MetadataProfileController.php

@ -53,6 +53,7 @@ class MetadataProfileController extends ControllerBase {
*/ */
protected $entityTypeBundleOf; protected $entityTypeBundleOf;
public function __construct(EntityFieldManagerInterface $entity_field_manager, public function __construct(EntityFieldManagerInterface $entity_field_manager,
FieldTypePluginManagerInterface $field_type_plugin_manager, FieldTypePluginManagerInterface $field_type_plugin_manager,
ConfigFactoryInterface $config_factory, ConfigFactoryInterface $config_factory,
@ -89,11 +90,11 @@ class MetadataProfileController extends ControllerBase {
$content_type = $this->entityBundle; $content_type = $this->entityBundle;
} }
// Get core content type information. // Get core content type information.
$node_type = $this->config('node.type.' . $content_type); $bundle_config = $this->config(str_replace('_', '.', $this->entityType) . '.' . $content_type);
if (!$node_type) { if (!$bundle_config) {
return ['#markup'=> 'Not a valid content type.']; return ['#markup'=> 'Not a valid content type.'];
} }
$build = $this->format_bundle($node_type); $build = $this->format_bundle($bundle_config);
$metadata_profile = $this->getMetadataProfile($content_type); $metadata_profile = $this->getMetadataProfile($content_type);
@ -108,7 +109,7 @@ class MetadataProfileController extends ControllerBase {
'#weight' => '9', '#weight' => '9',
]; ];
// Get field information. // Get field information.
$field_definitions = $this->entityFieldManager->getFieldDefinitions('node', $content_type); $field_definitions = $this->entityFieldManager->getFieldDefinitions($this->entityTypeBundleOf, $content_type);
foreach ($field_definitions as $field_name => $field_definition) { foreach ($field_definitions as $field_name => $field_definition) {
$build['fields'][$field_name] = $this->display_field($field_name, $field_definition, $metadata_profile[$field_name]); $build['fields'][$field_name] = $this->display_field($field_name, $field_definition, $metadata_profile[$field_name]);
} }
@ -120,22 +121,38 @@ class MetadataProfileController extends ControllerBase {
* Format information about a bundle. * Format information about a bundle.
*/ */
protected function format_bundle(Config $bundle) { protected function format_bundle(Config $bundle) {
if (str_starts_with($bundle->getName(), 'node.type')) {
$label = $bundle->get('name');
$machine_name = $bundle->get('type');
$description = $bundle->get('description');
}
elseif (str_starts_with($bundle->getName(), 'taxonomy.vocabulary')) {
$label = $bundle->get('name');
$machine_name = $bundle->get('vid');
$description = $bundle->get('description');
}
elseif (str_starts_with($bundle->getName(), 'media.type')) {
$label = $bundle->get('label');
$machine_name = $bundle->get('id');
$description = $bundle->get('description');
}
$build = [ $build = [
'#type' => 'container', '#type' => 'container',
'#attached' => ['library' => ['metadata_profile/metadata_profile']], '#attached' => ['library' => ['metadata_profile/metadata_profile']],
'title' => [ 'title' => [
'#plain_text' => $bundle->get('name'), '#plain_text' => $label,
'#prefix' => '<h1>', '#prefix' => '<h1>',
'#suffix' => '</h1>', '#suffix' => '</h1>',
], ],
'machine_name' => [ 'machine_name' => [
'#plain_text' => $bundle->get('type'), '#plain_text' => $machine_name,
'#prefix' => ' (', '#prefix' => ' (',
'#suffix' => ')', '#suffix' => ')',
], ],
'description' => [ 'description' => [
'#plain_text' => $bundle->get('description'), '#plain_text' => $description,
'#prefix' => '<p>', '#prefix' => '<p>',
'#suffix' => '</p>', '#suffix' => '</p>',
], ],
@ -176,7 +193,7 @@ class MetadataProfileController extends ControllerBase {
// * 'block_visible' // * 'block_visible'
$metadata_profile = []; $metadata_profile = [];
$field_definitions = $this->entityFieldManager->getFieldDefinitions('node', $bundle); $field_definitions = $this->entityFieldManager->getFieldDefinitions($this->entityTypeBundleOf, $bundle);
foreach ($field_definitions as $field_name => $field_definition) { foreach ($field_definitions as $field_name => $field_definition) {
$metadata_profile[$field_name] = [ $metadata_profile[$field_name] = [
'label' => $field_definition->getLabel(), 'label' => $field_definition->getLabel(),
@ -199,7 +216,7 @@ class MetadataProfileController extends ControllerBase {
protected function buildSummaryTable($metadata_profile) { protected function buildSummaryTable($metadata_profile) {
$rows = []; $rows = [];
foreach ($metadata_profile as $field_name => $field_profile) { foreach ($metadata_profile as $field_name => $field_profile) {
if (str_starts_with( $field_name, 'field_') or $field_name == 'title') { if (str_starts_with( $field_name, 'field_') or in_array($field_name, ['title', 'name'])) {
$rows[] = [ $rows[] = [
$field_profile['details_link'], $field_profile['details_link'],
$field_profile['machine_name'], $field_profile['machine_name'],
@ -231,7 +248,7 @@ class MetadataProfileController extends ControllerBase {
protected function display_field(string $field_name, FieldDefinitionInterface $field_definition, array $field_profile) { protected function display_field(string $field_name, FieldDefinitionInterface $field_definition, array $field_profile) {
$render_array = []; $render_array = [];
if (str_starts_with($field_name, 'field_') or $field_name == 'title') { if (str_starts_with($field_name, 'field_') or in_array($field_name, ['title', 'name'])) {
$render_array = [ $render_array = [
'#type' => 'container', '#type' => 'container',
'#attributes' => ['class' => ['field-info']], '#attributes' => ['class' => ['field-info']],
@ -271,8 +288,8 @@ class MetadataProfileController extends ControllerBase {
if ($field_definition->getFieldStorageDefinition() instanceof BaseFieldDefinition) { if ($field_definition->getFieldStorageDefinition() instanceof BaseFieldDefinition) {
if ($this->moduleHandler()->moduleExists('base_field_override_ui')) { if ($this->moduleHandler()->moduleExists('base_field_override_ui')) {
if (method_exists($field_definition, 'id')) { if (method_exists($field_definition, 'id')) {
$edit_url = Url::fromRoute('entity.base_field_override.node_base_field_override_edit_form', [ $edit_url = Url::fromRoute('entity.base_field_override.' . $this->entityTypeBundleOf . '_base_field_override_edit_form', [
'node_type' => $field_definition->getTargetBundle(), $this->entityType => $field_definition->getTargetBundle(),
'base_field_override' => $field_definition->id(), 'base_field_override' => $field_definition->id(),
'destination' => $redirect_url->toString() 'destination' => $redirect_url->toString()
]); ]);
@ -287,8 +304,8 @@ class MetadataProfileController extends ControllerBase {
} }
} }
else { else {
$edit_url = Url::fromRoute('entity.field_config.node_field_edit_form', [ $edit_url = Url::fromRoute('entity.field_config.' . $this->entityTypeBundleOf . '_field_edit_form', [
'node_type' => $field_definition->getTargetBundle(), $this->entityType => $field_definition->getTargetBundle(),
'field_config' => $field_definition->id(), 'field_config' => $field_definition->id(),
'destination' => $redirect_url->toString(), 'destination' => $redirect_url->toString(),
]); ]);
@ -425,7 +442,7 @@ class MetadataProfileController extends ControllerBase {
$storage = $field_definition->getFieldStorageDefinition(); $storage = $field_definition->getFieldStorageDefinition();
if ($storage instanceof BaseFieldDefinition) { if ($storage instanceof BaseFieldDefinition) {
// Use property_path to find related fields. // Use property_path to find related fields.
$field_id = 'node.' . $storage->getName(); $field_id = $this->entityTypeBundleOf . '.' . $storage->getName();
} }
else { else {
$field_id = 'field.storage.' . $storage->get('id'); $field_id = 'field.storage.' . $storage->get('id');

Loading…
Cancel
Save