UMIhelp

Разработка сайта на UMI.CMS => JS и AJAX => Тема начата: gleb.zabavnyy от 26 Мая 2013, 22:07:31

Название: Всплывающий календарь для выбора даты
Отправлено: gleb.zabavnyy от 26 Мая 2013, 22:07:31
Привет всем! Поставили задачу оживить сайт на Umi. С системой не знаком, пытаюсь разбираться...
Необходимо, чтобы у пользователя при нажатии на поле формы, появлялся календарь, и пользователь смог выбрать дату, которая перенесется в поле. В принципе скрипт календаря в umi уже еcть и статья подходящая http://wiki.umisoft.ru/%D0%92%D1%81%D0%BF%D0%BB%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D0%BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D1%8C_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%B0_%D0%B4%D0%B0%D1%82%D1%8B
Только у меня все это работает, когда пользователь залогинен. Когда не залогинен, Firebug пишет "TypeError: $(...).datepicker is not a function".

Дома поставил бесплатную версию umi, на ней все работает...
Название: Re:Всплывающий календарь для выбора даты
Отправлено: e.ioffe от 26 Мая 2013, 23:07:24
На сайте работает edit-in-place?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: gleb.zabavnyy от 27 Мая 2013, 00:14:43
Работает.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 31 Мая 2013, 13:22:00
у вас не хватает jquery-ui библиотеки. Функция %system includeQuickEditJs()%  в шаблоне  выводит разные js наборы. При авторизованном пользователе этот набор содержит данную библиотеку. Попробуйте подключить его вручную в head шаблона.

P.S. в последствии следует добавить проверку подключать ли ui (чтобы у авторизованного пользователя не было дублирующего подключения)
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 20 Июля 2013, 20:10:10
А у меня задачка почти такая же, но с условием того, что бы пользователь на сайте в разделе с объектами (туры) мог выбрать (или отсортировать как-то) по дате только те объекты (туры), которые он отметил в всплывающем календаре. Т есть есть ссылка "Выбрать тур по дате" , пользователь нажимает на неё и в выпадающем календаре нажимает на дату и после чего у него загружается страница с теми турами, которые ему интересны на эту дату.

Я вот уже и все скрипты нужные подключил и в турах разные даты проставил (поле с типом "дата")  и вот правильно ли я думаю, что в данном решении не обойдётся без USEL-файлов ?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 23 Июля 2013, 12:29:47
не совсем, вы можете использовать ваше поле с датой, как поле для фильтра. То есть если каким-то образом значение выбранной даты в формате unix времени попадет в адресную строку в таком виде ?fields_filter['имя_поля_с_датой'][0]=время _в_формате_UNIX_TIMESTAMP , то система при выводе списка (не важно товаров или новостей) применит этот фильтр по принципу вывести все элементы у которых значение поля имя_поля_с_датой больше чем время _в_формате_UNIX_TIMESTAMP
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 23 Июля 2013, 13:25:45
.... вы можете использовать ваше поле с датой, как поле для фильтра.

то есть данное поле должно быть как "фильтруемое" в типе данных? так у меня уже сделано.
Однако что бы увидеть этот самый календарь надо по тексту статьи
http://wiki.umisoft.ru/%D0%92%D1%81%D0%BF%D0%BB%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D0%BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D1%8C_%D0%B4%D0%BB%D1%8F_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%B0_%D0%B4%D0%B0%D1%82%D1%8B
и вставить такой код для tpl
 $FORMS['reflection_field_date'] = <<<END
<tr>
<td style="width:100%;">
%title%:
</td>
<td>
<input class="datepicker" type="text" name="%input_name%" value="%value%" size="20" />
</td>  
</tr>
END;
апро xslt вариант где можно почитать, что бы так же вставить всплывающий календарь в шаблон страницы ?
ведь пока мы его не вставим - мы не сможем протестировать результат с выборкой по дате.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 23 Июля 2013, 17:14:25
так у вас какая сейчас задача?

- сделать так чтобы в поле подставлялось значение из всплывающего календаря?
- вывод всплывающего календаря
- фильтрация по значению выбранному в сплывающем календаре
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 23 Июля 2013, 17:47:17
- сделать так чтобы в поле подставлялось значение из всплывающего календаря?
- фильтрация по значению выбранному в сплывающем календаре

