diff --git a/includes/fields.inc b/includes/fields.inc
index f4debb4..df41d44 100644
--- a/includes/fields.inc
+++ b/includes/fields.inc
@@ -81,6 +81,33 @@ function ctools_fields_get_field_formatter_settings_form($field, $formatter_type
if ($settings_form) {
$form['ctools_field_list']['#value'][] = $field;
$form += $settings_form;
+
+ if (isset($field['cardinality']) && $field['cardinality'] != 1) {
+ $form['delta_limit'] = array(
+ '#type' => 'textfield',
+ '#size' => 5,
+ '#field_prefix' => t('Display'),
+ '#field_suffix' => t('value(s)'),
+ '#default_value' => $conf['delta_limit'],
+ '#prefix' => '
',
+ );
+
+ list($prefix, $suffix) = explode('@count', t('starting from @count'));
+ $form['delta_offset'] = array(
+ '#type' => 'textfield',
+ '#size' => 5,
+ '#field_prefix' => t('starting from'),
+ '#default_value' => $conf['delta_offset'],
+ '#description' => t('(first item is 0)'),
+ );
+ $form['delta_reversed'] = array(
+ '#title' => t('Reversed'),
+ '#type' => 'checkbox',
+ '#default_value' => $conf['delta_reversed'],
+ '#suffix' => '
',
+ '#description' => t('(start from last values)'),
+ );
+ }
}
}
}
diff --git a/plugins/content_types/entity_context/entity_field.inc b/plugins/content_types/entity_context/entity_field.inc
index d729d65..108a7c4 100644
--- a/plugins/content_types/entity_context/entity_field.inc
+++ b/plugins/content_types/entity_context/entity_field.inc
@@ -7,7 +7,7 @@
$plugin = array(
'title' => t('Entity field'),
- 'defaults' => array('label' => 'title', 'formatter' => ''),
+ 'defaults' => array('label' => 'title', 'formatter' => '', 'delta_limit' => 'all', 'delta_offset' => '0', 'delta_reversed' => FALSE),
'content type' => 'ctools_entity_field_content_type_content_type',
);
@@ -117,6 +117,30 @@ function ctools_entity_field_content_type_render($subtype, $conf, $panel_args, $
$field_output = field_view_field($entity_type, $entity, $field_name, $field_settings, $language);
+ // Reverse values.
+ if (isset($conf['delta_reversed']) && $conf['delta_reversed']) {
+ $field_output['#items'] = array_reverse($field_output['#items'], TRUE);
+ }
+
+ if (isset($conf['delta_limit'])) {
+ $delta_limit = $conf['delta_limit'];
+ $offset = intval($conf['delta_offset']);
+
+ if ($delta_limit == 'all') {
+ $delta_limit = count($field_output['#items']) - $offset;
+ }
+
+ $new_values = array();
+ for ($i = 0; $i < $delta_limit; $i++) {
+ $new_delta = $offset + $i;
+
+ if (isset($field_output['#items'][$new_delta])) {
+ $new_values[$new_delta] = $field_output['#items'][$new_delta];
+ }
+ }
+ $field_output['#items'] = $new_values;
+ }
+
// Build the content type block.
$block = new stdClass();
$block->module = 'entity_field';
@@ -206,6 +230,12 @@ function ctools_entity_field_content_type_formatter_styles_submit($form, &$form_
}
}
}
+
+ if (isset($form_state['values']['delta_limit'])) {
+ $form_state['conf']['delta_limit'] = $form_state['values']['delta_limit'];
+ $form_state['conf']['delta_offset'] = $form_state['values']['delta_offset'];
+ $form_state['conf']['delta_reversed'] = $form_state['values']['delta_reversed'];
+ }
}
/**