function field_weight_display_overview_form_submit in Field display weights (per node) 7.2
Same name and namespace in other branches
- 7 field_weight.module \field_weight_display_overview_form_submit()
1 string reference to 'field_weight_display_overview_form_submit'
- field_weight_display_overview_form in ./
field_weight.module - Admin form displayed at node/%/display.
File
- ./
field_weight.module, line 248 - Field display weight module.
Code
function field_weight_display_overview_form_submit($form, &$form_state) {
$node = $form_state['#node'];
$values = $form_state['values']['field_weight'];
// This is a good enough check. The fact we are here means enough other
// stuff is true.
$revision_mode = arg(2) === 'revisions' ? TRUE : FALSE;
if ($revision_mode) {
$form_state['redirect'] = "node/{$node->nid}/revisions/{$node->vid}/view";
}
else {
$form_state['redirect'] = 'node/' . $node->nid;
}
$instances = _field_weight_field_info_instances('node', $node->type);
$weights = array();
foreach ($instances as $field => $instance) {
$weights[$field] = array(
'weight' => $values[$field]['weight'],
'hidden' => $values[$field]['hidden'],
);
}
// If all weights are 0 (unchanged) will return empty.
$empty_check = array_filter($weights);
if (!empty($empty_check)) {
db_merge('field_weight')
->key(array(
'vid' => $node->vid,
))
->fields(array(
'nid' => $node->nid,
'vid' => $node->vid,
'type' => $node->type,
'field_weights' => serialize($weights),
))
->execute();
}
elseif (empty($empty_check)) {
// Remove entry if user manually sets all weights to 0.
_field_weight_remove_weights($form, $form_state);
}
}