Вот такая задача в сумм е двух не решённых пока вопросов.
А - вывод всплывающего календаря в общем-то за ранее решён уже.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 23 Июля 2013, 18:06:01
подстановка значения выбранного в datepicker (а я предполагаю вы используете именно его) это задача не к umi механизмам, а к js самого datepicket, посмотрите примеры с его использованием.

Добавлю лишь что datepicker возвращает значение unix timestamp в не совсем верном виде/ Поэтому делаем 2 поля одно скрытое для фильтрации и одно подставное для вывода

Пример js которая к
<input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[publish_time][0]">
<input type="text" class="textinputs datepicker_class" id="publish_time" value="">
привязывает datepicker

$( ".datepicker_class" ).datepicker({
altField: '#publish_time_hidden',
altFormat: "@",
numberOfMonths: 2,
dateFormat :'d MM, yy',
firstDay: 1,
dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
onSelect: function(dateText, inst) {
var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
var altFieldVal = jQuery(alt_Field).val();
jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
}
});
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 23 Июля 2013, 19:16:21
подстановка значения выбранного в datepicker (а я предполагаю вы используете именно его) это задача не к umi механизмам, а к js самого datepicket, посмотрите примеры с его использованием.

Да, используем именно datepicker, а про какие примеры вы упоминаете ?
Их поискать на форуме по запросу "datepicker" ?

- вывод всплывающего календаря

Кстати говоря я был не точен, то есть поторопился с успешных выносом календаря, так как в админ/панеле есть иконка, на которую нажав он и появляется, я же пока сделал поле со спойлером, в котором должна появлятся эта самая иконка.
Как эту иконку вывести в содержимое спойлера на странице ?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 23 Июля 2013, 19:22:55
говоря о примерах, я подразумевал интернет в общем, например официальная документация jQuery http://jqueryui.com/datepicker/#icon-trigger
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 24 Июля 2013, 00:01:41
Спасибо, admin. На данный момент удалось реализовать вставку даты в поле.
Однако пришлось всё таки сделать некоторые изменения в код, который вы отписали выше.
<form> 
        <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][0]" />
        <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />
<input type="submit" value="Искать" />
</form>
start_tour - это идентификатор типа данных первой даты заезда в туре, то есть он здесь вместо традиционного publish_time и именно по этому идентификатору start_tour весь "Поиск тура по дате" и строиться по идее.
НО поиск из трёх туров с разными датами не совсем точно выдаёт результаты, после нажатия кнопки "Искать"
Например если выбрать 4 июля 2013 года - то выдаётся один тур с датами 10.07.2013 - 12.07.2013
10.07.2013 -это данные из ополя с идентификатором start_tour
http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/
Вот пока не понятно почему такое не соответствие и сразу второй вопрос - а что делать с пустой страницей, если туров на выбранную дату нет?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 24 Июля 2013, 13:27:32
А так же результат поиска по дате в лентах новостей работает не чётко, то есть отображает все новости до указанной даты в календаре включая и саму дату:
temp03.web-image.ru/information_for_tourists/putevoditel_po_sanktpeterburgu/theatres/
В этом случае используется такой код, где поле с идентификатором поля "Дата публикации" publish_time типа данных "дата"
<form> 
        <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[publish_time][0]" />
        <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />
<input type="submit" value="Искать" />
</form>
Следственный вопрос: как вывести результаты выборки новостей по дате на отдельную страницу (допустим которая тип данных "Страница контента") в которой вызов списка анонсов выбранных новостей такой (то есть самый обыкновенный)
<xsl:apply-templates select="document('udata://news/lastlist/?extProps=publish_time,anons')" mode="select-to-data" />
?

Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 26 Июля 2013, 13:43:24
?fields_filter[start_tour][0]=123 означает выводить элементы, у которых в поле start_tour значение больше чем 123

?fields_filter[start_tour][1]=123 означает выводить элементы, у которых в поле start_tour значение меньше чем 123

?fields_filter[start_tour]=123 означает выводить элементы, у которых в поле start_tour значение равно 123

