Merge branch 'oxteam-dev-first_week_day' of https://github.com/oxteam/easyappointments into oxteam-oxteam-dev-first_week_day

# Conflicts:
#	src/application/language/portuguese-br/translations_lang.php
#	src/assets/js/backend_calendar_default_view.js
#	src/assets/js/backend_users_providers.js
#	src/assets/js/general_functions.js
#	src/assets/js/working_plan.js
This commit is contained in:
Alex Tselegidis 2020-03-10 20:32:53 +01:00
commit dd44f8e132
40 changed files with 302 additions and 196 deletions

View file

@ -276,7 +276,7 @@ $config['cache_path'] = __DIR__ . '/../../storage/cache/';
| new release.
|
*/
$config['cache_busting_token'] = '52FX8';
$config['cache_busting_token'] = '93GX4';
/*
|--------------------------------------------------------------------------

View file

@ -76,6 +76,7 @@ class Appointments extends CI_Controller {
$company_name = $this->settings_model->get_setting('company_name');
$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');
$display_cookie_notice = $this->settings_model->get_setting('display_cookie_notice');
$cookie_notice_content = $this->settings_model->get_setting('cookie_notice_content');
$display_terms_and_conditions = $this->settings_model->get_setting('display_terms_and_conditions');
@ -147,6 +148,7 @@ class Appointments extends CI_Controller {
'customer_token' => $customer_token,
'date_format' => $date_format,
'time_format' => $time_format,
'first_weekday' => $first_weekday,
'appointment_data' => $appointment,
'provider_data' => $provider,
'customer_data' => $customer,

View file

@ -70,6 +70,7 @@ class Backend extends CI_Controller {
$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');
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['available_providers'] = $this->providers_model->get_available_providers();
$view['available_services'] = $this->services_model->get_available_services();
@ -133,6 +134,7 @@ class Backend extends CI_Controller {
$view['company_name'] = $this->settings_model->get_setting('company_name');
$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');
$view['customers'] = $this->customers_model->get_batch();
$view['available_providers'] = $this->providers_model->get_available_providers();
$view['available_services'] = $this->services_model->get_available_services();
@ -182,6 +184,7 @@ class Backend extends CI_Controller {
$view['company_name'] = $this->settings_model->get_setting('company_name');
$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');
$view['services'] = $this->services_model->get_batch();
$view['categories'] = $this->services_model->get_all_categories();
$this->set_user_data($view);
@ -219,6 +222,7 @@ class Backend extends CI_Controller {
$view['company_name'] = $this->settings_model->get_setting('company_name');
$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');
$view['admins'] = $this->admins_model->get_batch();
$view['providers'] = $this->providers_model->get_batch();
$view['secretaries'] = $this->secretaries_model->get_batch();
@ -259,6 +263,7 @@ class Backend extends CI_Controller {
$view['active_menu'] = PRIV_SYSTEM_SETTINGS;
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['first_weekday'] = $this->settings_model->get_setting('first_weekday');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['role_slug'] = $this->session->userdata('role_slug');
$view['system_settings'] = $this->settings_model->get_settings();

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'صيغة التاريخ';
$lang['date_format_hint'] = 'تغيير صيغة وعرض التاريخ (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'ليتم تضمينه في صفحة الحجز Google Analytics ID أضف معرّف';
$lang['availabilities_type'] = 'نوع التوفر أو الإتاحة';
$lang['flexible'] = 'مرن';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Формат на Дата';
$lang['date_format_hint'] = 'Промяна на дормат за показ на дата (D - дата, M - месец, Y - година).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Добавете Google Analytics ID за да бъде включена статистика в страницата за запазване на час.';
$lang['availabilities_type'] = 'Типове на работен период.';
$lang['flexible'] = 'Гъвкав';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Datum formaat';
$lang['date_format_hint'] = 'Verander het datum formaat (D - dag, M - maand, Y - jaar).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Voeg je Google Analytics ID toe om deze te gebruiken op je boekings pagina.';
$lang['availabilities_type'] = 'Beschikbaarheidstype';
$lang['flexible'] = 'Flexibel';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Päiväyksen muoto';
$lang['date_format_hint'] = 'Vaihda päiväyksen esitysmuoto (D - Päivä, M - Kuukausi, Y - Vuosi).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Lisää Google Analytics ID varaussivulle.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Format des Dates';
$lang['date_format_hint'] = 'Change le format d\'affichage des dates (D - Jour, M - Mois, Y - Année).';
$lang['time_format'] = 'Format de l\'Heure';
$lang['time_format_hint'] = 'Change le format d\'affichage de l\'Heure (H - Heures, M - Minutes).';
$lang['first_weekday'] = 'Premier jour de la semaine';
$lang['first_weekday_hint'] = 'Définit le premier jour de la semaine calendaire.';
$lang['google_analytics_code_hint'] = 'Renseigner l\'ID Google Analytics à utiliser dans la page des réservations.';
$lang['availabilities_type'] = 'Type de disponibilités';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Datumsformat';
$lang['date_format_hint'] = 'Ändern Sie das Datumsanzeigeformat (D - Datum, M - Monat, Y - Jahr).';
$lang['time_format'] = 'Zeitformat';
$lang['time_format_hint'] = 'Ändern Sie das Zeitanzeigeformat (H - Stunden, M - Minuten).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Fügen Sie Ihre Google Analytics-ID hinzu, das auf der Buchungsseite enthalten wird.';
$lang['availabilities_type'] = 'Verfügungstyp';
$lang['flexible'] = 'Flexibel';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Μορφή Ημερομηνίας';
$lang['date_format_hint'] = 'Αλλάξτε την μορφή ημερομηνίας (D - Ημέρα, M - Μήνας, Y - Χρόνος).';
$lang['time_format'] = 'Μορφή Ώρας';
$lang['time_format_hint'] = 'Αλλάξτε την μορφή ώρας (H - Ώρα, M - Λεπτά).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Προσθέστε τον Google Analytics ID σας το οποίο θα συμπεριληφθεί στην σελίδα κράτησης.';
$lang['availabilities_type'] = 'Τύπος Διαθεσιμοτήτων';
$lang['flexible'] = 'Ευέλικτος';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Formato data';
$lang['date_format_hint'] = 'Cambia il formato di visualizzazione della data (D - Giorno, M - Mese, Y - Anno).';
$lang['time_format'] = 'Formato orario';
$lang['time_format_hint'] = 'Cambia il formato di visualizzazione dell\'orario. (H - Ore, M - Minuti)';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Aggiunti il tuo ID di Google Analytics per includerlo nella pagina di prenotazione.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -310,3 +310,5 @@ $lang['new_extra_period_title'] = '';
$lang['extra_period_saved'] = '';
$lang['add_extra_periods_during_each_day'] = '';
$lang['add_extra_period'] = '';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Formát dátumu';
$lang['date_format_hint'] = 'Zmeňte formát zobrazenia dátumu (D - Dátum, M - Mesiac, Y - Rok).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Pridajte svoje ID služby Google Analytics, aby ste bola zahrnutá do stránky rezervácie.';
$lang['availabilities_type'] = 'Typ dostupnosti';
$lang['flexible'] = 'Flexibilný';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Formato de Fecha';
$lang['date_format_hint'] = 'Cambia el formato de fecha para mostrar (D - Día, M - Mes, Y - Año).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Agrega tu ID de Google Analytics para ser incluido en la página de reservas.';
$lang['availabilities_type'] = 'Tipos disponibles';
$lang['flexible'] = 'Flexible';

View file

@ -275,6 +275,8 @@ $lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['first_weekday'] = 'First day of week';
$lang['first_weekday_hint'] = 'Set the first day of the calendar week.';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -0,0 +1,35 @@
<?php defined('BASEPATH') OR exit('No direct script access allowed');
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.2
* ---------------------------------------------------------------------------- */
class Migration_Add_weekday_start_setting extends CI_Migration {
public function up()
{
$this->load->model('settings_model');
try
{
$this->settings_model->get_setting('first_weekday');
}
catch (Exception $exception)
{
$this->settings_model->set_setting('first_weekday', 'sunday');
}
}
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('first_weekday');
}
}

