field_weight_inherit.module in Field display weights (per node) 7.2
File
modules/field_weight_inherit.module
View source
<?php
function field_weight_inherit_field_weight_display_overview_weights_alter(&$weight_instances, &$context) {
if (empty($context['original weights'])) {
if (!empty($context['node']->tnid)) {
$parent = node_load($context['node']->tnid);
$weights = field_weight_get_node_weight($parent->vid);
if ($weights) {
list($weight_instances, $context['highest weight']) = field_weight_sort_instances($context['original instances'], $weights, $context['revision weights']);
foreach ($weight_instances as &$weight_instance) {
$weight_instance['new'] = TRUE;
}
}
}
}
}
function field_weight_inherit_field_weight_multiple_display_overview_weights_alter(&$weight_instances, &$form, &$context) {
if (empty($context['original weights'])) {
if (!empty($context['node']->tnid)) {
$parent = node_load($context['node']->tnid);
$field_weights = field_weight_multiple_get_weight($parent->vid);
if ($field_weights) {
list($context['highest weight'], $weight_instances) = _field_weight_multiple_process_instances($form, $context['form reference'], $field_weights, $context['revision field weights'], $context['original instances'], $context['field names'], $context['node'], $weight_instances, FALSE);
foreach ($weight_instances as &$weight_instance) {
$weight_instance['new'] = TRUE;
}
}
}
}
}
function field_weight_inherit_entity_view_alter(&$build, $type) {
if ($type == 'node') {
$enabled_node_types = variable_get('field_weight_node_types', array());
if (in_array($build['#bundle'], $enabled_node_types, TRUE) && isset($build['#node']->tnid)) {
$original_build_node = $build['#node'];
$original_build_bundle = $build['#bundle'];
$node_weights = field_weight_get_node_weight($build['#node']->vid);
if (!$node_weights) {
$source_node = node_load($build['#node']->tnid);
if ($source_node) {
$build['#node'] = $source_node;
$build['#bundle'] = $source_node->type;
field_weight_entity_view_alter($build, $type);
}
}
if (module_exists('field_weight_multiple')) {
$field_weights = field_weight_multiple_get_weight($original_build_node->vid);
if (!$field_weights) {
if (!isset($source_node)) {
$source_node = node_load($original_build_node->tnid);
}
if ($source_node) {
$build['#node'] = $source_node;
$build['#bundle'] = $source_node->type;
field_weight_multiple_entity_view_alter($build, $type);
}
}
}
if (isset($source_node)) {
$build['#node'] = $original_build_node;
$build['#bundle'] = $original_build_bundle;
}
}
}
}