и если вы используете поля типа дата указывайте время в unix timestamp формате
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 26 Июля 2013, 14:41:27
?fields_filter[start_tour]=123 означает выводить элементы, у которых в поле start_tour значение равно 123
и если вы используете поля типа дата указывайте время в unix timestamp формате
Этот вариант я уже пробовал, но туры выводятся по прежнему не только за выбранное число (например 10 июля), но и за остальные последующие числа тоже (после 10-го июля).
Упоминая "поле start_tour значение равно 123" Вы имеете ввиду значение ,которое подставляется при выборе даты пользователем из выпадающего календаря ?
и если вы используете поля типа дата указывайте время в unix timestamp формате
Уточните, пожалуйста, где конкретно указать формат даты - в шаблоне объекта (тура) ?
И речь идёт о вызове
<xsl:value-of select="document(concat('udata://system/convertDate/', page/properties/group/property/value/@unix-timestamp, '/(d.m.Y)/'))/udata"/>
?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 29 Июля 2013, 15:46:01
Как вы и где выведите unix-timestamp это уже зависит от вашего шаблона и организации типов данных, так что тут, общими словами ничего не насоветуешь.

Насчет того, что у вас не работает фильтрация через fields_filter:

вот ваша страница (пути пишу относительные, но это примеры с вашего сайта)
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/

вот её же вариант отфильтрованный по полю  в диапазоне от Mon, 01 Jul 2013 00:00:00 до Wed, 10 Jul 2013 00:00:00
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1373400000

В итоге, у вас вывелись только те туры, которые начинаются в этом диапазоне дат.

Дело осталось за малым, передавать эти параметры в адресную строку при загрузке страницы. Либо при загрузке страницы использовать usel, который вы можете вызывать в xslt шаблоне передавая ему unix-timestamp время. Usel прекрасно работает с ним см. документацию по usel/ Вот небольшая вырезка из документации
Цитировать
Для полей типа "дата" можно задать формат значения для поиска, используя атрибут format ("timestamp" либо "UTC").

<property name="last_request_time">
 <min-value format="timestamp">3600</min-value>
 <max-value format="UTC">2007-11-10 14:48:10</max-value>
</property>

P.S. значение времени приведено в unix timestamp  формате их можно получить при работе с полем типа дата. Посмотрите на примере /upage://110, у поля start_tour есть атрибут @unix-timestamp.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 31 Июля 2013, 13:04:31
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1373400000

В итоге, у вас вывелись только те туры, которые начинаются в этом диапазоне дат.
вот в этом то всё и дело, что диапозон "с и по" не нужен, нужна только одна дата которая выводит только те туры, которые проходят по этой дате как активные.
Дело осталось за малым, передавать эти параметры в адресную строку при загрузке страницы.
Вот здесь я и застопорился... пробую использовать такую строку по вашей рекомендации
 <form>
                  <div class="buttom-link2">          
                  <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour]" />
                   <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />
                  <input class="button4" type="submit" value="Найти" />
                  </div>
              </form>
, но всё равно выводятся все туры начиная с этой даты,а не только в эту дату, а в адресной строке такое содержание:
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour]=1373400000
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 31 Июля 2013, 17:54:39
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1373400000

В итоге, у вас вывелись только те туры, которые начинаются в этом диапазоне дат.
вот в этом то всё и дело, что диапозон "с и по" не нужен, нужна только одна дата которая выводит только те туры, которые проходят по этой дате как активные.
Дело осталось за малым, передавать эти параметры в адресную строку при загрузке страницы.
Вот здесь я и застопорился... пробую использовать такую строку по вашей рекомендации
 <form>
                  <div class="buttom-link2">           
                   <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour]" />
                   <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />
                  <input class="button4" type="submit" value="Найти" />
                  </div>
              </form>
, но всё равно выводятся все туры начиная с этой даты,а не только в эту дату, а в адресной строке такое содержание:
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour]=1373400000

для вывода конкретной даты попробуйте такие параметры fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1372622400, то есть одну дату для значение от и до.
Соответственно input в форме, которую вы отправляете, поменяйте, чтобы в адресной строке получился вышеописанный пример
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 01 Августа 2013, 00:55:33
для вывода конкретной даты попробуйте такие параметры fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1372622400, то есть одну дату для значение от и до.
я так уже пробовал вставлять в адресную строку и мне действительно выводились туры на одну конкретную дату и как в данном случае только туры на 1-е июля.
Соответственно input в форме, которую вы отправляете, поменяйте, чтобы в адресной строке получился вышеописанный пример
Вот у меня и вопрос об этом - как же её эту форму <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour]" /> так поменять, что бы
 
