Enable the change of the brand logo and colors from the backend (#789).
This commit is contained in:
parent
cd51576217
commit
e9a9314909
39 changed files with 563 additions and 8 deletions
|
@ -61,6 +61,8 @@ class Booking extends EA_Controller {
|
|||
}
|
||||
|
||||
$company_name = setting('company_name');
|
||||
$company_logo = setting('company_logo');
|
||||
$company_color = setting('company_color');
|
||||
$disable_booking = setting('disable_booking');
|
||||
$google_analytics_code = setting('google_analytics_code');
|
||||
$matomo_analytics_url = setting('matomo_analytics_url');
|
||||
|
@ -220,6 +222,8 @@ class Booking extends EA_Controller {
|
|||
'available_services' => $available_services,
|
||||
'available_providers' => $available_providers,
|
||||
'company_name' => $company_name,
|
||||
'company_logo' => $company_logo,
|
||||
'company_color' => $company_color,
|
||||
'date_format' => $date_format,
|
||||
'time_format' => $time_format,
|
||||
'first_weekday' => $first_weekday,
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -345,4 +345,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
|
@ -346,4 +346,13 @@ $lang['disable_booking'] = 'Disable Booking';
|
|||
$lang['disable_booking_hint'] = 'The booking page will be disabled for as long as this setting is active and customers will not be able to register new appointments.';
|
||||
$lang['display_message'] = 'Display Message';
|
||||
$lang['booking_is_disabled'] = 'Booking Is Disabled!';
|
||||
$lang['appearance'] = 'Appearance';
|
||||
$lang['company_logo'] = 'Company Logo';
|
||||
$lang['company_logo_hint'] = 'The company logo will be displayed in many places of the app, including the booking page and the notification emails (image file, max 2MB).';
|
||||
$lang['company_color'] = 'Company Color';
|
||||
$lang['company_color_hint'] = 'The company color will be applied across the app so that it the app uses your branding.';
|
||||
$lang['localization'] = 'Localization';
|
||||
$lang['integrations'] = 'Integrations';
|
||||
$lang['company'] = 'Company';
|
||||
$lang['remove'] = 'Remove';
|
||||
// End
|
||||
|
|
41
application/migrations/032_add_company_logo_setting.php
Normal file
41
application/migrations/032_add_company_logo_setting.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Easy!Appointments - Online Appointment Scheduler
|
||||
*
|
||||
* @package EasyAppointments
|
||||
* @author A.Tselegidis <alextselegidis@gmail.com>
|
||||
* @copyright Copyright (c) Alex Tselegidis
|
||||
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
|
||||
* @link https://easyappointments.org
|
||||
* @since v1.4.0
|
||||
* ---------------------------------------------------------------------------- */
|
||||
|
||||
class Migration_Add_company_logo_setting extends EA_Migration {
|
||||
/**
|
||||
* Upgrade method.
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
if ( ! $this->db->get_where('settings', ['name' => 'company_logo'])->num_rows())
|
||||
{
|
||||
$this->db->insert('settings', [
|
||||
'name' => 'company_logo',
|
||||
'value' => ''
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Downgrade method.
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
if ( ! $this->db->get_where('settings', ['name' => 'company_logo'])->num_rows())
|
||||
{
|
||||
$this->db->delete('settings', [
|
||||
'name' => 'company_logo',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
41
application/migrations/033_add_company_color_setting.php
Normal file
41
application/migrations/033_add_company_color_setting.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Easy!Appointments - Online Appointment Scheduler
|
||||
*
|
||||
* @package EasyAppointments
|
||||
* @author A.Tselegidis <alextselegidis@gmail.com>
|
||||
* @copyright Copyright (c) Alex Tselegidis
|
||||
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
|
||||
* @link https://easyappointments.org
|
||||
* @since v1.4.0
|
||||
* ---------------------------------------------------------------------------- */
|
||||
|
||||
class Migration_Add_company_color_setting extends EA_Migration {
|
||||
/**
|
||||
* Upgrade method.
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
if ( ! $this->db->get_where('settings', ['name' => 'company_color'])->num_rows())
|
||||
{
|
||||
$this->db->insert('settings', [
|
||||
'name' => 'company_color',
|
||||
'value' => '#ffffff'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Downgrade method.
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
if ( ! $this->db->get_where('settings', ['name' => 'company_color'])->num_rows())
|
||||
{
|
||||
$this->db->delete('settings', [
|
||||
'name' => 'company_color',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
* Local variables.
|
||||
*
|
||||
* @var string $active_menu
|
||||
* @var string $company_logo
|
||||
*/
|
||||
?>
|
||||
|
||||
|
|
|
@ -8,8 +8,13 @@
|
|||
|
||||
<div id="header">
|
||||
<div id="company-name">
|
||||
<?= $company_name ?>
|
||||
<div class="d-flex justify-content-center">
|
||||
<img src="<?= vars('company_logo') ?: base_url('assets/img/logo.png') ?>" alt="logo" id="company-logo">
|
||||
|
||||
<span>
|
||||
<?= $company_name ?>
|
||||
</span>
|
||||
|
||||
<div class="d-flex justify-content-center justify-content-md-start">
|
||||
<span class="display-selected-service me-2">
|
||||
[<?= lang('service') ?>]
|
||||
</span>
|
||||
|
|
92
application/views/components/company_color_style.php
Normal file
92
application/views/components/company_color_style.php
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/**
|
||||
* @var string $company_color
|
||||
*/
|
||||
?>
|
||||
|
||||
<style>
|
||||
a {
|
||||
color: <?= $company_color ?>;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: <?= $company_color ?>;
|
||||
filter: brightness(120%);
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: <?= $company_color ?>;
|
||||
border-color: <?= $company_color ?>;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: <?= $company_color ?>;
|
||||
border-color: <?= $company_color ?>;
|
||||
filter: brightness(120%);
|
||||
}
|
||||
|
||||
#book-appointment-wizard #header {
|
||||
background: <?= $company_color ?>;
|
||||
}
|
||||
|
||||
#book-appointment-wizard #company-name .display-selected-service,
|
||||
#book-appointment-wizard #company-name .display-selected-provider {
|
||||
color: <?= $company_color ?>;
|
||||
filter: brightness(50%);
|
||||
}
|
||||
|
||||
#book-appointment-wizard .book-step {
|
||||
background: <?= $company_color ?>;
|
||||
filter: brightness(75%);
|
||||
}
|
||||
|
||||
#book-appointment-wizard .book-step strong {
|
||||
color: <?= $company_color ?>;
|
||||
filter: brightness(200%);
|
||||
}
|
||||
|
||||
body .ui-widget.ui-widget-content {
|
||||
border-color: <?= $company_color ?>;
|
||||
}
|
||||
|
||||
body .ui-datepicker .ui-widget-header {
|
||||
background-color: <?= $company_color ?>;
|
||||
}
|
||||
|
||||
body .ui-datepicker th {
|
||||
background-color: <?= $company_color ?>;
|
||||
}
|
||||
|
||||
body .ui-datepicker .ui-datepicker-next-hover,
|
||||
body .ui-datepicker .ui-datepicker-prev-hover {
|
||||
background: <?= $company_color ?>;
|
||||
border-color: <?= $company_color ?>;
|
||||
filter: brightness(140%);
|
||||
}
|
||||
|
||||
body .ui-datepicker td a, body .ui-datepicker td span {
|
||||
color: <?= $company_color ?> !important;
|
||||
}
|
||||
|
||||
html body .ui-datepicker td a.ui-state-active {
|
||||
background: <?= $company_color ?> !important;
|
||||
}
|
||||
|
||||
body .ui-datepicker td a.ui-state-highlight {
|
||||
background: <?= $company_color ?> !important;
|
||||
filter: brightness(140%);
|
||||
}
|
||||
|
||||
#book-appointment-wizard #available-hours .selected-hour {
|
||||
background-color: <?= $company_color ?> ;
|
||||
border-color: <?= $company_color ?> ;
|
||||
}
|
||||
|
||||
#frame-footer .backend-link {
|
||||
background-color: <?= $company_color ?> !important;
|
||||
}
|
||||
|
||||
#frame-footer .backend-link:hover {
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
|
@ -18,6 +18,8 @@
|
|||
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/bootstrap.css') ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/general.css') ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/layouts/booking_layout.css') ?>">
|
||||
|
||||
<?php component('company_color_style', ['company_color' => vars('company_color')]) ?>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
@ -25,7 +27,7 @@
|
|||
<div class="row wrapper">
|
||||
<div id="book-appointment-wizard" class="col-12 col-lg-10 col-xl-8">
|
||||
|
||||
<?php component('booking_header', ['company_name' => vars('company_name')]) ?>
|
||||
<?php component('booking_header', ['company_name' => vars('company_name'), 'company_logo' => vars('company_logo')]) ?>
|
||||
|
||||
<?php slot('content') ?>
|
||||
|
||||
|
|
|
@ -19,8 +19,10 @@
|
|||
<?php endif ?>
|
||||
</legend>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="row mb-5">
|
||||
<div class="col-12">
|
||||
<h4><?= lang('company') ?></h4>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="company-name">
|
||||
<?= lang('company_name') ?>
|
||||
|
@ -59,6 +61,48 @@
|
|||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="company-logo">
|
||||
<?= lang('company_logo') ?>
|
||||
</label>
|
||||
<input type="file" id="company-logo" data-field="company_logo" class="form-control" accept="image/*">
|
||||
<div class="form-text text-muted">
|
||||
<small>
|
||||
<?= lang('company_logo_hint') ?>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center">
|
||||
<img src="#" alt="Company Logo Preview" id="company-logo-preview" class="img-thumbnail my-3" hidden>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center">
|
||||
<button type="button" class="btn btn-danger btn-sm mb-3" id="remove-company-logo" hidden>
|
||||
<i class="fas fa-trash me-2"></i>
|
||||
<?= lang('remove') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="company-color">
|
||||
<?= lang('company_color') ?>
|
||||
</label>
|
||||
<input type="color" id="company-color" data-field="company_color" class="form-control">
|
||||
<div class="form-text text-muted">
|
||||
<small>
|
||||
<?= lang('company_color_hint') ?>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-5">
|
||||
<div class="col-12">
|
||||
<h4><?= lang('localization') ?></h4>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="date-format">
|
||||
<?= lang('date_format') ?>
|
||||
|
@ -108,7 +152,12 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<h4><?= lang('integrations') ?></h4>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="google-analytics-code">
|
||||
Google Analytics Code
|
||||
|
@ -133,6 +182,7 @@
|
|||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="api-token">API Token</label>
|
||||
<input id="api-token" data-field="api_token" class="form-control">
|
||||
|
|
|
@ -882,3 +882,12 @@ body .form-horizontal .controls {
|
|||
#booking-settings-page .fields-row .form-control {
|
||||
border: 1px dashed #999 !important;
|
||||
}
|
||||
|
||||
#company-logo-preview {
|
||||
max-width: 256px;
|
||||
max-height: 256px;
|
||||
}
|
||||
|
||||
#company-color {
|
||||
min-height: 41px;
|
||||
}
|
||||
|
|
|
@ -52,6 +52,12 @@ body {
|
|||
color: #fff;
|
||||
margin: 20px 0;
|
||||
|
||||
#company-logo {
|
||||
display: block;
|
||||
margin: 14px auto;
|
||||
max-height: 56px;
|
||||
}
|
||||
|
||||
.display-selected-service,
|
||||
.display-selected-provider {
|
||||
color: #225d4d;
|
||||
|
@ -290,6 +296,16 @@ body {
|
|||
display: inline-block;
|
||||
float: left;
|
||||
margin: 0 auto;
|
||||
min-width: 400px;
|
||||
line-height: 1.4;
|
||||
|
||||
#company-logo {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
margin-right: 14px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#book-appointment-wizard #steps {
|
||||
|
|
|
@ -525,7 +525,7 @@ App.Pages.Booking = (function () {
|
|||
|
||||
$('.required').each((index, requiredField) => {
|
||||
if (!$(requiredField).val()) {
|
||||
$(requiredField).parents('.form-group').addClass('is-invalid');
|
||||
$(requiredField).addClass('is-invalid');
|
||||
missingRequiredField = true;
|
||||
}
|
||||
});
|
||||
|
@ -548,7 +548,7 @@ App.Pages.Booking = (function () {
|
|||
|
||||
// Validate email address.
|
||||
if ($email.val() && !App.Utils.Validation.email($email.val())) {
|
||||
$email.parents('.form-group').addClass('is-invalid');
|
||||
$email.addClass('is-invalid');
|
||||
throw new Error(lang('invalid_email'));
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
*/
|
||||
App.Pages.GeneralSettings = (function () {
|
||||
const $saveSettings = $('#save-settings');
|
||||
const $companyLogo = $('#company-logo');
|
||||
const $companyLogoPreview = $('#company-logo-preview');
|
||||
const $removeCompanyLogo = $('#remove-company-logo');
|
||||
let companyLogoBase64 = '';
|
||||
|
||||
/**
|
||||
* Check if the form has invalid values.
|
||||
|
@ -52,6 +56,14 @@ App.Pages.GeneralSettings = (function () {
|
|||
|
||||
function deserialize(generalSettings) {
|
||||
generalSettings.forEach((generalSetting) => {
|
||||
if (generalSetting.name === 'company_logo' && generalSetting.value) {
|
||||
companyLogoBase64 = generalSetting.value;
|
||||
$companyLogoPreview.attr('src', generalSetting.value);
|
||||
$companyLogoPreview.prop('hidden', false);
|
||||
$removeCompanyLogo.prop('hidden', false);
|
||||
return;
|
||||
}
|
||||
|
||||
$('[data-field="' + generalSetting.name + '"]').val(generalSetting.value);
|
||||
});
|
||||
}
|
||||
|
@ -68,6 +80,11 @@ App.Pages.GeneralSettings = (function () {
|
|||
});
|
||||
});
|
||||
|
||||
generalSettings.push({
|
||||
name: 'company_logo',
|
||||
value: companyLogoBase64
|
||||
});
|
||||
|
||||
return generalSettings;
|
||||
}
|
||||
|
||||
|
@ -88,6 +105,36 @@ App.Pages.GeneralSettings = (function () {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the selected image to a base64 encoded string.
|
||||
*/
|
||||
function onCompanyLogoChange() {
|
||||
const file = $companyLogo[0].files[0];
|
||||
|
||||
if (!file) {
|
||||
$removeCompanyLogo.trigger('click');
|
||||
return;
|
||||
}
|
||||
|
||||
App.Utils.File.toBase64(file).then((base64) => {
|
||||
companyLogoBase64 = base64;
|
||||
$companyLogoPreview.attr('src', base64);
|
||||
$companyLogoPreview.prop('hidden', false);
|
||||
$removeCompanyLogo.prop('hidden', false);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the company logo data.
|
||||
*/
|
||||
function onRemoveCompanyLogoClick() {
|
||||
companyLogoBase64 = '';
|
||||
$companyLogo.val('');
|
||||
$companyLogoPreview.attr('src', '#');
|
||||
$companyLogoPreview.prop('hidden', true);
|
||||
$removeCompanyLogo.prop('hidden', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the module.
|
||||
*/
|
||||
|
@ -98,6 +145,10 @@ App.Pages.GeneralSettings = (function () {
|
|||
|
||||
$saveSettings.on('click', onSaveSettingsClick);
|
||||
|
||||
$companyLogo.on('change', onCompanyLogoChange);
|
||||
|
||||
$removeCompanyLogo.on('click', onRemoveCompanyLogoClick);
|
||||
|
||||
App.Layouts.Backend.placeFooterToBottom();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue