function double_field_field_formatter_view in Double Field 7.2
Same name and namespace in other branches
- 7 double_field.module \double_field_field_formatter_view()
Implements hook_field_formatter_view().
File
- ./
double_field.module, line 1038 - Defines "Double field" field type.
Code
function double_field_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
if (!$items) {
return;
}
$settings = $display['settings'];
$i18n_context_prefix = double_field_i18n_strings_prefix($instance) . ':display-default-settings-';
$element = array();
foreach ($items as $delta => $item) {
foreach (array(
'first',
'second',
) as $subfield) {
if ($settings[$subfield]['hidden']) {
$item[$subfield] = FALSE;
}
else {
// Show value pair of allowed values on instead of their key value.
if (isset($instance['widget']['settings'][$subfield]['select']['allowed_values'])) {
$allowed_values = double_field_i18n_strings_translate(double_field_i18n_strings_prefix($instance) . ':widget-settings-' . $subfield . '-select-allowed_values', $instance['widget']['settings'][$subfield]['select']['allowed_values']);
$item[$subfield] = empty($allowed_values[$item[$subfield]]) ? $item[$subfield] : $allowed_values[$item[$subfield]];
}
$item[$subfield] = $settings[$subfield]['format'] == '_none' ? check_plain($item[$subfield]) : check_markup($item[$subfield], $settings[$subfield]['format']);
// Do not display prefix and suffix for empty subfields.
if ($item[$subfield] != '') {
$prefix = double_field_i18n_strings_translate($i18n_context_prefix . $subfield . '-prefix', $settings[$subfield]['prefix']);
$suffix = double_field_i18n_strings_translate($i18n_context_prefix . $subfield . '-suffix', $settings[$subfield]['suffix']);
$item[$subfield] = $prefix . $item[$subfield] . $suffix;
}
}
}
$items[$delta] = $item;
}
switch ($display['type']) {
case 'double_field_fieldset':
foreach ($items as $delta => $item) {
$element[$delta] = array(
'#title' => $item['first'],
'#value' => $item['second'],
'#theme' => 'fieldset',
'#collapsible' => $settings['collapsible'],
'#collapsed' => $settings['collapsed'],
);
// theme_fieldset() doesn't handle '#collapsible'
// and '#collapsed' arguments as claimed.
// see http://drupal.org/node/1099132
if ($settings['collapsible']) {
$element[$delta]['#attached'] = array(
'js' => array(
'misc/form.js',
'misc/collapse.js',
),
);
$element[$delta]['#attributes'] = array(
'class' => $settings['collapsed'] ? array(
'collapsible',
'collapsed',
) : array(
'collapsible',
),
);
}
}
break;
case 'double_field_unformatted_list':
foreach ($items as $item) {
$element[] = array(
'#display' => $display,
'#item' => $item,
'#theme' => 'double_field',
);
}
break;
case 'double_field_html_list':
if ($settings['list_type'] == 'dl') {
$element[0] = array(
'#theme' => 'double_field_definition_list',
'#items' => $items,
);
}
else {
foreach ($items as $item) {
$list_items[] = theme('double_field', array(
'element' => array(
'#display' => $display,
'#item' => $item,
),
));
}
$element[0] = array(
'#theme' => 'item_list',
'#type' => $settings['list_type'],
'#items' => $list_items,
);
}
break;
case 'double_field_table':
foreach ($items as $delta => $item) {
$row = array();
if ($settings['table']['number_column']) {
$row[] = ++$delta;
}
$row[] = $item['first'];
$row[] = $item['second'];
$rows[] = $row;
}
$header = array();
if ($settings['table']['first']['column_label'] || $settings['table']['second']['column_label']) {
if ($settings['table']['number_column']) {
$header[] = double_field_i18n_strings_translate($i18n_context_prefix . 'table-number_column_label', $settings['table']['number_column_label']);
}
foreach (array(
'first',
'second',
) as $subfield) {
$header[] = double_field_i18n_strings_translate($i18n_context_prefix . "table-{$subfield}-column_label", $settings['table'][$subfield]['column_label']);
}
}
// Display all values in a single element.
$element[0] = array(
'#theme' => 'table',
'#rows' => $rows,
'#header' => $header,
);
break;
case 'double_field_accordion':
case 'double_field_tabs':
case 'double_field_dialog':
$element[0] = array(
'#theme' => $display['type'],
'#items' => $items,
);
break;
}
return $element;
}