function noderelationships_admin_settings_backref in Node Relationships 6
Back reference settings form.
1 string reference to 'noderelationships_admin_settings_backref'
- noderelationships_admin_page in ./
noderelationships.admin.inc - Menu callback; relationships administration.
File
- ./
noderelationships.admin.inc, line 454 - Implementation of the administration pages of the module.
Code
function noderelationships_admin_settings_backref(&$form_state, $type) {
$form = array();
$referrer_types = noderelationships_get_referrer_types($type->type);
// If this type does not have relations, then we're done here.
if (empty($referrer_types)) {
drupal_set_message(t('Could not find content types referring to %type.', array(
'%type' => $type->name,
)), 'warning');
return $form;
}
$admin_help_text = t('This panel displays <em>Node Reference</em> fields that may refer to nodes of type %type.
These fields generate <em>back references</em> that you can easily display using a view on several regions (<em>Page</em>, <em>Tab</em> or <em>Fields</em>).
You can modify and/or clone (recommended) the default view should you need to add more fields, filters or change any other option to suit your needs.
To enable these <em>back references</em> just drag them to the region of your choice.
Back references assigned to the <em>Page</em> and <em>Tab</em> regions can be reordered from this panel.
Back references assigned to the <em>Fields</em> region can be reordered from the "Manage fields" panel.', array(
'%type' => $type->name,
));
$form['help'] = array(
'#type' => 'markup',
'#value' => theme('noderelationships_admin_help', $admin_help_text),
);
// Obtain back reference settings for this type.
$backref_settings = noderelationships_settings_load($type->type, 'backref');
// Prepare a list of all available relations.
$available_relations = array();
foreach ($referrer_types as $referrer_type => $field_names) {
foreach ($field_names as $field_name) {
$available_relations[$referrer_type . ':' . $field_name] = array(
'referrer_type' => $referrer_type,
'field_name' => $field_name,
);
}
}
// Build the list of all relations assigned to active regions.
$form['#noderelationships-regions'] = array();
foreach (array_keys(noderelationships_get_back_reference_regions()) as $region) {
$form['#noderelationships-regions'][$region] = array();
if (isset($backref_settings['regions'][$region])) {
foreach ($backref_settings['regions'][$region] as $relation_key => $relation_info) {
if (isset($available_relations[$relation_key])) {
$referrer_type = $available_relations[$relation_key]['referrer_type'];
$field_name = $available_relations[$relation_key]['field_name'];
$form['#noderelationships-regions'][$region][$relation_key] = array(
'referrer_type' => $referrer_type,
'field_name' => $field_name,
'field' => content_fields($field_name, $referrer_type),
'weight' => $relation_info['weight'],
'back_reference_view' => $relation_info['back_reference_view'],
);
unset($available_relations[$relation_key]);
}
}
}
}
// Assign remaining relations to the disabled region.
$form['#noderelationships-regions']['none'] = array();
foreach ($available_relations as $relation_key => $available_relation) {
$referrer_type = $available_relation['referrer_type'];
$field_name = $available_relation['field_name'];
$form['#noderelationships-regions']['none'][$relation_key] = array(
'referrer_type' => $referrer_type,
'field_name' => $field_name,
'field' => content_fields($field_name, $referrer_type),
'weight' => 0,
'back_reference_view' => '',
);
}
unset($available_relations);
$options_back_reference_region = array(
'none' => '<' . t('none') . '>',
) + noderelationships_get_back_reference_regions();
$options_back_reference_view = noderelationships_get_views('backref');
$form['weight'] = array(
'#tree' => TRUE,
);
$form['back_reference_region'] = array(
'#tree' => TRUE,
);
$form['back_reference_view'] = array(
'#tree' => TRUE,
);
$form['#noderelationships-type'] = $type->type;
foreach ($form['#noderelationships-regions'] as $region => $region_relations) {
foreach ($region_relations as $relation_key => $relation_info) {
$referrer_type = $relation_info['referrer_type'];
$field_name = $relation_info['field_name'];
$field = $relation_info['field'];
$form['weight'][$relation_key] = array(
'#type' => 'textfield',
'#default_value' => isset($relation_info['weight']) ? $relation_info['weight'] : 0,
'#size' => 3,
'#attributes' => array(
'class' => 'noderelationships-weight noderelationships-weight-' . $region,
),
);
$form['back_reference_region'][$relation_key] = array(
'#type' => 'select',
'#default_value' => $region,
'#options' => $options_back_reference_region,
'#attributes' => array(
'class' => 'noderelationships-region-select noderelationships-region-' . $region,
),
);
$form['back_reference_view'][$relation_key] = array(
'#type' => 'select',
'#default_value' => isset($relation_info['back_reference_view']) ? $relation_info['back_reference_view'] : '',
'#options' => $options_back_reference_view,
);
}
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save settings'),
);
return $form;
}