GetDKAN / dkan_sci_metadata

DKAN Science Metadata Module
GNU General Public License v3.0
4 stars 1 forks source link

Implement metadata table for science #10

Open dafeder opened 6 years ago

dafeder commented 6 years ago

Metadata table theming for science fields was not added to the module. These fields should show in a table.

dafeder commented 6 years ago

The relevant code from ADC's node.inc:

function ag_data_sci_metadata_table(&$vars) {
  if (!empty($vars['content']['field_metadata_extended']['#items'])) {
    foreach($vars['content']['field_metadata_extended']['#items'] as $delta => $field_metadata_extended_item) {
      // Load what we assume to be the main science metadata item, and make
      // sure it's the right bundle.
      $extended_metadata = paragraphs_item_load($field_metadata_extended_item['value']);
      // Get our list of science fields and sort according to display.
      $metadata_fields = array();
      foreach(field_info_instances('paragraphs_item', $extended_metadata->bundle) as $field) {
        $metadata_fields[$field['display']['default']['weight']] = $field;
      }
      ksort($metadata_fields);
      $rows = array();
      foreach($metadata_fields as $field_info) {
        ag_data_sci_metadata_table_add_field($rows, $field_info, $extended_metadata);
      }
      // Replace the whole extended metadata field with our table.
      $field_instance = field_info_instance('node', 'field_metadata_extended', 'dataset');
      $extended_metadata_table = array(
        '#theme' => 'table',
        '#header' => array(t('Field'), t('Value')),
        '#rows' => $rows,
        '#weight' => $field_instance['display']['default']['weight'],
        '#attributes' => array('class' => array('extended-metadata')),
      );
      $vars['content']['field_metadata_extended'][$delta]['entity']['paragraphs_item'][$extended_metadata->item_id] = $extended_metadata_table;
    }
  }
}
function ag_data_sci_metadata_table_add_field(&$rows, $field_info, $extended_metadata) {
  if (!empty($extended_metadata->$field_info['field_name'])) {
    $row_value = field_view_field('paragraphs_item', $extended_metadata, $field_info['field_name'], 'full');
    $row = array();
    $row[] = array('data' => $field_info['label'], 'class' => array('field-label'));
    $row[] = array('data' => $row_value, 'class' => array('field-content'));
    $rows[] = $row;
  }
}