Выдавал только туры на конкретную дату ?

Вот так пробовал:
<input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour{0}&fields_filter[start_tour]{1}" />

 но ошибка получается
Warning: XSLTProcessor::importStylesheet(): /var/www/clients/client0/web106/web/templates/rusgorod/xslt/modules/catalog/category-view-id150.xsl:17: parser error : EntityRef: expecting ';'
и далее по тексту...
 
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 01 Августа 2013, 01:54:01

Вот так пробовал:
<input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour{0}&fields_filter[start_tour]{1}" />

 но ошибка получается
Warning: XSLTProcessor::importStylesheet(): /var/www/clients/client0/web106/web/templates/rusgorod/xslt/modules/catalog/category-view-id150.xsl:17: parser error : EntityRef: expecting ';'
и далее по тексту...
 

<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][0]" />
<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][1]" />
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 01 Августа 2013, 12:20:13
<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][0]" />
<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][1]" />

Сделал так, но не выходит желаемый результат.
Вкратце о ситуации: если в адресной строке вручную ввести ?fields_filter[start_tour][0]=1373400000&fields_filter[start_tour][1]=1373400000
то действительно выводится только туры за 10 июля,  или вот ещё так
?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1374436800
где туры только на 22 июля.
Вручную результат - что надо.

НО в действительности  если не в ручную, а через выбор из календаря дату 22 июля, то вот с таким адресом
?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1373400000
выводятся туры и за 22 июля и за 10 июля... очевидно что только первое значени подставляется 1374436800 вместо 1373400000 для fields_filter[start_tour][0], а для fields_filter[start_tour][1] значение остаётся прежним  1373400000

Походу дела не обойтись без создания второго поля "конечная дата" ? То есть надо всё-таки сделать Выбор тура по дате "Начальная и конечная дата" ?

Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 04 Августа 2013, 04:01:35
я честно говоря не вижу, в вашем случае, неверного поведения системы. Еще раз кратко все что я рассказывал....

Параметр в адресной строке с

Параметр в адресной строке с [1] на конце означает что система будет искать все объекты меньше этого значения. Например параметр fields_filter[start_tour][1]=1373400000 позволит вывести туры, укоторых в поле start_tour значение меньше 1373400000 (то есть раньше даты Tue, 09 Jul 2013 20:00:00 GMT).

Цитировать
НО в действительности  если не в ручную, а через выбор из календаря дату 22 июля, то вот с таким адресом
?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1373400000
выводятся туры и за 22 июля и за 10 июля... очевидно что только первое значени подставляется 1374436800 вместо 1373400000 для fields_filter[start_tour][0], а для fields_filter[start_tour][1] значение остаётся прежним  1373400000
Теперь о вашей задаче. Если вам надо вывести все мероприятия, дата начала которых лежит в определенном диапазоне, то задайте 2 вышеприведенных параметр указав им соответствующие даты начала и конца временного диапазона. Что вы в общем то и сделали, только перепутали даты у вас получилось вывести мероприятия дата начала которых меньше  09 Jul 2013 и больше 21 Jul 2013, но система за вас поменяла их местами.

В итоге у меня вопрос вы получили именно то что и хотели, но вы явно пишите что что-то работает не так. Что вы хотели получить в результате?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 04 Августа 2013, 04:06:42
причем на вашем тестовом сайте я выбираю дату (например 7 июня) и получаю только один тур. Но проверяя параметры которые вы подставили в адресную строку я вижу что при моей дате 7 июня в адресную строку ушли параметры диапазона дат 6 июня - 9 июня что не совсем точно, так как у вас могло бы быть мероприятие за 9 июня и оно бы тоже попало в результат.

