/** * Render month row */ static function monthRow($first, $last, $month, $rooms, $ari, $filter_room = false, $start_empty_days = 0, $end_empty_days = 0) { $html = []; $today_int = CHLibDate::getDate()->format('Ymd'); $currency = isset($ari->currency) ? CHLibDisplay::currencySymbol($ari->currency) : ''; foreach ($rooms as $room) { // check room if ($filter_room && $room->id != $filter_room) { continue; } // prepare available & rates keys $room_ari = isset($ari->ari) ? CHLibData::getObjectFromList($ari->ari, $room->id, 'room_id') : 0; // generate html if (!$filter_room) { $title = '<div class="uk-vertical-align-middle">' . $room->title . '</div>'; $html[] = '<div class="uk-vertical-align ch-month-cell ch-month-cell-row ch-month-cell-title">' . $title . '</div>'; } // empty rows for ($i = 0; $i < $start_empty_days; $i++) { $html[] = '<div class="ch-month-cell ch-month-cell-row"></div>'; } foreach ($month->dates as $date) { // month rows $day = $date->day; if ($day < $first || $day > $last) { continue; } // get day data $date_int = str_replace('-', '', $date->date); $rate = '-'; $aclass = ''; $is_not_in_past = $date_int >= $today_int; if ($room_ari) { $has_availability = isset($room_ari->availability[$day - 1]); $has_rate_and_is_not_zero = isset($room_ari->rates[0]->rate[$day - 1]) && $room_ari->rates[0]->rate[$day - 1] > 0; if ($is_not_in_past && $has_availability && $has_rate_and_is_not_zero) { $rate = CHLibDisplay::money($room_ari->rates[0]->rate[$day - 1], $currency); $available = $room_ari->availability[$day - 1]; $aclass = 'ch-month-cell-span-available-' . ($available ? $available > 2 ? 'ok' : 'low' : 'no'); } } // cells $html[] = '<div class="ch-month-cell ch-month-cell-row ch-month-cell-day-' . $date->day_week . '">'; $html[] = '<small class="uk-text-muted ch-month-cell-span ch-month-cell-span-available ' . $aclass . '">' . $rate . '</small>'; $html[] = '</div>'; } // empty rows for ($i = 0; $i < $end_empty_days; $i++) { $html[] = '<div class="ch-month-cell ch-month-cell-row"></div>'; } } return implode("\n", $html); }
/** * Load required assets */ static function chassets() { // check if already loaded $app = self::getApp(); if (isset($app->chclient->assets)) { return; } // config $config = self::getConfig(); // chclient assets CHAssets::script('chclient', 'chclient.min.js'); CHAssets::style('chclient', 'chclient.min.css'); // credit card validator CHAssets::script('chclient/jquery-creditcardvalidator', 'jquery.creditCardValidator.min.js'); // required uikit components CHAssets::uikit_component('accordion'); CHAssets::uikit_component('datepicker'); CHAssets::uikit_component('form-select'); CHAssets::uikit_component('notify'); CHAssets::uikit_component('sticky'); CHAssets::uikit_component('tooltip'); // optional components if ($config->settings_uikit_form_advanced) { CHAssets::uikit_component('form-advanced'); } // javascript options $localeconv = CHLibDisplay::getLocaleconv(); $js = (object) []; $js->string_error = self::string('error_occurred'); $js->string_check_form = self::string('error_check_form'); $js->string_people = self::string('people'); $js->money_decimal = $localeconv['mon_decimal_point']; $js->money_thousands = $localeconv['mon_thousands_sep']; $js->datepicker_i18n = self::datePickerLocale(); $js->datepicker_min_date = CHLibDate::getDate()->format(CHLibDate::dateLocale()); $js->datepicker_format = str_replace('Y', 'YYYY', str_replace('m', 'MM', str_replace('d', 'DD', CHLibDate::dateLocale()))); $js->datepicker_weekstart = CHLibDate::weekStart(); $js->bootstrap_adapter = (int) $config->settings_bootstrap_adapter; CHAssets::script_declaration('window.chclient_options = ' . json_encode($js) . ';'); $app->chclient->assets = true; }