Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Выполнено] Пофиксить баг календаря. Подружить модуль и шаблон


tolik777
 Поделиться

Рекомендованные сообщения

Краткое описание задачи: Необходимо пофиксить баг календаря связанный с позиционированием. Насколько я разобрался, работа в основном связана с JavaScript, плюс немного CSS.

 

Исходные данные:

ocStore 1.5.5.1.2

Модуль OpenCart Reservations -booking system for products vqmod

Шаблон Pizza Chef - Bootstrap Template 1.0.2 vqmod

Больше никаких изменений не вносилось.

 

Более подробное описание задачи:

Итак на основе OpenCart и вышеупомянутого модуля создается сервис аренды. Смысл данного модуля в том, что он подменяет поле даты (задается опция) у товара и добавляет второй поле, т.к. срок аренды с такой-то даты по такую то.

Вот как это выглядит на дефолтном шаблоне:

post-669947-0-84614400-1402929641_thumb.png

При этом, модуль заменяет стандартный модуль календаря на Zebra_Datepicker

 

Проблема в том, что после установки шаблона Pizza, он также заменяет модуль календаря на какой-то свой. Я пытался оставить в шаблоне старый модуль календаря, для этого я исключил XML-файл для vqmod, который вырезает модуль календаря, а также в шаблон product.tpl добавил строчки даты (когда отображаются опции даты) из дефолтного шаблона.

Календарь и функции аренды заработали, но криво, т.к. во первых иконка календарика отображается не там где надо, а во вторых при щелчке на ней сам календарь отображается снизу страницы.

post-669947-0-37978200-1402930228_thumb.png

post-669947-0-60137700-1402930238_thumb.png

 

Пытался разобраться сам. В коде календаря zebra_datepicker.src.js нашел функции для расчета позиции отображения иконки и самого календаря:

 var

                    // get the date picker width and height
                    datepicker_width = datepicker.outerWidth(),
                    datepicker_height = datepicker.outerHeight(),

                    // compute the date picker's default left and top
                    // this will be computed relative to the icon's top-right corner (if the calendar icon exists), or
                    // relative to the element's top-right corner otherwise, to which the offsets given at initialization
                    // are added/subtracted
                    left = (undefined !== icon ? icon.offset().left + icon.outerWidth(true) : $element.offset().left + $element.outerWidth(true)) + plugin.settings.offset[0],
                    top = (undefined !== icon ? icon.offset().top : $element.offset().top) - datepicker_height + plugin.settings.offset[1],

                    // get browser window's width and height
                    window_width = $(window).width(),
                    window_height = $(window).height(),

                    // get browser window's horizontal and vertical scroll offsets
                    window_scroll_top = $(window).scrollTop(),
                    window_scroll_left = $(window).scrollLeft();

                // if date picker is outside the viewport, adjust its position so that it is visible
                if (left + datepicker_width > window_scroll_left + window_width) left = window_scroll_left + window_width - datepicker_width;
                if (left < window_scroll_left) left = window_scroll_left;
                if (top + datepicker_height > window_scroll_top + window_height) top = window_scroll_top + window_height - datepicker_height;
                if (top < window_scroll_top) top = window_scroll_top;

                // make the date picker visible
                datepicker.css({
                    'left':     left,
                    'top':      top
                });

top как раз задает позицию по вертикали. Если поставить там фиксированное значение, то все работает как надо, но стоит изменить размер окна браузера, так по вертикали сразу же происходит смещение. В общем должна быть привязка к элементу формы по которой щелкнули. Но здесь у меня ума не хватает разобраться.

 

В общем ищу исполнителя данной интересной задачки.

 

Сроки ваши.

 

По стоимости готов выслушать.

 

Оплата WebMoney, RBKMoney, Яндекс.Деньги, Сбербанк, на карту, на р/с и т.д. как вам удобнее.

 

Если нужен отзыв на weblancer или fl, то можно оформить через биржу фриланса с оставлением отзыва (у меня там эккаунты по несколько лет с постоянными заказами и отзывами).

Ссылка на комментарий
Поделиться на других сайтах


Гость
Эта тема закрыта для дальнейших сообщений.
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.