Если вы сами создаете этот диапазон, со создавайте его по принципу... человек указал 7 июня, значит передаем в параметры значения 7 июня 00:00 - 7 июня 23:59 (или 8 июня 00:00)
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 05 Августа 2013, 14:39:27
я честно говоря не вижу, в вашем случае, неверного поведения системы.
В итоге у меня вопрос вы получили именно то что и хотели, но вы явно пишите что что-то работает не так. Что вы хотели получить в результате?
Результат устраивает на половину, то есть система выводит туры ОТ выбранной даты, но вот пока не решён вопрос с датой которая ДО.
А в итоге нужен работающий механизм, формирующий в адресной строке запрос с одинаковым значением даты ОТ и ДО. То есть пользователь выбирает (например) 22 июля из выпадающего календаря.и ему в итоге должна сформироваться такая адресная строка  http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1374436800

но сейчас по факту формируется такая строка http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=

с обнуленными значения полей для value=""
                   <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][0]" />
                   <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][1]" />

то есть на данный момент значение поля  выбранной даты пользователем через календарь подставляется в value="" для параметра  fields_filter[start_tour][0], а для value="" fields_filter[start_tour][1] пусто...

Как сделать так что бы дата подставлялась для обоих параметров

 что бы туры по дате ,которая (дата )будет одинакова по значению для
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 05 Августа 2013, 15:23:16
а тут вы встали на грабли неправильного использования js... так как, у обоих input одинаковый id, который и используется js для подставки значения в input.. что и приводит ошибке
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 05 Августа 2013, 16:08:49
а тут вы встали на грабли неправильного использования js... так как, у обоих input одинаковый id, который и используется js для подставки значения в input.. что и приводит ошибке

вот такой код сейчас выводит всплывающий календарь
               <script>
                  $(function() {
                     $( ".datepicker_class" ).datepicker({
           altField: '#publish_time_hidden',
           altFormat: "@",
           numberOfMonths: 1,
           dateFormat :'d MM, yy',
           firstDay: 1,
           dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
           monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
           monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
           onSelect: function(dateText, inst) {
   var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
   var altFieldVal = jQuery(alt_Field).val();
   jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
        }
         });
       });
               </script>

вопрос теперь в том, как ещё один ID такой же вставить как #publish_time_hidden?

я попробовал вот так:
              
<script>
                  $(function() {
                     $( ".datepicker_class" ).datepicker({
           altField: '#publish_time_hidden',
                                    altField: '#publish_time_hidden1',
           altFormat: "@",
           numberOfMonths: 1,
           dateFormat :'d MM, yy',
           firstDay: 1,
           dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
           monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
           monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
           onSelect: function(dateText, inst) {
   var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
   var altFieldVal = jQuery(alt_Field).val();
   jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
        }
         });
       });
               </script>

вот в такими инпутами:                  
                  <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][0]" />
                   <input type="hidden" class="textinputs" id="publish_time_hidden1" value="" name="fields_filter[start_tour][1]" />

получилось вот такое (выбор даты 10 июля) http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=0&fields_filter[start_tour][1]=1373400000000, то есть теперь первый параметр fields_filter[start_tour][0] в адресной строке равен нулю...

Вопрос в js - для меня сложный. подскажите, пожалуйста, как надо правильно вписать второй ID в js ?



Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 05 Августа 2013, 16:21:01
это вопрос к js. вы не верно используете указание параметров , второй параметр просто перекрывает первый.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 05 Августа 2013, 17:27:31
это вопрос к js. вы не верно используете указание параметров , второй параметр просто перекрывает первый.
да, я понимаю, что перекрытие случается при таких условиях, однако как сделать так, что бы последний параметр не перекрывал предыдущий, ведь в нашем случает без второго ID не обойтись ?

 
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 05 Августа 2013, 17:45:49
перешустрить интернет на тему того, как при выборе даты в datepicker вписать значение в 2 поля. Это вопрос уже не к umi а к js, а так как дальше будет только больше такого, стоит потратить время и разобраться с этими вопросами
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 07 Августа 2013, 11:09:07
перешустрить интернет на тему того, как при выборе даты в datepicker вписать значение в 2 поля. Это вопрос уже не к umi а к js, а так как дальше будет только больше такого, стоит потратить время и разобраться с этими вопросами
Спасибо, ясно.
И последний вопрос: возможно ли сделать, так что бы результаты с выбранными турами выводились на отдельной странице (специально созданной для этого) ?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 07 Августа 2013, 11:58:51
Для этого вам достаточно создать страницу на которой выводятся туры и сделать action в form, который будет перекидывать на эту страницу. Параметры соответственно будут перекидываться в адресную строчку что и приведет к фильтрации данных туров.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 08 Августа 2013, 13:15:20
подстановка значения выбранного в datepicker (а я предполагаю вы используете именно его) это задача не к umi механизмам, а к js самого datepicket, посмотрите примеры с его использованием.

