summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-11-21 19:09:18 +0000
committerDries Buytaert <dries@buytaert.net>2010-11-21 19:09:18 +0000
commit2e438914d2133d185f12547b815ab8fde3f80bc2 (patch)
treee07548a81a5f49f07efb90c97a6950d04b7d65c8
parentdf5714f5a2a3eb025ab47211d6da5582c1bc5789 (diff)
downloadbrdo-2e438914d2133d185f12547b815ab8fde3f80bc2.tar.gz
brdo-2e438914d2133d185f12547b815ab8fde3f80bc2.tar.bz2
- Patch #830020 by chx, yched: field_get_display() does not get the entity.
-rw-r--r--modules/field/field.api.php2
-rw-r--r--modules/field/field.default.inc4
-rw-r--r--modules/field/field.module5
3 files changed, 8 insertions, 3 deletions
diff --git a/modules/field/field.api.php b/modules/field/field.api.php
index 474499d7c..e899d4345 100644
--- a/modules/field/field.api.php
+++ b/modules/field/field.api.php
@@ -2165,6 +2165,7 @@ function hook_field_info_max_weight($entity_type, $bundle, $context) {
* - entity_type: The entity type; e.g. 'node' or 'user'.
* - field: The field being rendered.
* - instance: The instance being rendered.
+ * - entity: The entity being rendered.
* - view_mode: The view mode, e.g. 'full', 'teaser'...
*
* @see hook_field_display_ENTITY_TYPE_alter()
@@ -2199,6 +2200,7 @@ function hook_field_display_alter(&$display, $context) {
* - entity_type: The entity type; e.g. 'node' or 'user'.
* - field: The field being rendered.
* - instance: The instance being rendered.
+ * - entity: The entity being rendered.
* - view_mode: The view mode, e.g. 'full', 'teaser'...
*
* @see hook_field_display_alter()
diff --git a/modules/field/field.default.inc b/modules/field/field.default.inc
index 79e0b937b..f078d24ca 100644
--- a/modules/field/field.default.inc
+++ b/modules/field/field.default.inc
@@ -142,7 +142,7 @@ function field_default_prepare_view($entity_type, $entities, $field, $instances,
foreach ($instances as $id => $instance) {
if (is_string($display)) {
$view_mode = $display;
- $display = field_get_display($instance, $view_mode);
+ $display = field_get_display($instance, $view_mode, $entities[$id]);
}
if ($display['type'] !== 'hidden') {
$module = $display['module'];
@@ -194,7 +194,7 @@ function field_default_view($entity_type, $entity, $field, $instance, $langcode,
// Prepare incoming display specifications.
if (is_string($display)) {
$view_mode = $display;
- $display = field_get_display($instance, $view_mode);
+ $display = field_get_display($instance, $view_mode, $entity);
}
else {
$view_mode = '_custom_display';
diff --git a/modules/field/field.module b/modules/field/field.module
index d3545d911..58f0365c8 100644
--- a/modules/field/field.module
+++ b/modules/field/field.module
@@ -448,11 +448,13 @@ function field_view_mode_settings($entity_type, $bundle) {
* The field instance being displayed.
* @param $view_mode
* The view mode.
+ * @param $entity
+ * The entity being displayed.
*
* @return
* The display settings to be used when displaying the field values.
*/
-function field_get_display($instance, $view_mode) {
+function field_get_display($instance, $view_mode, $entity) {
// Check whether the view mode uses custom display settings or the 'default'
// mode.
$view_mode_settings = field_view_mode_settings($instance['entity_type'], $instance['bundle']);
@@ -464,6 +466,7 @@ function field_get_display($instance, $view_mode) {
'entity_type' => $instance['entity_type'],
'field' => field_info_field($instance['field_name']),
'instance' => $instance,
+ 'entity' => $entity,
'view_mode' => $view_mode,
);
drupal_alter(array('field_display', 'field_display_' . $instance['entity_type']), $display, $context);