function noderelationships_get_noderef_view_overrides in Node Relationships 6
Get overrides for search and reference views.
Parameters
$view:
$referrer_field:
See also
noderelationships_customize_noderef_view()
1 call to noderelationships_get_noderef_view_overrides()
- noderelationships_customize_noderef_view in ./
noderelationships.inc - Apply custom configuration to the given search and reference view.
File
- ./
noderelationships.inc, line 1019 - Common functions for the noderelationships module.
Code
function noderelationships_get_noderef_view_overrides($view, $referrer_field) {
$view_overrides = array();
// Customize view fields.
$new_view_fields = array();
$new_view_fields['noderelationships_nid'] = array(
'id' => 'noderelationships_nid',
'table' => 'node',
'field' => 'nid',
'label' => 'X-NodeRelationships-Nid',
'relationship' => 'none',
);
$new_view_fields['noderelationships_title'] = array(
'id' => 'noderelationships_title',
'table' => 'node',
'field' => 'title',
'label' => 'X-NodeRelationships-Title',
'relationship' => 'none',
);
$existing_view_fields = $view->display_handler
->get_option('fields');
if (!empty($existing_view_fields)) {
$new_view_fields = array_merge($new_view_fields, $existing_view_fields);
}
$view_overrides['fields'] = $new_view_fields;
// Customize view filters.
$referenceable_types = isset($referrer_field['referenceable_types']) ? array_filter($referrer_field['referenceable_types']) : array();
if (!empty($referenceable_types)) {
$new_view_filters = $view->display_handler
->get_option('filters');
if (empty($new_view_filters)) {
$new_view_filters = array();
}
// Make sure we have a filter by content type.
if (isset($new_view_filters['type'])) {
$new_view_filters['type']['value'] = $referenceable_types;
// If the type filter is exposed, give it a unique identifier.
if (isset($new_view_filters['type']['exposed'])) {
$new_view_filters['type']['expose']['identifier'] = 'type_' . $referrer_field['field_name'];
}
// If this is the default noderef view AND it has not been overridden,
// then we want to control if the filter is exposed or not depending
// on number of referenceable types.
if ($view->name == NODERELATIONSHIPS_NODEREF_VIEW_NAME && $view->type == t('Default')) {
$new_view_filters['type']['exposed'] = count($referenceable_types) > 1 ? TRUE : FALSE;
}
}
else {
$new_view_filters['type'] = array(
'id' => 'type',
'table' => 'node',
'field' => 'type',
'operator' => 'in',
'value' => $referenceable_types,
'group' => '0',
'exposed' => FALSE,
'relationship' => 'none',
);
if (count($referenceable_types) > 1) {
$new_view_filters['type']['exposed'] = TRUE;
$new_view_filters['type']['expose'] = array(
'use_operator' => 0,
'operator' => 'type_op',
'identifier' => 'type_' . $referrer_field['field_name'],
'label' => 'Type',
'optional' => 0,
'single' => 0,
'remember' => 1,
'reduce' => 1,
);
}
}
$view_overrides['filters'] = $new_view_filters;
}
// Dynamic customization dependent on active style plugin.
$style_plugin = $view->display_handler
->get_option('style_plugin');
if ($style_plugin == 'table') {
$style_options = $view->display_handler
->get_option('style_options');
$new_style_columns = array(
'noderelationships_nid' => 'noderelationships_nid',
'noderelationships_title' => 'noderelationships_title',
);
if (!empty($style_options['columns'])) {
$new_style_columns = array_merge($new_style_columns, $style_options['columns']);
}
$style_options['columns'] = $new_style_columns;
$new_style_info = array(
'noderelationships_nid' => array(
'sortable' => 0,
'separator' => ':',
),
'noderelationships_title' => array(
'sortable' => 0,
'separator' => '',
),
);
if (!empty($style_options['info'])) {
$new_style_info = array_merge($new_style_info, $style_options['info']);
}
$style_options['info'] = $new_style_info;
$view_overrides['style_options'] = $style_options;
}
// Make sure Views AJAX is enabled, also disable the Views "more" button.
$view_overrides['use_ajax'] = TRUE;
$view_overrides['use_more'] = 0;
// Customize the view path.
$view_overrides['path'] = 'noderelationships/search/%/%';
return $view_overrides;
}