Добавлю лишь что datepicker возвращает значение unix timestamp в не совсем верном виде/ Поэтому делаем 2 поля одно скрытое для фильтрации и одно подставное для вывода

Пример js которая к
<input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[publish_time][0]">
<input type="text" class="textinputs datepicker_class" id="publish_time" value="">
привязывает datepicker

$( ".datepicker_class" ).datepicker({
altField: '#publish_time_hidden',
altFormat: "@",
numberOfMonths: 2,
dateFormat :'d MM, yy',
firstDay: 1,
dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
onSelect: function(dateText, inst) {
var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
var altFieldVal = jQuery(alt_Field).val();
jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
}
});

От куда родом (то есть от куда вы его взяли и вставили сюда) в строчке <input type="text" class="textinputs datepicker_class" id="publish_time" value="">

id="publish_time" - и где свойства этого ID редактировать или задублировать можно?

?
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 08 Августа 2013, 13:32:23
в моем случае id input это имя поля, то есть в шаблоне при выводе формы у меня это выглядит так

<input type="hidden"  id="{@name}_hidden" name="{@input_name}" class="textinputs" />
<input type="text" id="{@name}" class="textinputs datepicker_class" >
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 09 Августа 2013, 00:21:26
В итоге всё же получилось!  Если кому интересно - могу конечный результат залить сюда.
Всё-таки в два поля "С" и "По" но удалось-таки вывести чёткий выбор по указанной дате.
Название: Re:Всплывающий календарь для выбора даты
Отправлено: admin от 09 Августа 2013, 00:36:01
конечно заливайте конечный результат, такая работа была сделанна, явно может быть полезна другим
Название: Re:Всплывающий календарь для выбора даты
Отправлено: Axiomateria от 10 Августа 2013, 22:14:48
конечно заливайте конечный результат, такая работа была сделанна, явно может быть полезна другим

Вкратце результат таков:
в файле default.xsl (папка layouts) код js
<head>
<!-- Calendar -->          
               <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>              
               <script>
                  $(function() {
                     $( ".datepicker_class" ).datepicker({
           altField: '#publish_time_hidden',
           altFormat: "@",
           numberOfMonths: 1,
           dateFormat :'d MM, yy',
           firstDay: 1,
           dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
           monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
           monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
           onSelect: function(dateText, inst) {
   var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
   var altFieldVal = jQuery(alt_Field).val();
   jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
        }
         });
       });
               </script>
               <script>
                  $(function() {
                     $( ".datepicker_class2" ).datepicker({
           altField: '#publish_time2_hidden2',
           altFormat: "@",
           numberOfMonths: 1,
           dateFormat :'d MM, yy',
           firstDay: 1,
           dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
           monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
           monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
           onSelect: function(dateText, inst) {
   var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden2');
   var altFieldVal = jQuery(alt_Field).val();
   jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
        }
         });
       });
               </script>                
              <!-- / Calendar -->
</head>

А сама форма с двумя полями "ОТ" и "ДО" в файле category-view.xsl (папка modules/catalog) такая:
              
 <form> 
                  <div class="buttom-link2">      
                   с <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][0]" />
                   <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />  
                   <input type="hidden" class="textinputs" id="publish_time2_hidden2" value="" name="fields_filter[start_tour][1]" />
                   по <input type="text" class="textinputs datepicker_class2" id="publish_time2" value="" />
              <input class="button4" type="submit" value="Найти" />
                  </div>
       </form>

В итоге пользователь выбирая из календаря дату "ОТ" и "ДО" может задать или диапазон с различными датами или выбрать две одинаковые даты по своему желанию, В следствие этого выбора получается вывод всех туров попавшие под
актуальное значение поля  "start_tour", то есть значение начальной даты тура.