From 087a47ba5c8cdf5b0f79d9a121b7b9dcbbe7e992 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Fri, 16 Oct 2009 03:21:23 +0000 Subject: #493314 by yched and catch: Add multiple hook for formatters. --- modules/simpletest/tests/field_test.module | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'modules/simpletest/tests') diff --git a/modules/simpletest/tests/field_test.module b/modules/simpletest/tests/field_test.module index 8cc99b1e9..8bb504389 100644 --- a/modules/simpletest/tests/field_test.module +++ b/modules/simpletest/tests/field_test.module @@ -564,6 +564,13 @@ function field_test_field_formatter_info() { 'multiple values' => FIELD_BEHAVIOR_CUSTOM, ), ), + 'field_test_needs_additional_data' => array( + 'label' => t('Tests hook_field_formatter_prepare_view()'), + 'field types' => array('test_field'), + 'settings' => array( + 'test_formatter_setting_additional' => 'dummy test string', + ), + ), ); } @@ -578,9 +585,30 @@ function field_test_theme() { 'field_formatter_field_test_multiple' => array( 'arguments' => array('element' => NULL), ), + 'field_formatter_field_test_needs_additional_data' => array( + 'arguments' => array('element' => NULL), + ), ); } +/** + * Implement hook_field_formatter_prepare_view(). + */ +function field_test_field_formatter_prepare_view($obj_type, $objects, $field, $instances, $langcode, &$items, $build_mode) { + foreach ($items as $id => $item) { + // To keep the test non-intrusive, only act on the + // 'field_test_needs_additional_data' formatter. + if ($instances[$id]['display'][$build_mode]['type'] == 'field_test_needs_additional_data') { + foreach ($item as $delta => $value) { + // Don't add anything on empty values. + if ($value) { + $items[$id][$delta]['additional_formatter_value'] = $value['value'] + 1; + } + } + } + } +} + /** * Theme function for 'field_test_default' formatter. */ @@ -609,6 +637,18 @@ function theme_field_formatter_field_test_multiple($variables) { return $settings['test_formatter_setting_multiple'] . '|' . $output; } +/** + * Theme function for 'field_test_needs_additional_data' formatter. + */ +function theme_field_formatter_field_test_needs_additional_data($variables) { + $element = $variables['element']; + $value = $element['#item']['value']; + $additional = $element['#item']['additional_formatter_value']; + $settings = $element['#settings']; + + return $settings['test_formatter_setting_additional'] . '|' . $value . '|' . $additional; +} + /** * Sample function to test default value assignment. */ -- cgit v1.2.3