Browse Source

Work on #1521.

pull/778/head
Mark Jordan 6 years ago
parent
commit
5ff2eb9f0f
  1. 7
      islandora.links.menu.yml
  2. 9
      islandora.routing.yml
  3. 73
      src/Controller/RdfMappingsReportController.php

7
islandora.links.menu.yml

@ -11,3 +11,10 @@ system.islandora_settings:
parent: system.admin_config_islandora
route_name: system.islandora_settings
description: 'Confgure core Islandora settings'
# Field to RDF property mappings
system.islandora_rdf_mappings:
title: 'RDF field mappings'
parent: system.admin_reports
description: 'List of configured Drupal field to RDF property mappings.'
route_name: system.islandora_rdf_mappings

9
islandora.routing.yml

@ -16,6 +16,15 @@ system.islandora_settings:
requirements:
_permission: 'administer site configuration'
# RDF mappings report
system.islandora_rdf_mappings:
path: '/admin/reports/islandora/rdf_mappings'
defaults:
_controller: '\Drupal\islandora\Controller\RdfMappingsReportController::main'
_title: 'Drupal field to RDF property mappings'
requirements:
_permission: 'administer site configuration'
islandora.add_member_to_node_page:
path: '/node/{node}/members/add'
defaults:

73
src/Controller/RdfMappingsReportController.php

@ -0,0 +1,73 @@
<?php
namespace Drupal\islandora\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* RDF mappings report controller.
*/
class RdfMappingsReportController extends ControllerBase {
/**
* Output the RDF mappings report.
*
* @return string
* Markup of the tables.
*/
public function main() {
$markup = '';
$entity_types = ['node', 'media'];
foreach ($entity_types as $entity_type) {
$bundles = \Drupal::service('entity_type.bundle.info')->getBundleInfo($entity_type);
foreach ($bundles as $name => $attr) {
$markup .= '<h3>' . $attr['label'] . ' (' . $entity_type . ')' . '</h3>';
$rdf_mappings = rdf_get_mapping($entity_type, $name);
$fields = \Drupal::entityManager()->getFieldDefinitions($entity_type, $name);
$mappings_table_rows = [];
foreach ($fields as $field_name => $field_object) {
$field_mappings = $rdf_mappings->getPreparedFieldMapping($field_name);
if (array_key_exists('properties', $field_mappings)) {
$mappings_table_rows[] = [$field_object->getLabel() . ' (' . $field_name . ')', $field_mappings['properties'][0]];
}
}
$mappings_header = [t('Drupal field'), t('RDF property')];
if (count($mappings_table_rows) == 0) {
$mappings_header = [];
$mappings_table_rows[] = [t('No RDF mappings configured for @bundle.', ['@bundle' => $attr['label']])];
}
$mappings_table = [
'#theme' => 'table',
'#header' => $mappings_header,
'#rows' => $mappings_table_rows,
];
$mappings_table_markup = \Drupal::service('renderer')->render($mappings_table);
$markup .= $mappings_table_markup;
}
}
$markup .= '<h3>RDF namespaces</h3>';
$namespaces = rdf_get_namespaces();
$namespaces_table_rows = [];
foreach ($namespaces as $alias => $namespace_uri) {
$namespaces_table_rows[] = [$alias, $namespace_uri];
}
$namespaces_table_header = [t('Namespace alias'), t('Namespace URI')];
$namespaces_table = [
'#theme' => 'table',
'#header' => $namespaces_table_header,
'#rows' => $namespaces_table_rows,
];
$namespaces_table_markup = \Drupal::service('renderer')->render($namespaces_table);
$markup .= $namespaces_table_markup;
return ['#markup' => $markup];
}
}
Loading…
Cancel
Save