Perform styling changes to the public booking page

This commit is contained in:
Alex Tselegidis 2024-01-06 12:32:36 +01:00
parent b192b437e0
commit a02a6118b6
36 changed files with 144 additions and 122 deletions

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -452,4 +452,5 @@ $lang['label'] = 'Label';
$lang['webhook_saved'] = 'Webhook saved successfully.';
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
$lang['delete_webhook'] = 'Delete Webhook';
$lang['contact_info'] = 'Contact Info';
// End

View File

@ -11,13 +11,19 @@
<div id="wizard-frame-4" class="wizard-frame" style="display:none;">
<div class="frame-container">
<h2 class="frame-title"><?= lang('appointment_confirmation') ?></h2>
<div class="row frame-content">
<div id="appointment-details" class="col-12 col-md-6 text-center text-md-start"></div>
<div id="customer-details" class="col-12 col-md-6 text-center text-md-end"></div>
<div class="row frame-content m-auto pt-md-4 mb-4">
<div id="appointment-details" class="col-12 col-md-6 text-center text-md-start mb-2 mb-md-0">
<!-- JS -->
</div>
<div id="customer-details" class="col-12 col-md-6 text-center text-md-end">
<!-- JS -->
</div>
</div>
<?php if (setting('require_captcha')): ?>
<div class="row frame-content">
<div class="col-12 col-md-6">
<div class="row frame-content m-auto">
<div class="col">
<label class="captcha-title" for="captcha-text">
CAPTCHA
<button class="btn btn-link text-dark text-decoration-none py-0">

View File

@ -11,7 +11,7 @@
<h2 class="frame-title"><?= lang('service_and_provider') ?></h2>
<div class="row frame-content">
<div class="col col-sm-8 offset-sm-2 mt-sm-5">
<div class="col col-md-8 offset-md-2 mt-md-5">
<div class="mb-3">
<label for="select-service">
<strong><?= lang('service') ?></strong>

View File

