• Главная
  • Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

Приветствую на сайте проекта radgura !  

По всем вопросам пишите: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

  • экспорт в яндекс маркет YML формат


    Стоимость 1000

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 1000руб. RUB
  • мониторинг здоровья


    Стоимость 700

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 700руб. RUB
  • Модуль отзывов яндекс маркета, флампа


    Стоимость 500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать модуль 500руб. RUB
  • таблица замены по тегу


    Стоимость 700

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 700руб. RUB
  • ЖКХ паспорт дома


    Стоимость 2500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 2500руб. RUB
  • Акции К2 store


    Стоимость 1200

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 1200руб. RUB
  • K2 store купоны


    Стоимость 1500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 1500руб. RUB
  • K2 store сопутствующий товар


    Стоимость 1000

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 1000руб. RUB
  • Водяной знак, торговая марка


    Стоимость 1500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 1500руб. RUB
  • JShopping поиск товара по атрибутам


    Стоимость 1000

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать модуль 1000руб. RUB
  • Плагин оплаты K2 store Tinkoff


    Стоимость 700

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать плагин 700руб. RUB
  • Плагин Scroll to Top Mobile Detect


    Стоимость 500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать плагин 500руб. RUB
  • Плагин оплаты K2 store RoboKassa


    Стоимость 500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать плагин 500руб. RUB
  • Плагин оплаты K2 store Яндекс Кошелек


    Стоимость 500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать плагин 500руб. RUB
  • Статистика К2 (Joomla 3x)


    Стоимость 1500

    @radgura.ru
    Адриена Лежена
    63089
    Новосибирск
    Адриена Лежена
    +7(983)
    3067856
    Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

    Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

    Вы можете Заказать компонент 1500руб. RUB

Дорабатываем компонент записи на прием Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

Заказать доработкуJoomla 3x

Стоимость 400


Свяжитесь с нами::
Телефон : +7xxx-xxx-xxxx
@radgura.ru
Адриена Лежена
63089
Новосибирск
Адриена Лежена
+7(983)
3067856
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Дорабатываем Appointment Book Manager 1.4.1 (jxtcappbook) - добавляем места

Вы можете Заказать доработку 400руб. RUB

В данной статье расскажу, как реализовали запись в класс, через компонент Appointment Book Manager. 

Стандартная реализация позволяет зарегистрировать 1 человека в один отведенный час, после чего выводилась отметка, что данный час занят. Нам требовалось плавающие значение от 3 до 23 человек на один час.

Редактируем административную часть компонента

1.Необходимо добавить поле place_count int(11) в таблицу #_jxtc_appbook_calendars

2.Добавляем новую переменную - кол-во мест, файл

/administrator/components/com_jxtcappbook/tables/calendars.php

После строки:

var $article_id = 0;

Добавляем:

var $article_id = 0;
var $place_count = 0;

3.Редактируем файл формы:

/administrator/components/com_jxtcappbook/views/parent/tmpl/form.php

После кода:

// do field validation
var error = '';
if (form.title.value == "") {
error = error + "<?php echo JText::_('APPBOOK_ERRORCALENDARMUSTHAVEANAME', true); ?>\n";
}

Добавляем код:

// do field validation
var error = '';
if (form.title.value == "") {
error = error + "<?php echo JText::_('APPBOOK_ERRORCALENDARMUSTHAVEANAME', true); ?>\n";
}
var error = '';
if (form.place_count.value == ""){
error = error + "<?php echo 'Не правильно указано кол-во мест'; ?>\n";
}
var error = '';
if (form.place_count.value < 1 ){
error = error + "<?php echo 'Не правильно указано кол-во мест'; ?>\n";
}

 4.Добавляем поле "Кол-во мест", файл:

/administrator/components/com_jxtcappbook/views/parent/tmpl/form_tab1.php

Добавляем в конец файла код:

<div class="control-group">
<div class="control-label">
<span class="hasTip" title="Place Count::Count of place.">
<?php echo 'Кол-во мест'; ?>:
</span>
</div>
<div class="controls">
<input class="inputbox required" type="number" name="place_count" id="place_count" size="60" value="<?php echo $this->row->place_count; ?>" />
</div>
</div>

