Views exposed filter дата и popup календарь в качестве контрола. Как сделать?

Главные вкладки

Аватар пользователя smartchecker smartchecker 21 июня 2011 в 14:00

Мне нужно дать возможность пользователю фильтровать заявки по дате.
Должно быть два поля "От" "До". В качестве control'ов для этих полей должны быть popup календари.
Т.е. юзер ткнул в календарь и выбрал дату.
Как это реализовать?

Комментарии

Аватар пользователя divined divined 21 июня 2011 в 14:10

Тот же Better Exposed Filter и смотрите как там реализованы HS и Checkbox и по аналогии в паре с модулем Date API пишите свой Smile

Аватар пользователя divined divined 22 июня 2011 в 10:46

smartchecker wrote:
field_date Вы как делали?
Меня интересует как handler для него написать.

Вы что уважаемый все ручками пишите? Инструментами не пользуетесь? Или вам не жалко своего времени...ничего не понимаю.

Аватар пользователя smartchecker smartchecker 22 июня 2011 в 10:49

Ну конкретно сейчас пишу модуль, который ходит по моим таблицам и строит поля для views'а.
Вот из этого модуля мне и нужно выдать фильтр по дате.

Аватар пользователя Айдар Айдар 22 июня 2011 в 13:30

Я же писал выше:

"Айдар" wrote:
Модуль Date

А во вьюшке уже выбираем фильтр "Дата", раскрываем его, указываем на "Промежуток дат" и все.
Правда, если у Вас много нод, заполненных датой текстовым полем (или другим), то придется менять тип CCK-поля на Date и переписывать заново это поле.

Аватар пользователя divined divined 22 июня 2011 в 13:34

Человек же говорит что ручками пишет модуль, а не вьюху строит через визуальное представление.
К сожалению, в этой части drupal я еще не был, помочь не могу (

Аватар пользователя Айдар Айдар 22 июня 2011 в 14:14

"divined" wrote:
Человек же говорит

О, не приметил что-то сразу.
Тогда вопрос зачем отпадает сразу - видимо, ТС не хватает возможностей views... Или таки религия? Smile

Аватар пользователя smartchecker smartchecker 22 июня 2011 в 15:46

Сделал так.

class journal_of_requests_handler_filter_request_date extends views_handler_filter_date {
    function value_form(&$form, &$form_state) {

        $date_format = 'Y-m-d';

        $form['from_date'] = array(
            '#title' => t('От'),
            '#type' => 'date_popup',
            '#date_format' => $date_format,
            '#description' => t('Дата начала периода'),
            '#default_value' => array(
                'month' => format_date(time(), 'custom', 'n'),
                'day' => format_date(time(), 'custom', 'j'),
                'year' => format_date(time(), 'custom', 'Y')
            )
        );

        $form['to_date'] = array(
            '#title' => t('До'),
            '#type' => 'date_popup',
            '#date_format' => $date_format,
            '#description' => t('Дата конца периода'),
            '#default_value' => array(
                'month' => format_date(time(), 'custom', 'n'),
                'day' => format_date(time(), 'custom', 'j'),
                'year' => format_date(time(), 'custom', 'Y')
            )
        );

        return form;
    }
}

popup календари появились.
Как теперь результаты выбора в popup календаре пропихнуть в запрос?
Вероятно нужно писать свою query()

Аватар пользователя smartchecker smartchecker 22 июня 2011 в 17:53

Не могу понять почему, если я ставлю это поле просто фильтром, то в запрос идёт то, что у меня прописано в query(), если делаю exposed, то нет.