diff --git a/src/application/config/config.php b/src/application/config/config.php index 8656c553..2dd7c980 100644 --- a/src/application/config/config.php +++ b/src/application/config/config.php @@ -276,7 +276,7 @@ $config['cache_path'] = __DIR__ . '/../../storage/cache/'; | new release. | */ -$config['cache_busting_token'] = '52FX8'; +$config['cache_busting_token'] = '93GX4'; /* |-------------------------------------------------------------------------- diff --git a/src/application/controllers/Appointments.php b/src/application/controllers/Appointments.php index 1b5fca56..225bfb9f 100755 --- a/src/application/controllers/Appointments.php +++ b/src/application/controllers/Appointments.php @@ -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, diff --git a/src/application/controllers/Backend.php b/src/application/controllers/Backend.php index 4f226fdf..b649a131 100755 --- a/src/application/controllers/Backend.php +++ b/src/application/controllers/Backend.php @@ -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(); diff --git a/src/application/language/arabic/translations_lang.php b/src/application/language/arabic/translations_lang.php index 066f9acf..ad8846e6 100755 --- a/src/application/language/arabic/translations_lang.php +++ b/src/application/language/arabic/translations_lang.php @@ -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'] = 'مرن'; diff --git a/src/application/language/bulgarian/translations_lang.php b/src/application/language/bulgarian/translations_lang.php index 1300275f..844478bf 100755 --- a/src/application/language/bulgarian/translations_lang.php +++ b/src/application/language/bulgarian/translations_lang.php @@ -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'] = 'Гъвкав'; diff --git a/src/application/language/chinese/translations_lang.php b/src/application/language/chinese/translations_lang.php index 9b72d7ba..14462adc 100755 --- a/src/application/language/chinese/translations_lang.php +++ b/src/application/language/chinese/translations_lang.php @@ -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'; diff --git a/src/application/language/danish/translations_lang.php b/src/application/language/danish/translations_lang.php index c589c46d..a7f82b58 100755 --- a/src/application/language/danish/translations_lang.php +++ b/src/application/language/danish/translations_lang.php @@ -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'; diff --git a/src/application/language/dutch/translations_lang.php b/src/application/language/dutch/translations_lang.php index 9478872e..46fb93be 100755 --- a/src/application/language/dutch/translations_lang.php +++ b/src/application/language/dutch/translations_lang.php @@ -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'; diff --git a/src/application/language/english/translations_lang.php b/src/application/language/english/translations_lang.php index c71b1933..3348ff55 100755 --- a/src/application/language/english/translations_lang.php +++ b/src/application/language/english/translations_lang.php @@ -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'; diff --git a/src/application/language/finnish/translations_lang.php b/src/application/language/finnish/translations_lang.php index 61d891eb..69dbb8a5 100755 --- a/src/application/language/finnish/translations_lang.php +++ b/src/application/language/finnish/translations_lang.php @@ -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'; diff --git a/src/application/language/french/translations_lang.php b/src/application/language/french/translations_lang.php index ca61da96..2decd64b 100755 --- a/src/application/language/french/translations_lang.php +++ b/src/application/language/french/translations_lang.php @@ -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'; diff --git a/src/application/language/german/translations_lang.php b/src/application/language/german/translations_lang.php index c4e3b38a..f049b231 100755 --- a/src/application/language/german/translations_lang.php +++ b/src/application/language/german/translations_lang.php @@ -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'; diff --git a/src/application/language/greek/translations_lang.php b/src/application/language/greek/translations_lang.php index 5f98cfcd..996867ba 100755 --- a/src/application/language/greek/translations_lang.php +++ b/src/application/language/greek/translations_lang.php @@ -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'] = 'Ευέλικτος'; diff --git a/src/application/language/hindi/translations_lang.php b/src/application/language/hindi/translations_lang.php index 5471bf2b..33246436 100755 --- a/src/application/language/hindi/translations_lang.php +++ b/src/application/language/hindi/translations_lang.php @@ -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'; diff --git a/src/application/language/hungarian/translations_lang.php b/src/application/language/hungarian/translations_lang.php index 177cf794..680ee8b0 100755 --- a/src/application/language/hungarian/translations_lang.php +++ b/src/application/language/hungarian/translations_lang.php @@ -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'; diff --git a/src/application/language/italian/translations_lang.php b/src/application/language/italian/translations_lang.php index a3e6cd21..551586f3 100755 --- a/src/application/language/italian/translations_lang.php +++ b/src/application/language/italian/translations_lang.php @@ -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'; diff --git a/src/application/language/japanese/translations_lang.php b/src/application/language/japanese/translations_lang.php index d3cfae0a..70efa0b2 100755 --- a/src/application/language/japanese/translations_lang.php +++ b/src/application/language/japanese/translations_lang.php @@ -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'; diff --git a/src/application/language/luxembourgish/translations_lang.php b/src/application/language/luxembourgish/translations_lang.php index ae781c5f..95cffec3 100755 --- a/src/application/language/luxembourgish/translations_lang.php +++ b/src/application/language/luxembourgish/translations_lang.php @@ -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'; diff --git a/src/application/language/polish/translations_lang.php b/src/application/language/polish/translations_lang.php index f346e25c..f8732aa5 100755 --- a/src/application/language/polish/translations_lang.php +++ b/src/application/language/polish/translations_lang.php @@ -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'; diff --git a/src/application/language/portuguese-br/translations_lang.php b/src/application/language/portuguese-br/translations_lang.php index d1b7bca4..4ee588e6 100755 --- a/src/application/language/portuguese-br/translations_lang.php +++ b/src/application/language/portuguese-br/translations_lang.php @@ -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.'; diff --git a/src/application/language/portuguese/translations_lang.php b/src/application/language/portuguese/translations_lang.php index 32cdf6ee..97b2ca1d 100755 --- a/src/application/language/portuguese/translations_lang.php +++ b/src/application/language/portuguese/translations_lang.php @@ -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'; diff --git a/src/application/language/romanian/translations_lang.php b/src/application/language/romanian/translations_lang.php index 37fdaebd..1f007020 100755 --- a/src/application/language/romanian/translations_lang.php +++ b/src/application/language/romanian/translations_lang.php @@ -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'; diff --git a/src/application/language/russian/translations_lang.php b/src/application/language/russian/translations_lang.php index 5f1d427b..e8aa5d7c 100755 --- a/src/application/language/russian/translations_lang.php +++ b/src/application/language/russian/translations_lang.php @@ -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'; diff --git a/src/application/language/slovak/translations_lang.php b/src/application/language/slovak/translations_lang.php index b7c0bd62..fc4e7d9b 100755 --- a/src/application/language/slovak/translations_lang.php +++ b/src/application/language/slovak/translations_lang.php @@ -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ý'; diff --git a/src/application/language/spanish/translations_lang.php b/src/application/language/spanish/translations_lang.php index d34ac84e..d2be0e12 100755 --- a/src/application/language/spanish/translations_lang.php +++ b/src/application/language/spanish/translations_lang.php @@ -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'; diff --git a/src/application/language/turkish/translations_lang.php b/src/application/language/turkish/translations_lang.php index 59b7e1f5..1c52ac5b 100755 --- a/src/application/language/turkish/translations_lang.php +++ b/src/application/language/turkish/translations_lang.php @@ -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'; diff --git a/src/application/migrations/013_add_weekday_start_setting.php b/src/application/migrations/013_add_weekday_start_setting.php new file mode 100644 index 00000000..9314b2d1 --- /dev/null +++ b/src/application/migrations/013_add_weekday_start_setting.php @@ -0,0 +1,35 @@ + + * @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'); + } +} diff --git a/src/application/views/appointments/book.php b/src/application/views/appointments/book.php index 20b99982..04daa75f 100755 --- a/src/application/views/appointments/book.php +++ b/src/application/views/appointments/book.php @@ -370,6 +370,7 @@ customerToken : , dateFormat : , timeFormat : , + firstWeekday : , displayCookieNotice : , appointmentData : , providerData : , diff --git a/src/application/views/backend/calendar.php b/src/application/views/backend/calendar.php index 09f7a9bf..472835c2 100755 --- a/src/application/views/backend/calendar.php +++ b/src/application/views/backend/calendar.php @@ -21,6 +21,7 @@ 'bookAdvanceTimeout' : , 'dateFormat' : , 'timeFormat' : , + 'firstWeekday' : , 'editAppointment' : , 'customers' : , 'secretaryProviders' : , diff --git a/src/application/views/backend/settings.php b/src/application/views/backend/settings.php index 65d9232b..1c2a1a59 100755 --- a/src/application/views/backend/settings.php +++ b/src/application/views/backend/settings.php @@ -9,6 +9,7 @@ 'csrfToken' : security->get_csrf_hash()) ?>, 'baseUrl' : , 'dateFormat' : , + 'firstWeekday' : , 'timeFormat' : , 'userSlug' : , 'settings' : { @@ -135,6 +136,23 @@ +
+ + + + + +

@@ -197,92 +215,7 @@ - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - +
diff --git a/src/application/views/backend/users.php b/src/application/views/backend/users.php index af68c660..c6b374aa 100755 --- a/src/application/views/backend/users.php +++ b/src/application/views/backend/users.php @@ -10,6 +10,7 @@ csrfToken : security->get_csrf_hash()) ?>, baseUrl : , dateFormat : , + firstWeekday : , timeFormat : , admins : , providers : , @@ -217,92 +218,7 @@ - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - - -
- -
- - - - - +
diff --git a/src/assets/js/backend_calendar_appointments_modal.js b/src/assets/js/backend_calendar_appointments_modal.js index ed630746..daa0d199 100755 --- a/src/assets/js/backend_calendar_appointments_modal.js +++ b/src/assets/js/backend_calendar_appointments_modal.js @@ -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); }; diff --git a/src/assets/js/backend_calendar_default_view.js b/src/assets/js/backend_calendar_default_view.js index ca2fb8e9..f8021ce2 100755 --- a/src/assets/js/backend_calendar_default_view.js +++ b/src/assets/js/backend_calendar_default_view.js @@ -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, diff --git a/src/assets/js/backend_calendar_unavailabilities_modal.js b/src/assets/js/backend_calendar_unavailabilities_modal.js index ca0aef67..5f7baa21 100755 --- a/src/assets/js/backend_calendar_unavailabilities_modal.js +++ b/src/assets/js/backend_calendar_unavailabilities_modal.js @@ -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); diff --git a/src/assets/js/backend_settings_system.js b/src/assets/js/backend_settings_system.js index e2c4fe4b..6a96e881 100644 --- a/src/assets/js/backend_settings_system.js +++ b/src/assets/js/backend_settings_system.js @@ -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); diff --git a/src/assets/js/backend_users_providers.js b/src/assets/js/backend_users_providers.js index d5b910b9..9e525c9c 100755 --- a/src/assets/js/backend_users_providers.js +++ b/src/assets/js/backend_users_providers.js @@ -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); }; /** diff --git a/src/assets/js/frontend_book.js b/src/assets/js/frontend_book.js index 129b0f31..4d4c6f4a 100644 --- a/src/assets/js/frontend_book.js +++ b/src/assets/js/frontend_book.js @@ -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(), diff --git a/src/assets/js/general_functions.js b/src/assets/js/general_functions.js index 6ba97d0d..7bc1453f 100755 --- a/src/assets/js/general_functions.js +++ b/src/assets/js/general_functions.js @@ -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. * diff --git a/src/assets/js/working_plan.js b/src/assets/js/working_plan.js index 2560b86a..e19cfda2 100755 --- a/src/assets/js/working_plan.js +++ b/src/assets/js/working_plan.js @@ -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 = + '' + + '' + + '
' + + '' + + '
' + + '' + + '' + + '' + + ''; + + $('.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 = '' + - '' + GeneralFunctions.ucaseFirstLetter(day) + '' + + '' + dayTranslatedname + '' + '' + Date.parse(brk.start).toString(GlobalVariables.timeFormat === 'regular' ? 'h:mm tt' : 'HH:mm').toUpperCase() + '' + '' + Date.parse(brk.end).toString(GlobalVariables.timeFormat === 'regular' ? 'h:mm tt' : 'HH:mm').toUpperCase() + '' + '' + @@ -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; diff --git a/src/assets/sql/data.sql b/src/assets/sql/data.sql index f5c4a93d..d97512ca 100644 --- a/src/assets/sql/data.sql +++ b/src/assets/sql/data.sql @@ -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');