function _noderelationships_parent_node_form_alter in Node Relationships 6
Alter parent node form to attach extra buttons to node reference fields.
1 call to _noderelationships_parent_node_form_alter()
- noderelationships_form_alter in ./
noderelationships.module - Implementation of hook_form_alter().
File
- ./
noderelationships.pages.inc, line 571 - Implementation of user land pages.
Code
function _noderelationships_parent_node_form_alter(&$form, $form_state, $type_name, $noderef_settings) {
$reference_fields = noderelationships_get_reference_fields($type_name);
$creatable_types = noderelationships_get_creatable_types($type_name);
$content_fields = array();
// Prepare nodereference settings.
$field_settings = array();
foreach (array_keys($reference_fields) as $field_name) {
if (!isset($content_fields[$field_name])) {
$content_fields[$field_name] = content_fields($field_name, $type_name);
}
$field_settings[$field_name] = array(
'maxAllowedValues' => $content_fields[$field_name]['multiple'] == 1 ? 0 : (empty($content_fields[$field_name]['multiple']) ? 1 : (int) $content_fields[$field_name]['multiple']),
'ahahSearchUrl' => url('noderelationships/ahah/search/' . $type_name . '/' . $field_name),
);
if (isset($noderef_settings['edit_reference'][$field_name])) {
$field_settings[$field_name]['editReference'] = TRUE;
}
if (isset($noderef_settings['search_and_reference_view'][$field_name])) {
$field_settings[$field_name]['searchUrl'] = url('noderelationships/search/' . $type_name . '/' . $field_name);
}
if (isset($noderef_settings['create_and_reference'][$field_name]) && isset($reference_fields[$field_name])) {
// Compute the list of content types that can be referred from this
// nodereference field and the current user is allowed to create.
$field_creatable_types = array_intersect($creatable_types, $reference_fields[$field_name]);
if (!empty($field_creatable_types)) {
$field_settings[$field_name]['createUrl'] = url('noderelationships/create/' . $type_name . '/' . $field_name);
}
}
$field_settings[$field_name]['viewInNewWindow'] = !empty($noderef_settings['view_in_new_window'][$field_name]);
}
// If we're translating a node, then let's find missing translations for
// fields where the "Translate and reference" option has been enabled.
if (empty($form_state['submitted']) && isset($form['translation_source']) && isset($noderef_settings['translate_and_reference']) && noderelationships_translation_supported_type($type_name)) {
module_load_include('inc', 'noderelationships', 'noderelationships.translation');
_noderelationships_parent_node_form_build_translation_settings($form['#node'], $field_settings, $noderef_settings);
}
$form['#noderelationships'] = $field_settings;
// Install an after_build callback. This one is used to have support for the
// AHAH request related to the "Add more items" button of multivalue fields.
if (!isset($form['#after_build'])) {
$form['#after_build'] = array();
}
$form['#after_build'][] = '_noderelationships_parent_node_form_scanner_proxy';
// Install a pre_render callback. This one is used to have support when form
// validation errors are found. The after_build callback is not invoked in
// that case because the form is not rebuilt.
if (!isset($form['#pre_render'])) {
$form['#pre_render'] = array();
}
$form['#pre_render'][] = '_noderelationships_parent_node_form_scanner_proxy';
}