View file

@ -370,6 +370,7 @@
customerToken : <?= json_encode($customer_token) ?>,
dateFormat : <?= json_encode($date_format) ?>,
timeFormat : <?= json_encode($time_format) ?>,
firstWeekday : <?= json_encode($first_weekday) ?>,
displayCookieNotice : <?= json_encode($display_cookie_notice === '1') ?>,
appointmentData : <?= json_encode($appointment_data) ?>,
providerData : <?= json_encode($provider_data) ?>,

View file

@ -21,6 +21,7 @@
'bookAdvanceTimeout' : <?= $book_advance_timeout ?>,
'dateFormat' : <?= json_encode($date_format) ?>,
'timeFormat' : <?= json_encode($time_format) ?>,
'firstWeekday' : <?= json_encode($first_weekday) ?>,
'editAppointment' : <?= json_encode($edit_appointment) ?>,
'customers' : <?= json_encode($customers) ?>,
'secretaryProviders' : <?= json_encode($secretary_providers) ?>,

View file

@ -9,6 +9,7 @@
'csrfToken' : <?= json_encode($this->security->get_csrf_hash()) ?>,
'baseUrl' : <?= json_encode($base_url) ?>,
'dateFormat' : <?= json_encode($date_format) ?>,
'firstWeekday' : <?= json_encode($first_weekday); ?>,
'timeFormat' : <?= json_encode($time_format) ?>,
'userSlug' : <?= json_encode($role_slug) ?>,
'settings' : {
@ -135,6 +136,23 @@
<?= lang('time_format_hint') ?>
</span>
</div>
<div class="form-group">
<label for="first-weekday">
<?= lang('first_weekday') ?>
</label>
<select class="form-control" id="first-weekday" data-field="first_weekday">
<option value="sunday"><?= lang('sunday') ?></option>
<option value="monday"><?= lang('monday') ?></option>
<option value="tuesday"><?= lang('tuesday') ?></option>
<option value="wednesday"><?= lang('wednesday') ?></option>
<option value="thursday"><?= lang('thursday') ?></option>
<option value="friday"><?= lang('friday') ?></option>
<option value="saturday"><?= lang('saturday') ?></option>
</select>
<span class="help-block">
<?= lang('first_weekday_hint') ?>
</span>
</div>
<div class="form-group">
<label><?= lang('customer_notifications') ?></label>
<br>
@ -197,92 +215,7 @@
<th><?= lang('end') ?></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="sunday">
<?= lang('sunday') ?>
</label>
</div>
</td>
<td><input id="sunday-start" class="work-start form-control input-sm"></td>
<td><input id="sunday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="monday">
<?= lang('monday') ?>
</label>
</div>
</td>
<td><input id="monday-start" class="work-start form-control input-sm"></td>
<td><input id="monday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="tuesday">
<?= lang('tuesday') ?>
</label>
</div>
</td>
<td><input id="tuesday-start" class="work-start form-control input-sm"></td>
<td><input id="tuesday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="wednesday">
<?= lang('wednesday') ?>
</label>
</div>
</td>
<td><input id="wednesday-start" class="work-start form-control input-sm"></td>
<td><input id="wednesday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="thursday">
<?= lang('thursday') ?>
</label>
</div>
</td>
<td><input id="thursday-start" class="work-start form-control input-sm"></td>
<td><input id="thursday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="friday">
<?= lang('friday') ?>
</label>
</div>
</td>
<td><input id="friday-start" class="work-start form-control input-sm"></td>
<td><input id="friday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="saturday">
<?= lang('saturday') ?>
</label>
</div>
</td>
<td><input id="saturday-start" class="work-start form-control input-sm"></td>
<td><input id="saturday-end" class="work-end form-control input-sm"></td>
</tr>
</tbody>
<tbody><!-- Dynamic Content --></tbody>
</table>
<br>

View file

@ -10,6 +10,7 @@
csrfToken : <?= json_encode($this->security->get_csrf_hash()) ?>,
baseUrl : <?= json_encode($base_url) ?>,
dateFormat : <?= json_encode($date_format) ?>,
firstWeekday : <?= json_encode($first_weekday); ?>,
timeFormat : <?= json_encode($time_format) ?>,
admins : <?= json_encode($admins) ?>,
providers : <?= json_encode($providers) ?>,
@ -217,92 +218,7 @@
<th><?= lang('end') ?></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="sunday">
<?= lang('sunday') ?>
</label>
</div>
</td>
<td><input id="sunday-start" class="work-start form-control input-sm"></td>
<td><input id="sunday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="monday">
<?= lang('monday') ?>
</label>
</div>
</td>
<td><input id="monday-start" class="work-start form-control input-sm"></td>
<td><input id="monday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="tuesday">
<?= lang('tuesday') ?>
</label>
</div>
</td>
<td><input id="tuesday-start" class="work-start form-control input-sm"></td>
<td><input id="tuesday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="wednesday">
<?= lang('wednesday') ?>
</label>
</div>
</td>
<td><input id="wednesday-start" class="work-start form-control input-sm"></td>
<td><input id="wednesday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="thursday">
<?= lang('thursday') ?>
</label>
</div>
</td>
<td><input id="thursday-start" class="work-start form-control input-sm"></td>
<td><input id="thursday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="friday">
<?= lang('friday') ?>
</label>
</div>
</td>
<td><input id="friday-start" class="work-start form-control input-sm"></td>
<td><input id="friday-end" class="work-end form-control input-sm"></td>
</tr>
<tr>
<td>
<div class="checkbox">
<label>
<input type="checkbox" id="saturday">
<?= lang('saturday') ?>
</label>
</div>
</td>
<td><input id="saturday-start" class="work-start form-control input-sm"></td>
<td><input id="saturday-end" class="work-end form-control input-sm"></td>
</tr>
</tbody>
<tbody><!-- Dynamic Content --></tbody>
</table>
<br>

View file

@ -398,6 +398,9 @@ window.BackendCalendarAppointmentsModal = window.BackendCalendarAppointmentsModa
throw new Error('Invalid GlobalVariables.dateFormat value.');
}
var fDay = GlobalVariables.firstWeekday;
var fDaynum = GeneralFunctions.getWeekDayId(fDay);
$dialog.find('#start-datetime').datetimepicker({
dateFormat: dateFormat,
timeFormat: GlobalVariables.timeFormat === 'regular' ? 'h:mm TT' : 'HH:mm',
@ -424,7 +427,7 @@ window.BackendCalendarAppointmentsModal = window.BackendCalendarAppointmentsModa
timeText: EALang.time,
hourText: EALang.hour,
minuteText: EALang.minutes,
firstDay: 0
firstDay: fDaynum
});
$dialog.find('#start-datetime').datetimepicker('setDate', startDatetime);
@ -454,7 +457,7 @@ window.BackendCalendarAppointmentsModal = window.BackendCalendarAppointmentsModa
timeText: EALang.time,
hourText: EALang.hour,
minuteText: EALang.minutes,
firstDay: 0
firstDay: fDaynum
});
$dialog.find('#end-datetime').datetimepicker('setDate', endDatetime);
};

