Краткое описание задачи: Необходимо пофиксить баг календаря связанный с позиционированием. Насколько я разобрался, работа в основном связана с JavaScript, плюс немного CSS.
Исходные данные:
ocStore 1.5.5.1.2
Модуль OpenCart Reservations -booking system for products vqmod
Шаблон Pizza Chef - Bootstrap Template 1.0.2 vqmod
Больше никаких изменений не вносилось.
Более подробное описание задачи:
Итак на основе OpenCart и вышеупомянутого модуля создается сервис аренды. Смысл данного модуля в том, что он подменяет поле даты (задается опция) у товара и добавляет второй поле, т.к. срок аренды с такой-то даты по такую то.
Вот как это выглядит на дефолтном шаблоне:
При этом, модуль заменяет стандартный модуль календаря на Zebra_Datepicker
Проблема в том, что после установки шаблона Pizza, он также заменяет модуль календаря на какой-то свой. Я пытался оставить в шаблоне старый модуль календаря, для этого я исключил XML-файл для vqmod, который вырезает модуль календаря, а также в шаблон product.tpl добавил строчки даты (когда отображаются опции даты) из дефолтного шаблона.
Календарь и функции аренды заработали, но криво, т.к. во первых иконка календарика отображается не там где надо, а во вторых при щелчке на ней сам календарь отображается снизу страницы.
Пытался разобраться сам. В коде календаря 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, то можно оформить через биржу фриланса с оставлением отзыва (у меня там эккаунты по несколько лет с постоянными заказами и отзывами).