function _field_collection_table_column_mode in Field Collection Table 7
Helper function to build the table in column mode.
1 call to _field_collection_table_column_mode()
File
- ./
field_collection_table.module, line 58 - Module implementing a field-collection table formatter.
Code
function _field_collection_table_column_mode(&$element, $settings, $entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$view_mode = !empty($display['settings']['view_mode']) ? $display['settings']['view_mode'] : 'default';
$header = 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'];
if ($field_collection_item['display'][$item_view_mode]['label'] !== 'hidden') {
$header[$weight] = array(
'data' => module_exists('i18n_field') ? i18n_field_translate_property($field_collection_item, 'label') : $field_collection_item['label'],
'class' => drupal_html_class($field_names[$weight]),
);
}
else {
$header[$weight] = '';
}
}
}
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'];
$field_names[$weight] = $name;
$header[$weight] = array(
'data' => $ds_settings['label'] !== 'hidden' ? $fields_ds[$name]['title'] : NULL,
'class' => drupal_html_class($name),
);
}
elseif (in_array($name, $field_names)) {
$weight = array_search($name, $field_names);
}
// Allow to override field label using DS field format settings.
if (isset($weight, $ds_settings['formatter_settings']['ft']['lb'])) {
$header[$weight]['data'] = t(check_plain($ds_settings['formatter_settings']['ft']['lb']));
}
}
}
ksort($header);
ksort($field_names);
$rows = array();
foreach ($items as $delta => $item) {
$field_collection = field_collection_field_get_entity($item);
if (empty($field_collection)) {
continue;
}
$view = $field_collection
->view($view_mode);
$content = $view['field_collection_item'][$field_collection
->identifier()];
$column = array();
foreach ($field_names as $field_name) {
$cell = array(
'class' => drupal_html_class($field_name),
'data' => array(),
);
if (empty($contents[$field_name])) {
$cell['data'] = array(
'#markup' => '<span class="empty-field"></span>',
'#empty' => TRUE,
);
}
else {
$cell['data'] = $content[$field_name];
$cell['data-title'] = $content[$field_name]['#title'];
}
$column[] = $cell;
}
$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]) && !(module_exists('field_permissions') && !user_access($op . ' ' . $field['field_name'])) && entity_access($op === 'edit' ? 'update' : $op, 'field_collection_item', $field_collection)) {
$links['#links'][$op] = array(
'title' => t($settings[$op]),
'href' => $field_collection
->path() . '/' . $op,
'query' => drupal_get_destination(),
);
$header['operations'] = t('Operations');
}
}
if (!empty($links['#links'])) {
$column[] = array(
'data' => $links,
'class' => 'field-operations',
);
}
$rows[] = array(
'data' => $column,
'class' => array(
'field-collection-item',
),
);
}
// Remove header if all labels are hidden.
if (!array_filter($header)) {
$header = array();
}
$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;
}
return $element;
}