View file

@ -875,12 +875,13 @@ window.BackendCalendarDefaultView = window.BackendCalendarDefaultView || {};
var extraWorkingPlan = jQuery.parseJSON(provider.settings.extra_working_plan);
var unavailablePeriod;
// Sort the working plan starting with Sunday as the first weekday to correctly align breaks in the calendar display
workingPlan = GeneralFunctions.sortWeekDict(workingPlanBulk,0); // 0 is the ID for Sunday
// Sort the working plan starting with the first day as set in General settings to correctly align breaks in the calendar display
var fDaynum = GeneralFunctions.getWeekDayId(GlobalVariables.firstWeekday);
workingPlan = GeneralFunctions.sortWeekDict(workingPlanBulk,fDaynum);
switch (calendarView) {
case 'agendaDay':
var selectedDayName = weekDays[$calendar.fullCalendar('getView').start.format('d')];
var selectedDayName = GeneralFunctions.getWeekDayName(parseInt($calendar.fullCalendar('getView').start.format('d')));
// Add custom unavailable periods.
$.each(response.unavailables, function (index, unavailable) {
@ -1205,12 +1206,15 @@ window.BackendCalendarDefaultView = window.BackendCalendarDefaultView || {};
var defaultView = window.innerWidth < 468 ? 'agendaDay' : 'agendaWeek';
var fDay = GlobalVariables.firstWeekday;
var fDaynum = GeneralFunctions.getWeekDayId(fDay);
// Initialize page calendar
$('#calendar').fullCalendar({
defaultView: defaultView,
height: _getCalendarHeight(),
editable: true,
firstDay: 0,
firstDay: fDaynum,
snapDuration: '00:30:00',
timeFormat: timeFormat,
slotLabelFormat: slotTimeFormat,

View file

@ -180,6 +180,8 @@ window.BackendCalendarUnavailabilitiesModal = window.BackendCalendarUnavailabili
break;
}
var fDay = GlobalVariables.firstWeekday;
var fDaynum = GeneralFunctions.getWeekDayId(fDay);
$dialog.find('#unavailable-start').datetimepicker({
dateFormat: dateFormat,
@ -207,7 +209,7 @@ window.BackendCalendarUnavailabilitiesModal = window.BackendCalendarUnavailabili
timeText: EALang.time,
hourText: EALang.hour,
minuteText: EALang.minutes,
firstDay: 0
firstDay: fDaynum
});
$dialog.find('#unavailable-start').val(start);
@ -237,7 +239,7 @@ window.BackendCalendarUnavailabilitiesModal = window.BackendCalendarUnavailabili
timeText: EALang.time,
hourText: EALang.hour,
minuteText: EALang.minutes,
firstDay: 0
firstDay: fDaynum
});
$dialog.find('#unavailable-end').val(end);

View file

@ -46,9 +46,12 @@
// Update the logo title on the header.
$('#header-logo span').text($('#company-name').val());
// Update variables also used in other setting tabs
GlobalVariables.timeFormat = $('#time-format').val();
GlobalVariables.firstWeekday = $('#first-weekday').val();
// We need to refresh the working plan.
var workingPlan = BackendSettings.wp.get();
$('.breaks tbody').empty();
BackendSettings.wp.setup(workingPlan);
BackendSettings.wp.timepickers(false);
}, 'json').fail(GeneralFunctions.ajaxFailureHandler);