@ -185,7 +185,7 @@ body {
margin: 15px 0;
padding-right: 10px;
width: auto;
max-height: 255px;
max-height: 250px;
}
#book-appointment-wizard #available-hours div {
@ -273,6 +273,10 @@ body {
margin: 15px 0;
}
#book-appointment-wizard #wizard-frame-4 .frame-container .frame-content {
max-width: 630px;
}
@media (min-width: 768px) {
.wrapper {
min-height: 100vh;

View File

@ -586,141 +586,120 @@ App.Pages.Booking = (function () {
* customer settings and input for the appointment booking.
*/
function updateConfirmFrame() {
if ($availableHours.find('.selected-hour').text() === '') {
return;
const serviceOptionText = $selectService.find('option:selected').text();
$('.display-selected-service').text(serviceOptionText).removeClass('invisible');
const providerOptionText = $selectProvider.find('option:selected').text();
$('.display-selected-provider').text(providerOptionText).removeClass('invisible');
if (!$availableHours.find('.selected-hour').text()) {
return; // No time is selected, skip the rest of this function...
}
// Appointment Details
let selectedDate = App.Utils.UI.getDateTimePickerValue($selectDate);
if (selectedDate !== null) {
selectedDate = App.Utils.Date.format(selectedDate, vars('date_format'), vars('time_format'));
}
// Render the appointment details
const serviceId = $selectService.val();
let servicePrice = '';
let serviceCurrency = '';
vars('available_services').forEach((service) => {
if (Number(service.id) === Number(serviceId) && Number(service.price) > 0) {
servicePrice = service.price;
serviceCurrency = service.currency;
return false; // Break loop
}
});
const service = vars('available_services').find(
(availableService) => Number(availableService.id) === Number(serviceId),
);
$(document)
.find('.display-selected-service')
.text($selectService.find('option:selected').text())
.removeClass('invisible');
if (!service) {
return; // Service was not found
}
$(document)
.find('.display-selected-provider')
.text($selectProvider.find('option:selected').text())
.removeClass('invisible');
const selectedDateObject = App.Utils.UI.getDateTimePickerValue($selectDate);
const selectedDateMoment = moment(selectedDateObject);
const selectedDate = selectedDateMoment.format('YYYY-MM-DD');
const selectedTime = $availableHours.find('.selected-hour').text();
const selectedDateTime = `${selectedDate} ${selectedTime}`;
$('#appointment-details').empty();
let formattedSelectedDate;
$('<div/>', {
'html': [
$('<h4/>', {
'text': lang('appointment'),
}),
$('<p/>', {
'html': [
$('<span/>', {
'text': lang('service') + ': ' + $selectService.find('option:selected').text(),
}),
$('<br/>'),
$('<span/>', {
'text': lang('provider') + ': ' + $selectProvider.find('option:selected').text(),
}),
$('<br/>'),
$('<span/>', {
'text':
lang('start') +
': ' +
selectedDate +
' ' +
$availableHours.find('.selected-hour').text(),
}),
$('<br/>'),
$('<span/>', {
'text': lang('timezone') + ': ' + $selectTimezone.find('option:selected').text(),
}),
$('<br/>'),
$('<span/>', {
'text': lang('price') + ': ' + servicePrice + ' ' + serviceCurrency,
'prop': {
'hidden': !servicePrice,
},
}),
],
}),
],
}).appendTo('#appointment-details');
if (selectedDateObject) {
formattedSelectedDate = App.Utils.Date.format(
selectedDateTime,
vars('date_format'),
vars('time_format'),
true,
);
}
const timezoneOptionText = $selectTimezone.find('option:selected').text();
$('#appointment-details').html(`
<div>
<div class="mb-2 fw-bold fs-3">
${serviceOptionText}
</div>
<div class="mb-2 fw-bold text-muted">
${providerOptionText}
</div>
<div class="mb-2">
<i class="fas fa-clock me-2"></i>
${service.duration} ${lang('minutes')}
</div>
<div class="mb-2">
<i class="fas fa-calendar-day me-2"></i>
${formattedSelectedDate}
</div>
<div class="mb-2">
<i class="fas fa-globe me-2"></i>
${timezoneOptionText}
</div>
<div class="mb-2" ${!Number(service.price) ? 'hidden' : ''}>
<i class="fas fa-cash-register me-2"></i>
${Number(service.price).toFixed(2)} ${service.currency}
</div>
</div>
`);
// Render the customer information
// Customer Details
const firstName = App.Utils.String.escapeHtml($firstName.val());
const lastName = App.Utils.String.escapeHtml($lastName.val());
const fullName = firstName + ' ' + lastName;
const phoneNumber = App.Utils.String.escapeHtml($phoneNumber.val());
const fullName = `${firstName} ${lastName}`.trim();
const email = App.Utils.String.escapeHtml($email.val());
const phoneNumber = App.Utils.String.escapeHtml($phoneNumber.val());
const address = App.Utils.String.escapeHtml($address.val());
const city = App.Utils.String.escapeHtml($city.val());
const zipCode = App.Utils.String.escapeHtml($zipCode.val());
$('#customer-details').empty();
const addressParts = [];
$('<div/>', {
'html': [
$('<h4/>)', {
'text': lang('customer'),
}),
$('<p/>', {
'html': [
fullName
? $('<span/>', {
'text': lang('customer') + ': ' + fullName,
})
: null,
fullName ? $('<br/>') : null,
phoneNumber
? $('<span/>', {
'text': lang('phone_number') + ': ' + phoneNumber,
})
: null,
phoneNumber ? $('<br/>') : null,
email
? $('<span/>', {
'text': lang('email') + ': ' + email,
})
: null,
email ? $('<br/>') : null,
address
? $('<span/>', {
'text': lang('address') + ': ' + address,
})
: null,
address ? $('<br/>') : null,
city
? $('<span/>', {
'text': lang('city') + ': ' + city,
})
: null,
city ? $('<br/>') : null,
zipCode
? $('<span/>', {
'text': lang('zip_code') + ': ' + zipCode,
})
: null,
zipCode ? $('<br/>') : null,
],
}),
],
}).appendTo('#customer-details');
if (city) {
addressParts.push(city);
}
if (zipCode) {
addressParts.push(zipCode);
}
$('#customer-details').html(`
<div>
<div class="mb-2 fw-bold fs-3">
${lang('contact_info')}
</div>
<div class="mb-2 fw-bold text-muted" ${!fullName ? 'hidden' : ''}>
${fullName}
</div>
<div class="mb-2" ${!email ? 'hidden' : ''}>
${email}
</div>
<div class="mb-2" ${!email ? 'hidden' : ''}>
${phoneNumber}
</div>
<div class="mb-2" ${!address ? 'hidden' : ''}>
${address}
</div>
<div class="mb-2" ${!addressParts.length ? 'hidden' : ''}>
${addressParts.join(', ')}
</div>
</div>
`);
// Update appointment form data for submission to server when the user confirms the appointment.
const data = {};
data.customer = {
@ -753,6 +732,7 @@ App.Pages.Booking = (function () {
data.appointment.id = vars('appointment_data').id;
data.customer.id = vars('customer_data').id;
}
$('input[name="post_data"]').val(JSON.stringify(data));
}