5.Добавляем заголовки, файл

/administrator/components/com_jxtcappbook/views/parents/tmpl/default.php

Меняем код:

<?php echo JHTML::_('grid.sort', 'Calendar Name', 'p.title', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>

На:

<?php echo JHTML::_('grid.sort', 'Наименование курса', 'p.title', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
</th>
<th class="title">
<?php echo JHTML::_('grid.sort', 'Кол-во мест', 'p.title', @$this->lists['order_Dir'], @$this->lists['order'] ); ?>
</th>

Далее меняем код:

<td>
<span class="editlinktip hasTip" title="<?php echo JText::_('APPBOOK_EDITCALENDAR');?>::<?php echo $row->title; ?>">
<a href="/<?php echo $link ?>">
<?php echo $row->title; ?></a></span>
</td>

На это:

<td>
<span class="editlinktip hasTip" title="<?php echo JText::_('APPBOOK_EDITCALENDAR');?>::<?php echo $row->title; ?>">
<a href="/<?php echo $link ?>">
<?php echo $row->title; ?></a></span>
</td>

<td>
<span class="editlinktip hasTip" title="<?php echo $row->place_count;?>">
<a href="/<?php echo $link ?>">
<?php echo $row->place_count;?>
</a></span>
</td>

Редактируем лицевую часть компонента

1.Дорабатываем заглушку

\components\com_jxtcappbook\templates\default\picker\default.php

Добавляем код после 101 строки,где есть строка:

$fullTimetable[] = $startKey;

Добавляем:

// вычисляем кол-во занятых мест
$query = 'SELECT *,dayofmonth(date) as day FROM #__jxtc_appbook_appointments WHERE published=1 AND parent_id=' . $this->calendar_id . ' AND year(date) = ' . $this->y . ' AND month(date) = ' . $this->m . ' and start="'.$startKey.'" ORDER BY date, start';
$db->setQuery($query);
$appointments = $db->loadObjectList();
$app_count = $db->getAffectedRows ();

Далее меняем блок "заглушку" на 106 строке:

if ($this->d < $this->today_d && $this->y <= $this->today_y && $this->m <= $this->today_m) {
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeBusy">' . JText::_('NOTAVAILABLE') . '</td>';
} elseif (isset($timetable[$this->d][$startKey])) {
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeBusy">' . JText::_('OCCUPIED') . '</td>';
} elseif (!$isWorkDay) {
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeBusy">' . JText::_('NOTAVAILABLE') . '</td>';
} else {
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeFree" ><input type="radio" name="appointment" value="' . $startKey . '" onclick="changeTimes(\'' . $calendar->min_duration . '\',\'' . $startKey . '\',\'' . $endKey . '\')"/></td>';
}

Меняем на:

if ($this->d < $this->today_d && $this->y <= $this->today_y && $this->m <= $this->today_m) 
{
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeBusy">' . JText::_('NOTAVAILABLE') . '</td>';
} elseif (isset($timetable[$this->d][$startKey]))
//закончилось кол-во мест
{
if ($app_count<$total_place_count)
{
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeFree" ><input type="radio" name="appointment" value="' . $startKey . '" onclick="changeTimes(\'' . $calendar->min_duration . '\',\'' . $startKey . '\',\'' . $endKey . '\')"/><p>'.$app_count.'/'.$total_place_count.'</p></td>';
}
if ($app_count>=$total_place_count)
{
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeBusy">' . JText::_('OCCUPIED') . '</td>';
}
}
//нет курсов
elseif (!$isWorkDay) {
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeBusy">' . JText::_('NOTAVAILABLE') . '</td>';
} else {
$timetableHTML .= '<td class="' . $this->suf . 'timeSlot timeFree" ><input type="radio" name="appointment" value="' . $startKey . '" onclick="changeTimes(\'' . $calendar->min_duration . '\',\'' . $startKey . '\',\'' . $endKey . '\')"/><p>'.$app_count.'/'.$total_place_count.'</p></td>';
}

 2.Редактируем имя календаря, открываем файл:

components/com_jxtc_appbook_j30/site/templates/default/calendars/default.php

Меняем код:

echo '<div id="appbook">';
foreach ($this->rows as $row) {
switch ($this->config->formMode) {
case 's':
$bookingURL = '<a href="'.JRoute::_('index.php?option=com_jxtcappbook&view=book&pid='.$row->id).'" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.'</a>';
break;
case 'n':
$bookingURL = '<a target ="_blank" href="'.JRoute::_('index.php?option=com_jxtcappbook&view=book&pop=1&tmpl=component&pid='.$row->id).'" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.'</a>';
$URL = JRoute::_('index.php?option=com_jxtcappbook&view=book&pop=1&tmpl=component&pid='.$row->id);
$bookingURL = '<a href="/" onclick="MyWindow=window.open(\''.$URL.'\',\'_blank\',\'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width='.$this->config->width.',height='.$this->config->height.',left=200,top=200\'); return false;" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.'</a>';
break;
case 'm':
$bookingURL = '<a class="modal" rel="{handler: \'iframe\', size: {x: '.$this->config->width.', y: '.$this->config->height.'}}" href="'.JRoute::_('index.php?option=com_jxtcappbook&view=book&pop=2&tmpl=component&pid='.$row->id).'" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.'</a>';
break;
}
// $bookingURL = '<a class="modal" href="/component/jxtcappbook/?tmpl=component&view=item&pid='.$row-&gt;id_'=" alt="'
// .JText::_(strip_tags($appointmentButton)).'" rel="{handler: \'iframe\', size: {x: 680, y: 750}}">'.$appointmentButton.'</a>';
$row->description = str_replace('{booking_form}',$bookingURL,$row->description);
echo '<div class="calendar">';
echo $row->description;
echo '</div>';
}

На это: 

$db = JFactory::getDBO();
echo '<div id="appbook">';
foreach ($this->rows as $row) {
$queryss= $db->getQuery(true);
$queryss ='SELECT title FROM #__jxtc_appbook_calendars WHERE id=' . $row->id;
$db->setQuery($queryss);
$calendarsss = $db->loadRow();
switch ($this->config->formMode) {
case 's':
$bookingURL = '<a href="'.JRoute::_('index.php?option=com_jxtcappbook&view=book&pid='.$row->id).'" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.' - '.$calendarsss[0].'</a>';
break;
case 'n':
$bookingURL = '<a target ="_blank" href="'.JRoute::_('index.php?option=com_jxtcappbook&view=book&pop=1&tmpl=component&pid='.$row->id).'" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.' - '.$calendarsss[0].'</a>';
$URL = JRoute::_('index.php?option=com_jxtcappbook&view=book&pop=1&tmpl=component&pid='.$row->id);
$bookingURL = '<a href="/" onclick="MyWindow=window.open(\''.$URL.'\',\'_blank\',\'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width='.$this->config->width.',height='.$this->config->height.',left=200,top=200\'); return false;" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.' - '.$calendarsss[0].'</a>';
break;
case 'm':
$bookingURL = '<a class="modal" rel="{handler: \'iframe\', size: {x: '.$this->config->width.', y: '.$this->config->height.'}}" href="'.JRoute::_('index.php?option=com_jxtcappbook&view=book&pop=2&tmpl=component&pid='.$row->id).'" alt="'.JText::_(strip_tags($appointmentButton)).'">'.$appointmentButton.' - '.$calendarsss[0].'</a>';
break;
}
// $bookingURL = '<a class="modal" href="/component/jxtcappbook/?tmpl=component&view=item&pid='.$row-&gt;id_'=" alt="'
// .JText::_(strip_tags($appointmentButton)).'" rel="{handler: \'iframe\', size: {x: 680, y: 750}}">'.$appointmentButton.'</a>';
$row->description = str_replace('{booking_form}',$bookingURL,$row->description);
echo '<div class="calendar">';
echo $row->description;
echo '</div>';
}

 Итого

Если вы правильно все сделали, то в административной части, при редактировании календаря, можно указать кол-во свободных мест. В лицевой части появится "Места". как показано на изображении.