function viewreference_field_settings in View reference 6
Same name and namespace in other branches
- 6.3 viewreference.module \viewreference_field_settings()
- 6.2 viewreference.module \viewreference_field_settings()
Implementation of hook_field_settings().
File
- ./
viewreference.module, line 78 - Defines a field type for referencing a view from a node.
Code
function viewreference_field_settings($op, $field) {
switch ($op) {
case 'form':
$form = array();
$form['referenceable_views'] = array(
'#type' => 'checkboxes',
'#title' => t('Views that can be referenced'),
'#multiple' => TRUE,
'#default_value' => is_array($field['referenceable_views']) ? $field['referenceable_views'] : array(),
'#options' => viewreference_get_list_of_views(),
);
$form['arguments'] = array(
'#type' => 'fieldset',
'#title' => t('Arguments'),
'#collapsible' => TRUE,
'#collapsed' => $field['dsv_arguments'] || $field['php_arguments'] ? FALSE : TRUE,
'#description' => t('Enabling the following options will provide an input field for passing arguments to the view.'),
);
$form['arguments']['dsv_arguments'] = array(
'#type' => 'checkbox',
'#title' => t('Allow delimiter seperated values.'),
'#default_value' => isset($field['dsv_arguments']) ? $field['dsv_arguments'] : 0,
'#description' => t('Users can provide a list of arguments seperated by a delimiter. e.g: <em>term_1/term_2</em>'),
);
$form['arguments']['php_arguments'] = array(
'#type' => 'checkbox',
'#title' => t('Allow PHP code.'),
'#default_value' => isset($field['php_arguments']) ? $field['php_arguments'] : 0,
'#description' => t('Users can insert PHP code to generate the list of arguments. e.g: <em>term_1/<?php print "term_x/term_y"; ?>/term_2</em>'),
);
$form['arguments']['delimiter'] = array(
'#type' => 'textfield',
'#title' => t('Delimiter'),
'#default_value' => !empty($field['delimiter']) ? $field['delimiter'] : '/',
'#size' => 3,
'#maxlength' => 30,
'#required' => TRUE,
);
$row_range = range(0, 10);
unset($row_range[0]);
$form['arguments']['rows'] = array(
'#type' => 'select',
'#title' => t('Number of rows in argument field'),
'#default_value' => isset($field['rows']) ? $field['rows'] : 1,
'#options' => $row_range,
'#description' => t('Set as 1 for textfield, or larger values for textarea (may be easier to write PHP with a textarea)'),
'#required' => TRUE,
);
return $form;
case 'save':
$settings = array(
'referenceable_views',
'dsv_arguments',
'php_arguments',
'delimiter',
'rows',
);
return $settings;
case 'database columns':
$columns = array(
'view_id' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'arguments' => array(
'type' => 'text',
'size' => 'big',
'default' => '',
),
);
return $columns;
case 'views data':
$data = content_views_field_views_data($field);
$db_info = content_database_info($field);
$table_alias = content_views_tablename($field);
// Swap the filter handler to the 'in' operator.
$data[$table_alias][$field['field_name'] . '_view_id']['filter']['handler'] = 'views_handler_filter_many_to_one_content';
return $data;
}
}