Merge branch 'book-advance-timeout-improvements' of https://github.com/popod/easyappointments into popod-book-advance-timeout-improvements

# Conflicts:
#	application/views/backend/calendar.php
#	application/views/backend/settings.php
This commit is contained in:
Alex Tselegidis 2020-09-23 15:13:58 +03:00
commit 069509c8da
8 changed files with 48 additions and 7 deletions

View file

@ -97,6 +97,7 @@ class Appointments extends CI_Controller {
$available_services = $this->services_model->get_available_services();
$available_providers = $this->providers_model->get_available_providers();
$company_name = $this->settings_model->get_setting('company_name');
$book_advance_timeout = $this->settings_model->get_setting('book_advance_timeout');
$date_format = $this->settings_model->get_setting('date_format');
$time_format = $this->settings_model->get_setting('time_format');
$first_weekday = $this->settings_model->get_setting('first_weekday');
@ -146,6 +147,27 @@ class Appointments extends CI_Controller {
return;
}
// If the requested apppointment begin date is lower than book_advance_timeout. Display
// a message to the customer.
$startDate = strtotime($results[0]['start_datetime']);
$limit = strtotime('+' . $book_advance_timeout . ' minutes', strtotime('now'));
if ($startDate < $limit)
{
$hours = floor($book_advance_timeout / 60);
$minutes = ($book_advance_timeout % 60);
$view = [
'message_title' => $this->lang->line('appointment_locked'),
'message_text' => strtr($this->lang->line('appointment_locked_message'), [
'{$limit}' => sprintf('%02d:%02d', $hours, $minutes)
]),
'message_icon' => base_url('assets/img/error.png')
];
$this->load->view('appointments/message', $view);
return;
}
$appointment = $results[0];
$provider = $this->providers_model->get_row($appointment['id_users_provider']);
$customer = $this->customers_model->get_row($appointment['id_users_customer']);

View file

@ -99,7 +99,6 @@ class Backend extends CI_Controller {
$view['base_url'] = $this->config->item('base_url');
$view['user_display_name'] = $this->user_model->get_user_display_name($this->session->userdata('user_id'));
$view['active_menu'] = PRIV_APPOINTMENTS;
$view['book_advance_timeout'] = $this->settings_model->get_setting('book_advance_timeout');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['first_weekday'] = $this->settings_model->get_setting('first_weekday');
@ -375,6 +374,13 @@ class Backend extends CI_Controller {
$view['system_settings'] = $this->settings_model->get_settings();
$view['user_settings'] = $this->user_model->get_user($user_id);
$view['timezones'] = $this->timezones->to_array();
// book_advance_timeout preview
$book_advance_timeout = $this->settings_model->get_setting('book_advance_timeout');
$hours = floor($book_advance_timeout / 60);
$minutes = $book_advance_timeout % 60;
$view['book_advance_timeout_preview'] = sprintf('%02d:%02d', $hours, $minutes);
$this->set_user_data($view);
$this->load->view('backend/header', $view);

View file

@ -53,6 +53,8 @@ $lang['appointment_added_to_google_calendar'] = 'Your appointment has been added
$lang['view_appointment_in_google_calendar'] = 'Click here to view your appointment on Google Calendar.';
$lang['appointment_added_to_your_plan'] = 'A new appointment has been added to your plan.';
$lang['appointment_link_description'] = 'You can make changes by clicking the appointment link below.';
$lang['appointment_locked'] = 'Modification impossible!';
$lang['appointment_locked_message'] = 'The appointment cannot be changed less than {$limit} hours in advance.';
$lang['appointment_not_found'] = 'Appointment Not Found!';
$lang['appointment_does_not_exist_in_db'] = 'The appointment you requested does not exist in the system database anymore.';
$lang['display_calendar'] = 'Display Calendar';

View file

@ -52,6 +52,8 @@ $lang['appointment_added_to_google_calendar'] = 'Votre rendez-vous a été ajout
$lang['view_appointment_in_google_calendar'] = 'Cliquez ici pour voir votre rendez-vous dans le calendrier Google.';
$lang['appointment_added_to_your_plan'] = 'Un nouveau rendez-vous a été ajouté à votre planning.';
$lang['appointment_link_description'] = 'Vous pouvez faires des modifications en cliquant sur le lien suivant.';
$lang['appointment_locked'] = 'Modification impossible !';
$lang['appointment_locked_message'] = 'Le rendez-vous ne peut pas être modifié moins de {$limit} heures avant.';
$lang['appointment_not_found'] = 'Rendez-vous introuvable !';
$lang['appointment_does_not_exist_in_db'] = 'Le rendez-vous demandé n\'existe plus dans la base de données système.';
$lang['display_calendar'] = 'Afficher le calendrier.';
@ -169,9 +171,9 @@ $lang['current_user'] = 'Utilisateur actuel';
$lang['about_app'] = 'Au sujet d\'Easy!Appointments';
$lang['edit_working_plan_hint'] = 'Indiquer ici les jours et les heures pendant lesquels votre société accepte les rendez-vous. Il est possible de fixer vous-même un rendez-vous en dehors des heures de travail tandis que les clients ne pourront pas prendre d\'eux-mêmes un rendez-vous en dehors des périodes de travail indiquées ici. Ce planning de travail sera celui proposé par défaut pour chaque nouvel enregistrement. Toutefois il vous sera possible de changer séparément chaque planning de travail individuel en l\'éditant. Après cela vous pouvez encore ajouter les périodes de pause.';
$lang['edit_breaks_hint'] = 'Indiquer ici les périodes des pauses quotidiennes. Ces pauses seront disponibles à chaque nouvel exécutant.';
$lang['book_advance_timeout'] = 'Temporisation avancée de l\'agenda';
$lang['book_advance_timeout_hint'] = 'Définir la temporisation (en minutes) avant que les clients ne puissent prendre ou modifier les rendez-vous avec la société.';
$lang['timeout_minutes'] = 'Temporisation (Minutes)';
$lang['book_advance_timeout'] = 'Paramètres de réservation';
$lang['book_advance_timeout_hint'] = 'Les réservations ne peuvent pas être créées, modifiées ou annulées moins de ## heures avant le rendez-vous.';
$lang['timeout_minutes'] = 'Délai de réservation (en minutes)';
$lang['about_app_info'] = 'Easy!Appointments est une application Web hautement personnalisable qui permet à vos clients de prendre rendez-vous avec vous via le web. En outre, elle offre la possibilité de synchroniser vos données avec un calendrier Google afin que vous puissiez les utiliser avec d\'autres services. Easy!Appointments est un projet open source et vous pouvez le télécharger et l\'installer même pour un usage commercial. Easy!Appointments fonctionnera sans problème avec votre site web existant car il peut être installé dans un dossier spécifique du serveur et bien sûr, les deux sites peuvent partager la même base de données.';
$lang['current_version'] = 'Version actuelle';
$lang['support'] = 'Support';

View file

@ -51,6 +51,8 @@ $lang['appointment_added_to_google_calendar'] = 'Ihr Termin ist zu Ihrem Google
$lang['view_appointment_in_google_calendar'] = 'Bitte klicken Sie hier, um Ihren Termin im Google Kalender zu sehen.';
$lang['appointment_added_to_your_plan'] = 'Ein neuer Termin ist zu Ihrer Planung hinzugefügt worden.';
$lang['appointment_link_description'] = 'Sie können Änderungen durch Klicken auf den Termin-Link durchführen.';
$lang['appointment_locked'] = 'Änderungen unmöglich!';
$lang['appointment_locked_message'] = 'Der Termin kann nicht weniger als {$limit} Stunden im Voraus geändert werden.';
$lang['appointment_not_found'] = 'Termin nicht gefunden!';
$lang['appointment_does_not_exist_in_db'] = 'Der von Ihnen angeforderte Termin existiert nicht in der Systemdatenbank.';
$lang['display_calendar'] = 'Kalender anzeigen';

View file

@ -17,7 +17,6 @@
availableProviders: <?= json_encode($available_providers) ?>,
availableServices: <?= json_encode($available_services) ?>,
baseUrl: <?= json_encode($base_url) ?>,
bookAdvanceTimeout: <?= $book_advance_timeout ?>,
dateFormat: <?= json_encode($date_format) ?>,
timeFormat: <?= json_encode($time_format) ?>,
firstWeekday: <?= json_encode($first_weekday) ?>,

View file

@ -392,8 +392,8 @@ window.BackendCalendarAppointmentsModal = window.BackendCalendarAppointmentsModa
var duration = service ? service.duration : 0;
var startDatetime = new Date().addMinutes(GlobalVariables.bookAdvanceTimeout);
var endDatetime = new Date().addMinutes(GlobalVariables.bookAdvanceTimeout).addMinutes(duration);
var startDatetime = new Date();
var endDatetime = new Date().addMinutes(duration);
var dateFormat;
switch (GlobalVariables.dateFormat) {

View file

@ -44,6 +44,14 @@
// Update the logo title on the header.
$('#header-logo span').text($('#company-name').val());
// Update book_advance_timeout preview
var totalMinutes = $('#book-advance-timeout').val();
var hours = Math.floor(totalMinutes / 60);
var minutes = totalMinutes % 60;
$('#book-advance-timeout-helper').text(
EALang.book_advance_timeout_hint.replace('{$limit}', ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2))
);
// Update variables also used in other setting tabs
GlobalVariables.timeFormat = $('#time-format').val();
GlobalVariables.firstWeekday = $('#first-weekday').val();