View file

@ -94,7 +94,6 @@
$('#provider-notifications').prop('disabled', false);
$('#providers').find('.add-break, .edit-break, .delete-break, .add-extra-periods, .edit-extra, .delete-extra, #reset-working-plan').prop('disabled', false);
$('#provider-services input:checkbox').prop('disabled', false);
$('#providers input:checkbox').prop('disabled', false);
// Apply default working plan
BackendUsers.wp.setup(GlobalVariables.workingPlan);
@ -368,9 +367,9 @@
$('#edit-provider, #delete-provider').prop('disabled', true);
$('#providers .record-details').find('input, textarea').val('');
$('#providers input:checkbox').prop('checked', false);
$('#provider-services input:checkbox').prop('checked', false);
$('#provider-services a').remove();
$('#providers .working-plan tbody').empty();
$('#providers .breaks tbody').empty();
$('#providers .extra-periods tbody').empty();
};
@ -426,7 +425,6 @@
});
// Display working plan
$('#providers .breaks tbody').empty();
var workingPlan = $.parseJSON(provider.settings.working_plan);
BackendUsers.wp.setup(workingPlan);
$('.breaks').find('.edit-break, .delete-break').prop('disabled', true);
@ -434,6 +432,7 @@
var extraWorkingPlan = $.parseJSON(provider.settings.extra_working_plan);
BackendUsers.wp.setupExtraPeriods(extraWorkingPlan);
$('.extra-periods').find('.edit-extra, .delete-extra').prop('disabled', true);
$('#providers .working-plan input:checkbox').prop('disabled', true);
};
/**

View file

@ -104,9 +104,12 @@ window.FrontendBook = window.FrontendBook || {};
}
});
var fDay = GlobalVariables.firstWeekday;
var fDaynum = GeneralFunctions.getWeekDayId(fDay);
$('#select-date').datepicker({
dateFormat: 'dd-mm-yy',
firstDay: 0,
firstDay: fDaynum,
minDate: 0,
defaultDate: Date.today(),

View file

@ -498,6 +498,127 @@ window.GeneralFunctions = window.GeneralFunctions || {};
return sortedWeekDict;
};
/**
* Get the Id of a Weekday using the US week format and day names (Sunday=0) as used in the JS code of the appli, case insensitive, short and long names supported.
*
* @param {String} weekDayName The weekday name amongs Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday.
* @return {Integer} Returns the ID of the weekday.
*/
exports.getWeekDayId = function (weekDayName) {
var result;
switch (weekDayName.toLowerCase()) {
case 'sunday':
case 'sun':
result = 0;
break;
case 'monday':
case 'mon':
result = 1;
break;
case 'tuesday':
case 'tue':
result = 2;
break;
case 'wednesday':
case 'wed':
result = 3;
break;
case 'thursday':
case 'thu':
result = 4;
break;
case 'friday':
case 'fri':
result = 5;
break;
case 'saturday':
case 'sat':
result = 6;
break;
default:
throw new Error('Invalid weekday name provided!', weekDayName);
}
return result;
};
/**
* Get the name in lowercase of a Weekday using its Id.
*
* @param {Integer} weekDayId The Id (From 0 for sunday to 6 for saturday).
* @return {String} Returns the name of the weekday.
*/
exports.getWeekDayName = function (weekDayId) {
var result;
switch (weekDayId) {
case 0:
result = 'sunday';
break;
case 1:
result = 'monday';
break;
case 2:
result = 'tuesday';
break;
case 3:
result = 'wednesday';
break;
case 4:
result = 'thursday';
break;
case 5:
result = 'friday';
break;
case 6:
result = 'saturday';
break;
default:
throw new Error('Invalid weekday Id provided!', weekDayId);
}
return result;
};
/**
* Sort a dictionary where keys are weekdays
*
* @param {Object} weekDict A dictionnary with weekdays as keys.
* @param {Integer} startDayId Id of the first day to start sorting (From 0 for sunday to 6 for saturday).
* @return {Object} Returns a sorted dictionary
*/
exports.sortWeekDict = function (weekDict, startDayId) {
var sortedWeekDict={};
for (var i = startDayId; i < startDayId+7; i++)
{
var weekDayname = GeneralFunctions.getWeekDayName(i%7);
sortedWeekDict[weekDayname] = weekDict[weekDayname];
}
return sortedWeekDict;
};
/**
* Render a map icon that links to Google maps.
*

View file

@ -45,22 +45,48 @@
* @param {Object} workingPlan Contains the working hours and breaks for each day of the week.
*/
WorkingPlan.prototype.setup = function (workingPlan) {
// Always displaying breaks with Sunday as the first day to be consistent with what is done in the the working plan view.
var workingPlanSorted = GeneralFunctions.sortWeekDict(workingPlan,0); // 0 is the ID for Sunday
var fDaynum = GeneralFunctions.getWeekDayId(GlobalVariables.firstWeekday);
var workingPlanSorted = GeneralFunctions.sortWeekDict(workingPlan,fDaynum);
$('.working-plan tbody').empty();
$('.breaks tbody').empty();
// Build working plan day list starting with the first weekday as set in the General settings
$.each(workingPlanSorted, function (index, workingDay) {
var day = this.convertValueToDay(index);
var dayTranslatedname = GeneralFunctions.ucaseFirstLetter(day)
var tr =
'<tr>' +
'<td>' +
'<div class="checkbox">' +
'<label> <input type="checkbox" id="' + index + '">' + dayTranslatedname + '</label>' +
'</div>' +
'</td>' +
'<td><input id="'+index+'-start" class="work-start form-control input-sm"></td>' +
'<td><input id="'+index+'-end" class="work-end form-control input-sm"></td>' +
'</tr>';
$('.working-plan tbody').append(tr);
if (workingDay != null) {
$('#' + index).prop('checked', true);
$('#' + index + '-start').val(Date.parse(workingDay.start).toString(GlobalVariables.timeFormat === 'regular' ? 'h:mm tt' : 'HH:mm').toUpperCase());
$('#' + index + '-end').val(Date.parse(workingDay.end).toString(GlobalVariables.timeFormat === 'regular' ? 'h:mm tt' : 'HH:mm').toUpperCase());
// Sort day's breaks according to the starting hour
workingDay.breaks.sort(function (break1, break2) {
// We can do a direct string comparison since we have time based on 24 hours clock.
return (break1.start).localeCompare(break2.start);
});
// Add the day's breaks on the breaks table.
$.each(workingDay.breaks, function (i, brk) {
var day = this.convertValueToDay(index);
var tr =
tr =
'<tr>' +
'<td class="break-day editable">' + GeneralFunctions.ucaseFirstLetter(day) + '</td>' +
'<td class="break-day editable">' + dayTranslatedname + '</td>' +
'<td class="break-start editable">' + Date.parse(brk.start).toString(GlobalVariables.timeFormat === 'regular' ? 'h:mm tt' : 'HH:mm').toUpperCase() + '</td>' +
'<td class="break-end editable">' + Date.parse(brk.end).toString(GlobalVariables.timeFormat === 'regular' ? 'h:mm tt' : 'HH:mm').toUpperCase() + '</td>' +
'<td>' +
@ -219,7 +245,7 @@
*
* Enable or disable the time selection for each day.
*/
$('.working-plan input:checkbox').click(function () {
$('.working-plan tbody').on( "click", "input:checkbox", function (event) {
var id = $(this).attr('id');
if ($(this).prop('checked') == true) {
@ -356,6 +382,11 @@
$modifiedRow.find('.save-break, .cancel-break').addClass('hidden');
$(element).closest('table').find('.edit-break, .delete-break').removeClass('hidden');
$('.add-break').prop('disabled', false);
// Refresh working plan to have the new break sorted in the break list.
var workingPlan = this.get();
this.setup(workingPlan);
}.bind(this));
/**
@ -557,8 +588,8 @@
// Sort breaks increasingly by hour within day
workingPlan[id].breaks.sort(function (break1, break2) {
// We can do a direct string comparison since we have time based on 24 hours clock
return break1.start > break2.start;
// We can do a direct string comparison since we have time based on 24 hours clock.
return (break1.start).localeCompare(break2.start);
});
} else {
workingPlan[id] = null;

View file

@ -22,6 +22,7 @@ VALUES
('display_terms_and_conditions', '0'),
('terms_and_conditions_content', 'Terms and conditions content.'),
('display_privacy_policy', '0'),
('privacy_policy_content', 'Privacy policy content.');
('privacy_policy_content', 'Privacy policy content.'),
('first_weekday', 'sunday');
INSERT INTO `ea_migrations` VALUES ('13');