diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-10-16 03:21:23 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-10-16 03:21:23 +0000 |
commit | 087a47ba5c8cdf5b0f79d9a121b7b9dcbbe7e992 (patch) | |
tree | b223ccb070c29008ef9098484bb44894c2f53410 /modules/simpletest/tests | |
parent | 13d3072f418835569f37f65b5055e5b3180fad2e (diff) | |
download | brdo-087a47ba5c8cdf5b0f79d9a121b7b9dcbbe7e992.tar.gz brdo-087a47ba5c8cdf5b0f79d9a121b7b9dcbbe7e992.tar.bz2 |
#493314 by yched and catch: Add multiple hook for formatters.
Diffstat (limited to 'modules/simpletest/tests')
-rw-r--r-- | modules/simpletest/tests/field_test.module | 40 |
1 files changed, 40 insertions, 0 deletions
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,10 +585,31 @@ 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. */ function theme_field_formatter_field_test_default($variables) { @@ -610,6 +638,18 @@ function theme_field_formatter_field_test_multiple($variables) { } /** + * 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. */ function field_test_default_value($obj_type, $object, $field, $instance) { |