function field_weight_display_overview_form in Field display weights (per node) 7.2
Same name and namespace in other branches
- 7 field_weight.module \field_weight_display_overview_form()
Admin form displayed at node/%/display.
1 string reference to 'field_weight_display_overview_form'
- field_weight_menu in ./
field_weight.module - Implements hook_menu().
File
- ./
field_weight.module, line 84 - Field display weight module.
Code
function field_weight_display_overview_form($form, &$form_state, $node, $revision = NULL) {
$form = array();
// Save the mode we're in so alterers can see it.
$form_state['#revision'] = FALSE;
if ($revision && !empty($revision->vid)) {
$form_state['#node'] = $node = node_load(NULL, $revision->vid);
$form_state['#revision'] = TRUE;
drupal_set_title(t('Field display weights for revision @revision_date of @title', array(
'@revision_date' => format_date($revision->created),
'@title' => $revision->title,
)));
}
else {
$form_state['#node'] = $node;
drupal_set_title(t('Field display weights for @title', array(
'@title' => $node->title,
)));
}
// Tree set to get weights in nested array under field keys in form state.
$form['#tree'] = TRUE;
// Get all field instances for this bundle type
$instances = _field_weight_field_info_instances('node', $node->type);
$weights = field_weight_get_node_weight($node->vid);
// $weights will only be present if field weights have been saved
// for that node.
if (empty($weights)) {
$weights = array();
drupal_set_message(t("Field weights for this @revision_or_node have not been overridden yet.", array(
'@revision_or_node' => $revision ? t('revision') : t('node'),
)), 'warning');
}
// If this is a revision, we should still show the message even if we fell
// through.
$revision_weights = field_weight_get_node_revision_weight($node->vid);
if (empty($revision_weights)) {
drupal_set_message(t("Field weights for this revision have not been overridden yet."), 'warning');
}
list($weight_instances, $highest_weight) = field_weight_sort_instances($instances, $weights, $revision_weights);
// Allow other modules to change the weight of the instances.
$context = array(
'highest weight' => &$highest_weight,
'original instances' => $instances,
'original weights' => $weights,
'revision weights' => $revision_weights,
'node' => $node,
);
drupal_alter('field_weight_display_overview_weights', $weight_instances, $context);
$form['field_weight'] = array(
'#type' => 'fieldset',
'#title' => t("Manage %node_type field display", array(
'%node_type' => $node->type,
)),
// Put table/tabledrag theming of form into theme template.
'#theme' => 'field_weight_display_overview',
);
$form['field_weight']['markup'] = array(
'#markup' => '<p>' . t("Use the below table to arrange the order that fields will be displayed when this node is viewed. Saving your changes will override the default \n field display order set in admin/structure/types/[node-type]/display. If you change one value, all of the weights will change accordingly. To return to the default display order, use the reset button.") . '</p>',
);
// Create sensible weights based on amount of fields.
// Copied from block.admin.inc.
$weight_delta = $highest_weight;
// Pass hidden value to form submit so we can use instances
// already stored there.
$form['field_weight']['instances'] = array(
'#type' => 'value',
'#value' => $weight_instances,
);
$form['field_weight']['revision_weights'] = array(
'#type' => 'value',
'#value' => $revision_weights,
);
// Include so we can use field_ui_formatter_options().
module_load_include('inc', 'field_ui', 'field_ui.admin');
foreach ($weight_instances as $field => $values) {
$field_info = field_info_field($field);
$formatter_options = field_ui_formatter_options($field_info['type']);
$form['field_weight'][$field]['field'] = array(
'#markup' => (isset($values['new']) && $values['new'] ? t("<strong>(unsaved)</strong>") . ' ' : '') . check_plain($instances[$field]['label']),
);
$form['field_weight'][$field]['weight'] = array(
'#type' => 'weight',
'#delta' => $weight_delta,
'#default_value' => isset($values['weight']) ? $values['weight'] : 0,
'#attributes' => array(
'class' => array(
'field-weight',
),
),
);
$form['field_weight'][$field]['hidden'] = array(
'#type' => 'checkbox',
'#default_value' => isset($values['hidden']) ? $values['hidden'] : 0,
);
}
$form['continue'] = array(
'#type' => 'submit',
'#value' => t("Save and continue"),
'#submit' => array(
'field_weight_display_overview_form_submit',
'_field_weight_redirect_to_form',
),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t("Save"),
);
$form['reset'] = array(
'#type' => 'submit',
'#value' => t("Reset"),
'#submit' => array(
'_field_weight_remove_weights',
),
);
$form['field_weight']['#node'] = array(
'#type' => 'value',
'#value' => clone $form_state['#node'],
);
return $form;
}