function date_api_filter_handler::date_parts_form in Date 6
Same name and namespace in other branches
- 6.2 includes/date_api_filter_handler.inc \date_api_filter_handler::date_parts_form()
A form element to select date part values.
Parameters
string $prefix: A prefix for the date values, 'value', 'min', or 'max'.
string $source: The operator for this element.
string $which: Which element to provide, 'all', 'value', or 'minmax'.
array $operator_values: An array of the allowed operators for this element.
array $limit: An array of date parts to limit this element to.
Return value
The form date part element for this instance.
1 call to date_api_filter_handler::date_parts_form()
- date_api_filter_handler::value_form in ./
date_api.views.inc - Add the selectors to the value form using the date handler.
File
- ./
date_api.views.inc, line 640 - Defines date-related Views data and plugins:
Class
- date_api_filter_handler
- A flexible, configurable date filter.
Code
function date_parts_form($prefix, $source, $which, $operator_values) {
$prefixname = $prefix == 'value' ? '' : ($prefix == 'min' ? t('From') : t('To'));
$handler = $this->date_handler;
$min = $handler
->part_info('min');
$max = $handler
->part_info('max');
$limit = $handler->granularity;
switch ($this->options['adjustment_field']) {
case 1:
$parts = $handler
->date_parts($limit) + array(
'adjustment' => t('Adjustment'),
);
$first_item = 'year';
$last_item = 'adjustment';
break;
case 2:
$parts = array(
'adjustment' => t('Adjustment'),
);
$first_item = 'adjustment';
$last_item = 'adjustment';
break;
default:
$parts = $handler
->date_parts($limit);
$first_item = 'year';
$last_item = $this->options['granularity'];
break;
}
foreach ($parts as $key => $name) {
$options = array(
'' => '',
'now' => 'now',
);
$type = 'select';
if ($key == 'year' || $key == 'adjustment') {
$type = 'textfield';
}
$form[$prefix . $key] = array(
'#title' => t('@type @value', array(
'@type' => $prefixname,
'@value' => $name,
)),
'#type' => $type,
'#size' => $key == 'adjustment' ? 20 : ($key == 'year' ? 6 : 1),
'#default_value' => !empty($this->value[$prefix . $key]) ? $this->value[$prefix . $key] : '',
'#prefix' => '<div class="views-exposed-date-filter">',
'#suffix' => '</div>',
);
switch ($key) {
case 'year':
case 'adjustment':
break;
case 'month':
$form[$prefix . $key]['#options'] = $options + drupal_map_assoc(range(1, 12), 'map_month');
break;
default:
$form[$prefix . $key]['#options'] = $options + drupal_map_assoc(range($min[$key], $max[$key]));
break;
}
if ($type == 'textfield') {
unset($form[$prefix . $key]['#options']);
}
if ($which == 'all') {
$dependency = array(
'#process' => array(
'views_process_dependency',
),
'#dependency' => array(
$source => $operator_values,
),
);
$form[$prefix . $key] += $dependency;
}
// Add wrappers to force each date grouping to a separate line.
if ($key == $first_item) {
$form[$prefix . $key]['#prefix'] = '<div class="clear-block"><div class="views-left-75">' . $form[$prefix . $key]['#prefix'];
}
if ($key == $last_item) {
$form[$prefix . $key]['#suffix'] .= '</div></div>';
}
}
return $form;
}