function _field_collection_table_row_mode in Field Collection Table 7
Helper function to build the table in row mode.
1 call to _field_collection_table_row_mode()
File
- ./
field_collection_table.module, line 193 - Module implementing a field-collection table formatter.
Code
function _field_collection_table_row_mode(&$element, $settings, $entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$view_mode = !empty($display['settings']['view_mode']) ? $display['settings']['view_mode'] : 'default';
$labels = array();
$field_names = array();
foreach (field_info_instances('field_collection_item', $field['field_name']) as $field_collection_item) {
$item_view_mode = !empty($field_collection_item['display'][$view_mode]) ? $view_mode : 'default';
if ($field_collection_item['display'][$item_view_mode]['type'] !== 'hidden') {
$weight = $field_collection_item['display'][$item_view_mode]['weight'];
$field_names[$weight] = $field_collection_item['field_name'];
$labels[$field_collection_item['field_name']] = module_exists('i18n_field') ? i18n_field_translate_property($field_collection_item, 'label') : $field_collection_item['label'];
}
}
if (module_exists('ds')) {
$fields_ds = ds_get_fields('field_collection_item');
$fields_ds_settings = ds_get_field_settings('field_collection_item', $field['field_name'], $view_mode);
foreach ($fields_ds_settings as $name => $ds_settings) {
if (isset($fields_ds[$name])) {
$weight = $ds_settings['weight'];
$labels[$name] = $ds_settings['label'] !== 'hidden' ? $fields_ds[$name]['title'] : NULL;
$field_names[$weight] = $name;
}
// Allow to override field label using DS field format settings.
if (isset($weight, $ds_settings['formatter_settings']['ft']['lb'])) {
$labels[$name] = t(check_plain($ds_settings['formatter_settings']['ft']['lb']));
}
}
}
ksort($field_names);
$header = array();
if ($settings['header_column'] !== 'none') {
$header = array(
array(
'class' => array(
'field-label',
),
'data' => $labels[$settings['header_column']],
),
);
}
$rows = array();
foreach ($items as $delta => $item) {
$field_collection = field_collection_field_get_entity($item);
if (empty($field_collection)) {
continue;
}
$view = $field_collection
->view();
$content = $view['field_collection_item'][$field_collection
->identifier()];
foreach ($field_names as $field_name) {
if (isset($content[$field_name])) {
$content[$field_name]['#label_display'] = 'hidden';
}
else {
$content[$field_name] = array(
'#markup' => '<span class="empty-field"></span>',
'#empty' => TRUE,
);
}
if ($settings['header_column'] === $field_name) {
unset($labels[$field_name]);
$header[] = array(
'data' => $content[$field_name],
);
continue;
}
$rows[$field_name]['data'][$delta] = array(
'data' => $content[$field_name],
);
$rows[$field_name]['class'] = array(
drupal_html_class($field_name),
);
$links = array(
'#theme' => 'links',
'#theme_wrapper' => 'item_list',
'#attributes' => array(
'class' => array(
'field-collection-view-links',
),
),
);
foreach (array(
'edit',
'delete',
) as $op) {
if (!empty($settings[$op]) && field_collection_item_access($op === 'edit' ? 'update' : $op, $field_collection)) {
$links['#links'][$op] = array(
'title' => $settings[$op],
'href' => $field_collection
->path() . '/' . $op,
'query' => drupal_get_destination(),
);
}
}
if (!empty($links['#links'])) {
$operations[$delta] = array(
'data' => $links,
'class' => 'field-operations',
);
}
}
}
foreach ($labels as $field_name => $data) {
array_unshift($rows[$field_name]['data'], array(
'class' => 'field-label',
'data' => $data,
));
}
if (!empty($operations)) {
array_unshift($operations, array(
'class' => array(
'field-label',
),
'data' => t('Operations'),
));
$rows['operations'] = array(
'class' => array(
'operations',
),
'data' => $operations,
);
}
$element[0] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#caption' => !empty($settings['caption']) ? t($settings['caption']) : NULL,
'#attributes' => array(
'class' => array(
'field-collection-table-view',
drupal_clean_css_identifier('view-mode-' . $view_mode),
),
),
);
if (!empty($settings['empty'])) {
$element[0]['#theme'] = 'table__field_collection_table';
$element[0]['#settings']['empty'] = TRUE;
}
}