public function availability_calendar_handler_filter_availability::value_form in Availability Calendars 7.3
Same name and namespace in other branches
- 7.5 views/availability_calendar_handler_filter_availability.inc \availability_calendar_handler_filter_availability::value_form()
- 7.4 views/availability_calendar_handler_filter_availability.inc \availability_calendar_handler_filter_availability::value_form()
Add validation and date popup(s) to the value form.
Overrides views_handler_filter::value_form
File
Class
- availability_calendar_handler_filter_availability
- @class availability_calendar_handler_filter_availability Views handler to filter on availability.
Code
public function value_form(&$form, &$form_state) {
$form['value']['#tree'] = TRUE;
if (empty($form_state['exposed'])) {
// We're in Views edit mode self. Add validator here. When we're in an
// exposed form, validation will go via exposed_validate().
$form['value']['#element_validate'][] = 'availability_calendar_handler_filter_availability_validate_value';
}
// Determine values to add and their dependencies.
$dependency_source = null;
if (!empty($form_state['exposed']) && (empty($this->options['expose']['use_operator']) || empty($this->options['expose']['operator_id']))) {
// Exposed form with operator not exposed: only add values for the
// set operator.
$operators = $this
->operators();
$values = $operators[$this->operator]['values'];
}
else {
// Views UI
$values = array(
'from',
'to',
'to1',
'duration',
);
if (!empty($form['operator'])) {
$dependency_source = $form['operator']['#type'] === 'radios' ? 'radio:options[operator]' : 'edit-options-operator';
}
}
// Add value fields.
if (in_array('from', $values)) {
$form['value']['from'] = array(
'#type' => 'textfield',
'#title' => $this->operator === 'at' ? t('At') : ($this->operator === 'from_to1' ? t('Arrival date') : t('Start date')),
'#size' => 12,
'#default_value' => $this->value['from'],
);
if (module_exists('date_popup')) {
$this
->change_element_into_date_popup($form['value']['from']);
}
else {
$date_example = availability_calendar_format_entry_date(new DateTime());
$form['value']['from']['#description'] = t('E.g., @date', array(
'@date' => $date_example,
));
}
if ($dependency_source !== null) {
$form['value']['from']['#dependency'] = array(
$dependency_source => $this
->operators_by_value('from'),
);
}
}
if (in_array('to', $values)) {
$form['value']['to'] = array(
'#type' => 'textfield',
'#title' => t('End date'),
'#size' => 12,
'#default_value' => $this->value['to'],
);
if (module_exists('date_popup')) {
$this
->change_element_into_date_popup($form['value']['to']);
}
else {
$date = new DateTime();
$date
->modify('+6 days');
$date_example = availability_calendar_format_entry_date($date);
$form['value']['to']['#description'] = t('E.g., @date', array(
'@date' => $date_example,
));
}
if ($dependency_source !== null) {
$form['value']['to']['#dependency'] = array(
$dependency_source => $this
->operators_by_value('to'),
);
}
}
if (in_array('to1', $values)) {
$form['value']['to1'] = array(
'#type' => 'textfield',
'#title' => t('Departure date'),
'#size' => 12,
'#default_value' => $this->value['to1'],
);
if (module_exists('date_popup')) {
$this
->change_element_into_date_popup($form['value']['to1']);
}
else {
$date = new DateTime();
$date
->modify('+7 days');
$date_example = availability_calendar_format_entry_date($date);
$form['value']['to1']['#description'] = t('E.g., @date', array(
'@date' => $date_example,
));
}
if ($dependency_source !== null) {
$form['value']['to1']['#dependency'] = array(
$dependency_source => $this
->operators_by_value('to1'),
);
}
}
if (in_array('duration', $values)) {
// Keep localize.drupal.org satisfied.
if (false) {
t('1 day');
t('@count days');
t('1 night');
t('@count nights');
}
if ($this->definition['allocation_type'] === ALLOCATION_TYPE_FULLDAY) {
$singular = '1 day';
$plural = '@count days';
}
else {
$singular = '1 night';
$plural = '@count nights';
}
$options = array(
0 => t('- Select duration -'),
);
for ($i = 1; $i <= 28; $i++) {
if ($i % 7 === 0) {
$options[$i] = format_plural($i / 7, '1 week', '@count weeks');
}
else {
if ($i <= 20) {
$options[$i] = format_plural($i, $singular, $plural);
}
}
}
$form['value']['duration'] = array(
'#type' => 'select',
'#title' => t('Duration'),
'#options' => $options,
'#default_value' => $this->value['duration'],
);
if ($dependency_source !== null) {
$form['value']['duration']['#dependency'] = array(
$dependency_source => $this
->operators_by_value('duration'),
);
}
}
}