custom_day_schedule_form.php
1 year ago
default_form_fields.php
1 year ago
general.php
2 months ago
generate_instant_booking_page.php
1 year ago
get_pro.php
1 year ago
import_modal.php
1 year ago
notifications.php
1 year ago
pages.php
1 year ago
payments.php
1 year ago
premium_modal.php
1 year ago
steps_order_modal.php
5 months ago
version_5_intro.php
1 year ago
work_periods.php
1 year ago
general.php
683 lines
| 1 | <?php |
| 2 | if ( ! defined( 'ABSPATH' ) ) { |
| 3 | exit; // Exit if accessed directly |
| 4 | } |
| 5 | ?> |
| 6 | <form action="" data-os-action="<?php echo esc_attr(OsRouterHelper::build_route_name( 'settings', 'update' )); ?>"> |
| 7 | <div class="latepoint-page-with-side-nav"> |
| 8 | <div class="latepoint-settings-w os-form-w"> |
| 9 | <?php wp_nonce_field( 'update_settings' ); ?> |
| 10 | <div class="white-box section-anchor" id="stickySectionAppointment"> |
| 11 | <div class="white-box-header"> |
| 12 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Appointments', 'latepoint' ); ?></h3></div> |
| 13 | </div> |
| 14 | <div class="white-box-content no-padding"> |
| 15 | <div class="sub-section-row"> |
| 16 | <div class="sub-section-label"> |
| 17 | <h3><?php esc_html_e( 'Statuses', 'latepoint' ) ?></h3> |
| 18 | </div> |
| 19 | <div class="sub-section-content"> |
| 20 | <div class="os-row os-mb-3"> |
| 21 | <div class="os-col-lg-6"> |
| 22 | <?php echo OsFormHelper::select_field( 'settings[default_booking_status]', __( 'Default status', 'latepoint' ), OsBookingHelper::get_statuses_list(), OsBookingHelper::get_default_booking_status() ); ?> |
| 23 | </div> |
| 24 | <div class="os-col-lg-6"> |
| 25 | <?php echo OsFormHelper::multi_select_field( 'settings[timeslot_blocking_statuses]', __( 'Statuses that block timeslot', 'latepoint' ), OsBookingHelper::get_statuses_list(), OsBookingHelper::get_timeslot_blocking_statuses() ); ?> |
| 26 | </div> |
| 27 | </div> |
| 28 | <div class="os-row os-mb-3"> |
| 29 | <div class="os-col-lg-6"> |
| 30 | <?php echo OsFormHelper::multi_select_field( 'settings[need_action_statuses]', __( 'Statuses that appear on pending page', 'latepoint' ), OsBookingHelper::get_statuses_list(), OsBookingHelper::get_booking_statuses_for_pending_page() ); ?> |
| 31 | </div> |
| 32 | <div class="os-col-lg-6"> |
| 33 | <?php echo OsFormHelper::multi_select_field( 'settings[calendar_hidden_statuses]', __( 'Statuses hidden on calendar', 'latepoint' ), OsBookingHelper::get_statuses_list(), OsCalendarHelper::get_booking_statuses_hidden_from_calendar() ); ?> |
| 34 | </div> |
| 35 | </div> |
| 36 | <div class="os-row"> |
| 37 | <div class="os-col-12"> |
| 38 | <?php echo OsFormHelper::text_field( 'settings[additional_booking_statuses]', __( 'Additional Statuses (comma separated)', 'latepoint' ), OsSettingsHelper::get_settings_value( 'additional_booking_statuses' ), [ 'theme' => 'simple' ] ); ?> |
| 39 | </div> |
| 40 | </div> |
| 41 | </div> |
| 42 | </div> |
| 43 | <div class="sub-section-row"> |
| 44 | <div class="sub-section-label"> |
| 45 | <h3><?php esc_html_e( 'Date and time', 'latepoint' ) ?></h3> |
| 46 | </div> |
| 47 | <div class="sub-section-content"> |
| 48 | <div class="os-row os-mb-3"> |
| 49 | <div class="os-col-6"> |
| 50 | <?php echo OsFormHelper::select_field( 'settings[time_system]', __( 'Time system', 'latepoint' ), OsTimeHelper::get_time_systems_list_for_select(), OsTimeHelper::get_time_system() ); ?> |
| 51 | </div> |
| 52 | <div class="os-col-6"> |
| 53 | <?php echo OsFormHelper::select_field( 'settings[date_format]', __( 'Date format', 'latepoint' ), OsTimeHelper::get_date_formats_list_for_select(), OsSettingsHelper::get_date_format() ); ?> |
| 54 | </div> |
| 55 | </div> |
| 56 | <?php echo OsFormHelper::text_field( 'settings[timeblock_interval]', __( 'Selectable intervals', 'latepoint' ), OsSettingsHelper::get_default_timeblock_interval(), [ |
| 57 | 'class' => 'os-mask-minutes', |
| 58 | 'theme' => 'simple' |
| 59 | ] ); ?> |
| 60 | <div class="os-row os-mb-3"> |
| 61 | <div class="os-col-lg-6"> |
| 62 | <?php echo OsFormHelper::toggler_field( 'settings[show_booking_end_time]', __( 'Show appointment end time', 'latepoint' ), OsSettingsHelper::is_on( 'show_booking_end_time' ), false, false, [ 'sub_label' => __( 'Show booking end time during booking process and on summary', 'latepoint' ) ] ); ?> |
| 63 | </div> |
| 64 | <div class="os-col-lg-6"> |
| 65 | <?php echo OsFormHelper::toggler_field( 'settings[disable_verbose_date_output]', __( 'Disable verbose date output', 'latepoint' ), OsSettingsHelper::is_on( 'disable_verbose_date_output' ), false, false, [ 'sub_label' => __( 'Use number instead of name of the month when outputting dates', 'latepoint' ) ] ); ?> |
| 66 | </div> |
| 67 | </div> |
| 68 | </div> |
| 69 | </div> |
| 70 | </div> |
| 71 | </div> |
| 72 | <div class="white-box section-anchor" id="stickySectionRestrictions"> |
| 73 | <div class="white-box-header"> |
| 74 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Restrictions', 'latepoint' ); ?></h3></div> |
| 75 | </div> |
| 76 | <div class="white-box-content no-padding"> |
| 77 | |
| 78 | <div class="sub-section-row"> |
| 79 | <div class="sub-section-label"> |
| 80 | <h3><?php esc_html_e( 'Time Restrictions', 'latepoint' ) ?></h3> |
| 81 | </div> |
| 82 | <div class="sub-section-content"> |
| 83 | <div class="latepoint-message latepoint-message-subtle"><?php esc_html_e( 'You can set restrictions on earliest/latest dates in the future when your customer can place an appointment. You can either use a relative values like for example "+1 month", "+2 weeks", "+5 days", "+3 hours", "+30 minutes" (entered without quotes), or you can use a fixed date in format YYYY-MM-DD. Leave blank to remove any limitations.', 'latepoint' ); ?></div> |
| 84 | <div class="os-row"> |
| 85 | <div class="os-col-lg-6"> |
| 86 | <?php echo OsFormHelper::text_field( 'settings[earliest_possible_booking]', __( 'Earliest Possible Booking', 'latepoint' ), OsSettingsHelper::get_settings_value( 'earliest_possible_booking' ), [ 'theme' => 'simple' ] ); ?> |
| 87 | </div> |
| 88 | <div class="os-col-lg-6"> |
| 89 | <?php echo OsFormHelper::text_field( 'settings[latest_possible_booking]', __( 'Latest Possible Booking', 'latepoint' ), OsSettingsHelper::get_settings_value( 'latest_possible_booking' ), [ 'theme' => 'simple' ] ); ?> |
| 90 | </div> |
| 91 | </div> |
| 92 | </div> |
| 93 | </div> |
| 94 | <div class="sub-section-row"> |
| 95 | <div class="sub-section-label"> |
| 96 | <h3><?php esc_html_e( 'Quantity Restrictions', 'latepoint' ) ?></h3> |
| 97 | </div> |
| 98 | <div class="sub-section-content"> |
| 99 | <?php echo OsFormHelper::text_field( 'settings[max_future_bookings_per_customer]', __( 'Maximum Number of Future Bookings per Customer', 'latepoint' ), OsSettingsHelper::get_settings_value( 'max_future_bookings_per_customer' ), [ 'theme' => 'simple' ] ); ?> |
| 100 | </div> |
| 101 | </div> |
| 102 | <?php |
| 103 | /** |
| 104 | * Plug after general settings section called restrictions |
| 105 | * |
| 106 | * @since 5.0.0 |
| 107 | * @hook latepoint_general_settings_section_restrictions_after |
| 108 | * |
| 109 | */ |
| 110 | do_action( 'latepoint_general_settings_section_restrictions_after' ); ?> |
| 111 | </div> |
| 112 | </div> |
| 113 | <div class="white-box section-anchor" id="stickySectionCurrency"> |
| 114 | <div class="white-box-header"> |
| 115 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Currency & Price', 'latepoint' ); ?></h3></div> |
| 116 | </div> |
| 117 | <div class="white-box-content no-padding"> |
| 118 | <div class="sub-section-row"> |
| 119 | <div class="sub-section-label"> |
| 120 | <h3><?php esc_html_e( 'Symbol', 'latepoint' ) ?></h3> |
| 121 | </div> |
| 122 | <div class="sub-section-content"> |
| 123 | <div class="os-row"> |
| 124 | <div class="os-col-lg-4"> |
| 125 | <?php echo OsFormHelper::text_field( 'settings[currency_symbol_before]', __( 'Symbol before the price', 'latepoint' ), OsSettingsHelper::get_settings_value( 'currency_symbol_before', '$' ), [ 'theme' => 'simple' ] ); ?> |
| 126 | </div> |
| 127 | <div class="os-col-lg-4"> |
| 128 | <?php echo OsFormHelper::text_field( 'settings[currency_symbol_after]', __( 'Symbol after the price', 'latepoint' ), OsSettingsHelper::get_settings_value( 'currency_symbol_after' ), [ 'theme' => 'simple' ] ); ?> |
| 129 | </div> |
| 130 | </div> |
| 131 | </div> |
| 132 | </div> |
| 133 | <div class="sub-section-row"> |
| 134 | <div class="sub-section-label"> |
| 135 | <h3><?php esc_html_e( 'Formatting', 'latepoint' ) ?></h3> |
| 136 | </div> |
| 137 | <div class="sub-section-content"> |
| 138 | <div class="os-row"> |
| 139 | <div class="os-col-lg-4"> |
| 140 | <?php echo OsFormHelper::select_field( 'settings[thousand_separator]', __( 'Thousand Separator', 'latepoint' ), [ |
| 141 | ',' => __( 'Comma', 'latepoint' ) . ' (1,000)', |
| 142 | '.' => __( 'Dot', 'latepoint' ) . ' (1.000)', |
| 143 | ' ' => __( 'Space', 'latepoint' ) . ' (1 000)', |
| 144 | '' => __( 'None', 'latepoint' ) . ' (1000)' |
| 145 | ], OsSettingsHelper::get_settings_value( 'thousand_separator', ',' ) ); ?> |
| 146 | </div> |
| 147 | <div class="os-col-lg-4"> |
| 148 | <?php echo OsFormHelper::select_field( 'settings[decimal_separator]', __( 'Decimal Separator', 'latepoint' ), [ |
| 149 | '.' => __( 'Dot', 'latepoint' ) . ' (0.99)', |
| 150 | ',' => __( 'Comma', 'latepoint' ) . ' (0,99)' |
| 151 | ], OsSettingsHelper::get_settings_value( 'decimal_separator', '.' ) ); ?> |
| 152 | </div> |
| 153 | <div class="os-col-lg-4"> |
| 154 | <?php echo OsFormHelper::select_field( 'settings[number_of_decimals]', __( 'Number of Decimals', 'latepoint' ), [ 0, 1, 2, 3, 4 ], OsSettingsHelper::get_settings_value( 'number_of_decimals', '2' ) ); ?> |
| 155 | </div> |
| 156 | </div> |
| 157 | </div> |
| 158 | </div> |
| 159 | <div class="sub-section-row"> |
| 160 | <div class="sub-section-label"> |
| 161 | <h3><?php esc_html_e( 'Prices', 'latepoint' ) ?></h3> |
| 162 | </div> |
| 163 | <div class="sub-section-content"> |
| 164 | <?php echo OsFormHelper::toggler_field( 'settings[hide_breakdown_if_subtotal_zero]', __( 'Do not show price breakdown, if service price is zero', 'latepoint' ), OsSettingsHelper::is_on( 'hide_breakdown_if_subtotal_zero' ) ); ?> |
| 165 | </div> |
| 166 | </div> |
| 167 | </div> |
| 168 | </div> |
| 169 | <div class="white-box section-anchor" id="stickySectionPhone"> |
| 170 | <div class="white-box-header"> |
| 171 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Phone', 'latepoint' ); ?></h3></div> |
| 172 | </div> |
| 173 | <div class="white-box-content no-padding"> |
| 174 | <div class="sub-section-row phone-country-picker-settings"> |
| 175 | <div class="sub-section-label"> |
| 176 | <h3><?php esc_html_e( 'Countries', 'latepoint' ) ?></h3> |
| 177 | </div> |
| 178 | <div class="sub-section-content"> |
| 179 | <div class="phone-country-picker-settings"> |
| 180 | <div class="os-row os-mb-2"> |
| 181 | <div class="os-col-lg-4"> |
| 182 | <?php echo OsFormHelper::select_field( 'settings[list_of_phone_countries]', __( 'Countries shown in phone field', 'latepoint' ), [ |
| 183 | LATEPOINT_ALL => __( 'Show all countries', 'latepoint' ), |
| 184 | 'select' => __( 'Show selected countries', 'latepoint' ) |
| 185 | ], OsSettingsHelper::get_settings_value( 'list_of_phone_countries', LATEPOINT_ALL ) ); ?> |
| 186 | </div> |
| 187 | <div class="os-col-lg-8"> |
| 188 | <?php echo OsFormHelper::select_field( 'settings[default_phone_country]', __( 'Default Country (if not auto-detected)', 'latepoint' ), OsUtilHelper::get_countries_list(), OsSettingsHelper::get_default_phone_country() ); ?> |
| 189 | </div> |
| 190 | </div> |
| 191 | <div class="os-row"> |
| 192 | <div class="os-col-12 select-phone-countries-wrapper" |
| 193 | style="<?php echo ( OsSettingsHelper::get_settings_value( 'list_of_phone_countries', LATEPOINT_ALL ) == LATEPOINT_ALL ) ? 'display: none;' : ''; ?>"> |
| 194 | <?php echo OsFormHelper::multi_select_field( 'settings[included_phone_countries]', __( 'Select countries available for phone number field', 'latepoint' ), OsUtilHelper::get_countries_list(), OsSettingsHelper::get_included_phone_countries() ); ?> |
| 195 | </div> |
| 196 | </div> |
| 197 | </div> |
| 198 | </div> |
| 199 | </div> |
| 200 | <div class="sub-section-row phone-country-picker-settings"> |
| 201 | <div class="sub-section-label"> |
| 202 | <h3><?php esc_html_e( 'Validation', 'latepoint' ) ?></h3> |
| 203 | </div> |
| 204 | <div class="sub-section-content"> |
| 205 | <?php echo OsFormHelper::toggler_field( 'settings[validate_phone_number]', __( 'Validate phone typed fields if they are set as required', 'latepoint' ), OsSettingsHelper::is_on( 'validate_phone_number' ), false, false, [ 'sub_label' => __( 'Reject invalid phone for customers and agents if the phone field is set as required', 'latepoint' ) ] ); ?> |
| 206 | <?php echo OsFormHelper::toggler_field( 'settings[mask_phone_number_fields]', __( 'Format phone number on input', 'latepoint' ), OsSettingsHelper::is_on( 'mask_phone_number_fields', LATEPOINT_VALUE_ON ), false, false, [ 'sub_label' => __( 'Applies formatting on phone fields based on the country selected (not recommended for countries that have multiple NSN lengths)', 'latepoint' ) ] ); ?> |
| 207 | <?php echo OsFormHelper::toggler_field( 'settings[show_dial_code_with_flag]', __( 'Show country dial code next to flag', 'latepoint' ), OsSettingsHelper::is_enabled_show_dial_code_with_flag(), false, false, [ 'sub_label' => __( 'If enabled, will show a country code next to a flag, for example +1 for United States', 'latepoint' ) ] ); ?> |
| 208 | </div> |
| 209 | </div> |
| 210 | </div> |
| 211 | </div> |
| 212 | <div class="white-box section-anchor" id="stickySectionAvailability"> |
| 213 | <div class="white-box-header"> |
| 214 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Availability Logic', 'latepoint' ); ?></h3> |
| 215 | </div> |
| 216 | </div> |
| 217 | <div class="white-box-content no-padding"> |
| 218 | <div class="sub-section-row"> |
| 219 | <div class="sub-section-label"> |
| 220 | <h3><?php esc_html_e( 'Restrictions', 'latepoint' ) ?></h3> |
| 221 | </div> |
| 222 | <div class="sub-section-content"> |
| 223 | <?php echo OsFormHelper::toggler_field( 'settings[one_agent_at_location]', __( 'Location can only be used by one agent at a time', 'latepoint' ), OsSettingsHelper::is_on( 'one_agent_at_location' ), '', 'large', [ 'sub_label' => __( 'At any given location, only one agent can be booked at a time', 'latepoint' ) ] ); ?> |
| 224 | <?php echo OsFormHelper::toggler_field( 'settings[one_location_at_time]', __( 'Agents can only be present in one location at a time', 'latepoint' ), OsSettingsHelper::is_on( 'one_location_at_time' ), '', 'large', [ 'sub_label' => __( 'If an agent is booked at one location, he will not be able to accept any bookings for the same timeslot at other locations', 'latepoint' ) ] ); ?> |
| 225 | </div> |
| 226 | </div> |
| 227 | <div class="sub-section-row"> |
| 228 | <div class="sub-section-label"> |
| 229 | <h3><?php esc_html_e( 'Permissions', 'latepoint' ) ?></h3> |
| 230 | </div> |
| 231 | <div class="sub-section-content"> |
| 232 | <?php echo OsFormHelper::toggler_field( 'settings[multiple_services_at_time]', __( 'One agent can perform different services simultaneously', 'latepoint' ), OsSettingsHelper::is_on( 'multiple_services_at_time' ), '', 'large', [ 'sub_label' => __( 'Allows an agent to be booked for different services within the same timeslot', 'latepoint' ) ] ); ?> |
| 233 | </div> |
| 234 | </div> |
| 235 | </div> |
| 236 | </div> |
| 237 | <div class="white-box section-anchor" id="stickySectionCustomer"> |
| 238 | <div class="white-box-header"> |
| 239 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Customers', 'latepoint' ); ?></h3></div> |
| 240 | </div> |
| 241 | <div class="white-box-content no-padding"> |
| 242 | <div class="sub-section-row"> |
| 243 | <div class="sub-section-label"> |
| 244 | <h3><?php esc_html_e( 'Authentication', 'latepoint' ) ?></h3> |
| 245 | </div> |
| 246 | <div class="sub-section-content"> |
| 247 | <div class="latepoint-message latepoint-message-subtle"> |
| 248 | <?php _e('Make sure to install an SMS processor if you choose to text one-time codes (OTP) to customer phone numbers for authentication or verification', 'latepoint'); ?> |
| 249 | </div> |
| 250 | <div class="os-row os-mb-2"> |
| 251 | <div class="os-col-lg-6"> |
| 252 | <?php echo OsFormHelper::select_field('settings[selected_customer_authentication_field_type]', __('Field used for authentication', 'latepoint'), OsAuthHelper::get_customer_authentication_field_type_options(), OsAuthHelper::get_selected_customer_authentication_field_type(), ['data-os-on-change' => 'latepoint_settings_customer_authentication_field_type_changed']); ?> |
| 253 | </div> |
| 254 | <div class="os-col-lg-6" id="authDefaultContactType" <?php if(OsAuthHelper::get_selected_customer_authentication_field_type() != 'email_or_phone'){ ?>style="display: none;"<?php } ?>> |
| 255 | <div> |
| 256 | <?php echo OsFormHelper::select_field('settings[default_contact_type_for_customer_auth]', __('Default to', 'latepoint'), OsAuthHelper::get_available_contact_types_for_customer_auth(), OsAuthHelper::get_default_contact_type_for_customer_auth()); ?> |
| 257 | </div> |
| 258 | </div> |
| 259 | <div class="os-col-lg-6" id="authDefaultMergeBehavior" <?php if(OsAuthHelper::get_selected_customer_authentication_field_type() != 'disabled'){ ?>style="display: none;"<?php } ?>> |
| 260 | <div> |
| 261 | <?php echo OsFormHelper::select_field('settings[default_contact_merge_behavior]', __('Reuse existing customer if', 'latepoint'), ['email' => __('Email matches', 'latepoint'), 'phone' => __('Phone matches', 'latepoint'), 'none' => __('Do not reuse, always create new customer', 'latepoint')], OsSettingsHelper::get_settings_value('default_contact_merge_behavior', 'email')); ?> |
| 262 | </div> |
| 263 | </div> |
| 264 | </div> |
| 265 | <div id="passwordFields" <?php if(OsAuthHelper::is_customer_auth_disabled()){ ?>style="display: none;"<?php } ?>> |
| 266 | <div class="os-row os-mb-2"> |
| 267 | <div class="os-col-lg-6"> |
| 268 | <?php echo OsFormHelper::select_field('settings[selected_customer_authentication_method]', __('Authentication method', 'latepoint'), OsAuthHelper::get_customer_authentication_method_options(), OsAuthHelper::get_selected_customer_authentication_method(), ['data-os-on-change' => 'latepoint_settings_customer_authentication_method_changed']); ?> |
| 269 | </div> |
| 270 | <div id="authDefaultMethod" class="os-col-lg-6" <?php if(OsAuthHelper::get_selected_customer_authentication_method() != 'password_or_otp'){ ?>style="display: none;"<?php } ?>> |
| 271 | <div> |
| 272 | <?php echo OsFormHelper::select_field('settings[default_customer_authentication_method]', __('Default to', 'latepoint'), OsAuthHelper::get_available_customer_authentication_methods(), OsAuthHelper::get_default_customer_authentication_method()); ?> |
| 273 | </div> |
| 274 | </div> |
| 275 | </div> |
| 276 | <?php echo OsFormHelper::toggler_field( 'settings[require_otp_for_new_contacts]', __( 'Require OTP verification for new contacts', 'latepoint' ), OsSettingsHelper::is_on( 'require_otp_for_new_contacts' ), false, false, [ 'sub_label' => __( 'Require customers to verify their primary contact (email or phone) when they change it or add a new one, a 6 digit one-time code will be sent to their email or phone', 'latepoint' ) ] ); ?> |
| 277 | </div> |
| 278 | </div> |
| 279 | </div> |
| 280 | <div class="sub-section-row" id="customerStepSettings" <?php if(OsAuthHelper::is_customer_auth_disabled()){ ?>style="display: none;"<?php } ?>> |
| 281 | <div class="sub-section-label"> |
| 282 | <h3><?php esc_html_e( 'Customer Step', 'latepoint' ) ?></h3> |
| 283 | </div> |
| 284 | <div class="sub-section-content"> |
| 285 | <?php // echo OsFormHelper::toggler_field( 'settings[modern_auth_flow_for_customers]', __( 'Simplified authentication flow', 'latepoint' ), !OsAuthHelper::is_classic_auth_flow(), false, false, [ 'sub_label' => __( 'Instead of having customer to pick if they want to create a new account or login, ask them their phone/email and then present a form to register if email/phone not found, or show OTP/password form to login', 'latepoint' ) ] ); ?> |
| 286 | <?php echo OsFormHelper::toggler_field( 'settings[steps_require_setting_password]', __( 'Require customers to set password', 'latepoint' ), OsSettingsHelper::is_on( 'steps_require_setting_password' ), '-registrationPrompt', false, [ 'sub_label' => __( 'Shows password field on registration step, customer will be required to set a password in order to create an account', 'latepoint' ) ] ); ?> |
| 287 | <div id="registrationPrompt" <?php if(OsSettingsHelper::is_on( 'steps_require_setting_password' )){ ?>style="display: none;"<?php } ?>> |
| 288 | <?php echo OsFormHelper::toggler_field( 'settings[steps_hide_registration_prompt]', __( 'Do not show "Create Account" prompt on confirmation step', 'latepoint' ), OsSettingsHelper::is_on( 'steps_hide_registration_prompt' ), false, false, [ 'sub_label' => __( 'If a customer has not set password for their account, they will be presented with a prompt to do it after a booking is placed.', 'latepoint' ) ] ); ?> |
| 289 | </div> |
| 290 | </div> |
| 291 | </div> |
| 292 | <div class="sub-section-row"> |
| 293 | <div class="sub-section-label"> |
| 294 | <h3><?php esc_html_e( 'WordPress', 'latepoint' ) ?></h3> |
| 295 | </div> |
| 296 | <div class="sub-section-content"> |
| 297 | <?php echo OsFormHelper::toggler_field( 'settings[wp_users_as_customers]', __( 'Use WordPress users as customers', 'latepoint' ), OsSettingsHelper::is_on( 'wp_users_as_customers' ), 'defaultWPUserRole', false, [ 'sub_label' => __( 'Customers can login using their WordPress credentials (if authentication is enabled above), a linked customer account is created automatically. If a WordPress user is logged in - a customer with the same email will be created automatically and data will be prefilled. If a new customer provided an email address, a linked WordPress user is automatically created for that customer, if not present already.', 'latepoint' ) ] ); ?> |
| 298 | <div id="defaultWPUserRole" class="os-mt-1" <?php if(!OsAuthHelper::can_wp_users_login_as_customers()){ ?>style="display: none;"<?php } ?>> |
| 299 | <?php echo OsFormHelper::select_field( 'settings[default_wp_role_for_customer]', __('Default role for a created WP user', 'latepoint'), OsRolesHelper::get_wp_roles_list(), OsSettingsHelper::get_default_wp_role_for_new_customers() ); ?> |
| 300 | <?php |
| 301 | $default_fields = OsSettingsHelper::get_default_fields_for_customer(); |
| 302 | if(empty($default_fields['email']) || !$default_fields['email']['required'] || !$default_fields['email']['active']){ |
| 303 | echo '<div class="latepoint-message latepoint-message-invalid">'.esc_html__('Important: WordPress users are required to have an email address. You have to set email address field as required in order to create a matching WP user for new customers, otherwise customers without email address on file will not be able to login and make bookings', 'latepoint').'</div>'; |
| 304 | } |
| 305 | ?> |
| 306 | </div> |
| 307 | |
| 308 | </div> |
| 309 | </div> |
| 310 | <div class="sub-section-row"> |
| 311 | <div class="sub-section-label"> |
| 312 | <h3><?php esc_html_e( 'Rescheduling', 'latepoint' ) ?></h3> |
| 313 | </div> |
| 314 | <div class="sub-section-content"> |
| 315 | <?php echo apply_filters('latepoint_customer_reschedule_settings', '<div>'.OsUtilHelper::generate_missing_addon_link(__('Upgrade to the Premium version to let customers reschedule appointments', 'latepoint')).'</div>'); ?> |
| 316 | </div> |
| 317 | </div> |
| 318 | <div class="sub-section-row"> |
| 319 | <div class="sub-section-label"> |
| 320 | <h3><?php esc_html_e( 'Cancellation', 'latepoint' ) ?></h3> |
| 321 | </div> |
| 322 | <div class="sub-section-content"> |
| 323 | <?php echo OsFormHelper::toggler_field( 'settings[allow_customer_booking_cancellation]', __( 'Allow customers cancel their bookings', 'latepoint' ), OsSettingsHelper::is_on( 'allow_customer_booking_cancellation' ), 'cancellation_settings', 'normal', [ 'sub_label' => __( 'If enable, shows a button on customer cabinet to cancel an appointment', 'latepoint' ) ] ); ?> |
| 324 | <div class="os-mb-2" |
| 325 | id="cancellation_settings" <?php echo OsSettingsHelper::is_on( 'allow_customer_booking_cancellation' ) ? '' : 'style="display:none"' ?>> |
| 326 | <?php echo OsFormHelper::toggler_field( 'settings[limit_when_customer_can_cancel]', __( 'Set restriction on when customer can cancel', 'latepoint' ), OsSettingsHelper::is_on( 'limit_when_customer_can_cancel' ), 'cancellation_limit_settings' ); ?> |
| 327 | <div class="os-mb-4" |
| 328 | id="cancellation_limit_settings" <?php echo OsSettingsHelper::is_on( 'limit_when_customer_can_cancel' ) ? '' : 'style="display:none"' ?>> |
| 329 | <div class="merged-fields os-mt-1"> |
| 330 | <div class="merged-label"><?php esc_html_e( 'Can cancel when it is at least', 'latepoint' ); ?></div> |
| 331 | <?php echo OsFormHelper::text_field( 'settings[cancellation_limit_value]', false, OsSettingsHelper::get_settings_value( 'cancellation_limit_value', 5 ), [ 'placeholder' => __( 'Value', 'latepoint' ) ] ); ?> |
| 332 | <?php echo OsFormHelper::select_field( 'settings[cancellation_limit_unit]', false, |
| 333 | array( |
| 334 | 'minute' => __( 'minutes', 'latepoint' ), |
| 335 | 'hour' => __( 'hours', 'latepoint' ), |
| 336 | 'day' => __( 'days', 'latepoint' ) |
| 337 | ), |
| 338 | OsSettingsHelper::get_settings_value( 'cancellation_limit_unit', 'hour' ) ); ?> |
| 339 | <div class="merged-label"><?php esc_html_e( 'before appointment start time', 'latepoint' ); ?></div> |
| 340 | </div> |
| 341 | </div> |
| 342 | </div> |
| 343 | </div> |
| 344 | </div> |
| 345 | <div class="sub-section-row"> |
| 346 | <div class="sub-section-label"> |
| 347 | <h3><?php esc_html_e( 'Customer Cabinet', 'latepoint' ) ?></h3> |
| 348 | </div> |
| 349 | <div class="sub-section-content"> |
| 350 | <?php echo OsFormHelper::text_field( 'settings[customer_dashboard_book_shortcode]', __( 'Shortcode for contents of New Appointment tab', 'latepoint' ), OsSettingsHelper::get_settings_value( 'customer_dashboard_book_shortcode', '[latepoint_book_form]' ), [ 'theme' => 'simple' ] ); ?> |
| 351 | <div class="os-mt-2"> |
| 352 | <div class="latepoint-message latepoint-message-subtle"><?php esc_html_e( 'You can set attributes for a new appointment button tile in a format', 'latepoint' ); ?> |
| 353 | <strong>data-selected-agent="ID" data-selected-location="ID" etc...</strong></div> |
| 354 | <?php echo OsFormHelper::text_field( 'settings[customer_dashboard_book_button_attributes]', __( 'Attributes for New Appointment button', 'latepoint' ), OsSettingsHelper::get_settings_value( 'customer_dashboard_book_button_attributes', '' ), [ 'theme' => 'simple' ] ); ?> |
| 355 | </div> |
| 356 | </div> |
| 357 | </div> |
| 358 | |
| 359 | <div class="sub-section-row"> |
| 360 | <div class="sub-section-label"> |
| 361 | <h3><?php _e( 'Security & Spam', 'latepoint' ) ?></h3> |
| 362 | </div> |
| 363 | <div class="sub-section-content"> |
| 364 | <?php echo apply_filters('latepoint_general_settings_customer_security', OsUtilHelper::generate_missing_addon_link(__('Upgrade to the Premium version to unlock CAPTCHA protection and IP Address logging to fight with spam bookings.', 'latepoint'))); ?> |
| 365 | </div> |
| 366 | </div> |
| 367 | |
| 368 | <?php |
| 369 | /** |
| 370 | * Plug after customer general settings output |
| 371 | * |
| 372 | * @since 5.1.0 |
| 373 | * @hook latepoint_settings_general_customer_after |
| 374 | * |
| 375 | */ |
| 376 | do_action( 'latepoint_settings_general_customer_after' ); ?> |
| 377 | </div> |
| 378 | </div> |
| 379 | <div class="white-box section-anchor" id="stickySectionSetup"> |
| 380 | <div class="white-box-header"> |
| 381 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Setup Pages', 'latepoint' ); ?></h3></div> |
| 382 | </div> |
| 383 | <div class="white-box-content no-padding"> |
| 384 | <div class="sub-section-row"> |
| 385 | <div class="sub-section-label"> |
| 386 | <h3><?php esc_html_e( 'Set Page URLs', 'latepoint' ) ?></h3> |
| 387 | </div> |
| 388 | <div class="sub-section-content"> |
| 389 | <?php echo OsFormHelper::text_field( 'settings[page_url_customer_dashboard]', __( 'Customer Dashboard Page URL', 'latepoint' ), OsSettingsHelper::get_customer_dashboard_url( false ), [ 'theme' => 'simple' ] ); ?> |
| 390 | <?php echo OsFormHelper::text_field( 'settings[page_url_customer_login]', __( 'Customer Login Page URL', 'latepoint' ), OsSettingsHelper::get_customer_login_url( false ), [ 'theme' => 'simple' ] ); ?> |
| 391 | </div> |
| 392 | </div> |
| 393 | </div> |
| 394 | </div> |
| 395 | <?php |
| 396 | /** |
| 397 | * Plug before "Other" section in general settings |
| 398 | * |
| 399 | * @since 5.1.0 |
| 400 | * @hook latepoint_settings_general_before_other |
| 401 | * |
| 402 | */ |
| 403 | do_action( 'latepoint_settings_general_before_other' ); ?> |
| 404 | <div class="white-box section-anchor" id="stickySectionOther"> |
| 405 | <div class="white-box-header"> |
| 406 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Other', 'latepoint' ); ?></h3></div> |
| 407 | </div> |
| 408 | <div class="white-box-content no-padding"> |
| 409 | <div class="sub-section-row"> |
| 410 | <div class="sub-section-label"> |
| 411 | <h3><?php esc_html_e( 'Business Information', 'latepoint' ) ?></h3> |
| 412 | </div> |
| 413 | <div class="sub-section-content"> |
| 414 | <div class="os-row os-mb-2"> |
| 415 | <div class="os-col-lg-12"> |
| 416 | <?php echo OsFormHelper::media_uploader_field( 'settings[business_logo]', 0, __( 'Company Logo', 'latepoint' ), __( 'Remove Image', 'latepoint' ), OsSettingsHelper::get_settings_value( 'business_logo' ) ); ?> |
| 417 | </div> |
| 418 | </div> |
| 419 | <div class="os-row"> |
| 420 | <div class="os-col-lg-3"> |
| 421 | <?php echo OsFormHelper::text_field( 'settings[business_name]', __( 'Company Name', 'latepoint' ), OsSettingsHelper::get_settings_value( 'business_name' ), [ 'theme' => 'simple' ] ); ?> |
| 422 | </div> |
| 423 | <div class="os-col-lg-3"> |
| 424 | <?php echo OsFormHelper::text_field( 'settings[business_phone]', __( 'Business Phone', 'latepoint' ), OsSettingsHelper::get_settings_value( 'business_phone' ), [ 'theme' => 'simple' ] ); ?> |
| 425 | </div> |
| 426 | <div class="os-col-lg-6"> |
| 427 | <?php echo OsFormHelper::text_field( 'settings[business_address]', __( 'Business Address', 'latepoint' ), OsSettingsHelper::get_settings_value( 'business_address' ), [ 'theme' => 'simple' ] ); ?> |
| 428 | </div> |
| 429 | </div> |
| 430 | </div> |
| 431 | </div> |
| 432 | <div class="sub-section-row"> |
| 433 | <div class="sub-section-label"> |
| 434 | <h3><?php esc_html_e( 'Calendar Settings', 'latepoint' ) ?></h3> |
| 435 | </div> |
| 436 | <div class="sub-section-content"> |
| 437 | <?php echo OsFormHelper::text_field( 'settings[day_calendar_min_height]', __( 'Minimum height of a daily calendar (in pixels)', 'latepoint' ), OsSettingsHelper::get_day_calendar_min_height(), [ 'theme' => 'simple' ] ); ?> |
| 438 | |
| 439 | |
| 440 | <div class="latepoint-message latepoint-message-subtle"><?php esc_html_e( 'You can use variables in your booking template, they will be replaced with a value for the booking. ', 'latepoint' ) ?><?php echo OsUtilHelper::template_variables_link_html(); ?></div> |
| 441 | <?php echo OsFormHelper::text_field( 'settings[booking_template_for_calendar]', __( 'Booking tile information to display on calendar', 'latepoint' ), OsSettingsHelper::get_booking_template_for_calendar(), [ 'theme' => 'simple' ] ); ?> |
| 442 | </div> |
| 443 | </div> |
| 444 | <div class="sub-section-row"> |
| 445 | <div class="sub-section-label"> |
| 446 | <h3><?php esc_html_e( 'Conversion Tracking', 'latepoint' ) ?></h3> |
| 447 | </div> |
| 448 | <div class="sub-section-content"> |
| 449 | <div class="latepoint-message latepoint-message-subtle"> |
| 450 | <div><?php esc_html_e( 'You can include some javascript or html that will be appended to the confirmation step. For example you can track ad conversions by triggering a tracking code or a facebook pixel. You can use these variables within your code. Click on the variable to copy.', 'latepoint' ); ?></div> |
| 451 | </div> |
| 452 | <div class="tracking-info-w"> |
| 453 | <div class="available-vars-w"> |
| 454 | <div class="available-vars-i"> |
| 455 | <div class="available-vars-block"> |
| 456 | <ul> |
| 457 | <li> |
| 458 | <span class="var-label"><?php esc_html_e( 'Order ID#:', 'latepoint' ); ?></span> |
| 459 | <span class="var-code os-click-to-copy">{{order_id}}</span> |
| 460 | </li> |
| 461 | <li> |
| 462 | <span class="var-label"><?php esc_html_e( 'Customer ID#:', 'latepoint' ); ?></span> |
| 463 | <span class="var-code os-click-to-copy">{{customer_id}}</span> |
| 464 | </li> |
| 465 | <li> |
| 466 | <span class="var-label"><?php esc_html_e( 'Order Total:', 'latepoint' ); ?></span> |
| 467 | <span class="var-code os-click-to-copy">{{order_total}}</span> |
| 468 | </li> |
| 469 | <li> |
| 470 | <span class="var-label"><?php esc_html_e( 'Service IDs#:', 'latepoint' ); ?></span> |
| 471 | <span class="var-code os-click-to-copy">{{service_ids}}</span> |
| 472 | </li> |
| 473 | <li> |
| 474 | <span class="var-label"><?php esc_html_e( 'Agent IDs#:', 'latepoint' ); ?></span> |
| 475 | <span class="var-code os-click-to-copy">{{agent_ids}}</span> |
| 476 | </li> |
| 477 | <li> |
| 478 | <span class="var-label"><?php esc_html_e( 'Bundle IDs#:', 'latepoint' ); ?></span> |
| 479 | <span class="var-code os-click-to-copy">{{bundle_ids}}</span> |
| 480 | </li> |
| 481 | <li> |
| 482 | <span class="var-label"><?php esc_html_e( 'Location IDs#:', 'latepoint' ); ?></span> |
| 483 | <span class="var-code os-click-to-copy">{{location_ids}}</span> |
| 484 | </li> |
| 485 | </ul> |
| 486 | </div> |
| 487 | </div> |
| 488 | </div> |
| 489 | <?php echo OsFormHelper::textarea_field( 'settings[confirmation_step_tracking_code]', false, OsSettingsHelper::get_settings_value( 'confirmation_step_tracking_code', '' ), array( |
| 490 | 'theme' => 'bordered', |
| 491 | 'rows' => 9, |
| 492 | 'placeholder' => __( 'Enter Tracking code here', 'latepoint' ) |
| 493 | ), [ 'class' => 'tracking-code-input-w' ] ); ?> |
| 494 | </div> |
| 495 | </div> |
| 496 | </div> |
| 497 | |
| 498 | <div class="sub-section-row"> |
| 499 | <div class="sub-section-label"> |
| 500 | <h3><?php esc_html_e( 'Data Tables', 'latepoint' ) ?></h3> |
| 501 | </div> |
| 502 | <div class="sub-section-content"> |
| 503 | <div class="os-row"> |
| 504 | <div class="os-col-lg-6"> |
| 505 | <?php echo OsFormHelper::toggler_field( 'settings[allow_non_admins_download_csv]', __( 'Allow non admins to download table data as csv', 'latepoint' ), OsSettingsHelper::is_on( 'allow_non_admins_download_csv' ), false, false, [ 'sub_label' => __( 'Only admins will be able to download table data as csv', 'latepoint' ) ] ); ?> |
| 506 | </div> |
| 507 | |
| 508 | <div class="os-col-lg-3"> |
| 509 | <?php echo OsFormHelper::select_field( 'settings[number_of_records_per_page]', __( 'Number of records per page', 'latepoint' ), [ 20, 50, 100, 200 ], OsSettingsHelper::get_settings_value( 'number_of_records_per_page', 20 ) ); ?> |
| 510 | </div> |
| 511 | </div> |
| 512 | </div> |
| 513 | </div> |
| 514 | <div class="sub-section-row"> |
| 515 | <div class="sub-section-label"> |
| 516 | <h3><?php esc_html_e( 'Activity Logs', 'latepoint' ) ?></h3> |
| 517 | </div> |
| 518 | <div class="sub-section-content"> |
| 519 | <div class="os-row"> |
| 520 | <div class="os-col-lg-12"> |
| 521 | <?php echo OsFormHelper::toggler_field( 'settings[should_clear_old_activity_log]', __( 'Automatically clear old activity logs', 'latepoint' ), OsSettingsHelper::is_on( 'should_clear_old_activity_log' ), false, false, [ 'sub_label' => __( 'Activity logs older than 6 months will be automatically deleted', 'latepoint' ) ] ); ?> |
| 522 | </div> |
| 523 | </div> |
| 524 | </div> |
| 525 | </div> |
| 526 | |
| 527 | <div class="sub-section-row"> |
| 528 | <div class="sub-section-label"> |
| 529 | <h3><?php esc_html_e( 'Improve LatePoint', 'latepoint' ) ?></h3> |
| 530 | </div> |
| 531 | <div class="sub-section-content"> |
| 532 | <div class="os-row"> |
| 533 | <div class="os-col-lg-12"> |
| 534 | <?php |
| 535 | $ctl_sub_label = __( 'Share how you use the plugin so we can build features that matter, fix issues faster, and make smarter decisions. %1$sLearn More%2$s', 'latepoint' ); |
| 536 | |
| 537 | $ctl_sub_label = sprintf( |
| 538 | $ctl_sub_label, |
| 539 | '<a href="https://latepoint.com/privacy-policy/" target="_blank" rel="noopener noreferrer">', |
| 540 | '</a>' |
| 541 | ); |
| 542 | |
| 543 | $ctl_option_value = get_option( 'latepoint_usage_optin', 'no' ); |
| 544 | $ctl_is_active = $ctl_option_value === 'yes' ? true : false; |
| 545 | |
| 546 | echo OsFormHelper::toggler_field( 'settings[contribute_to_latepoint]', __( 'Help shape the future of LatePoint', 'latepoint' ), $ctl_is_active, false, false, [ 'sub_label' => $ctl_sub_label ] ); ?> |
| 547 | </div> |
| 548 | </div> |
| 549 | </div> |
| 550 | </div> |
| 551 | <div class="sub-section-row"> |
| 552 | <div class="sub-section-label"> |
| 553 | <h3><?php esc_html_e( 'Export/Import', 'latepoint' ) ?></h3> |
| 554 | </div> |
| 555 | <div class="sub-section-content"> |
| 556 | <a |
| 557 | class="latepoint-btn latepoint-btn-grey latepoint-btn-outline" |
| 558 | target="_blank" |
| 559 | href="<?php echo OsRouterHelper::build_admin_post_link( |
| 560 | [ 'settings', 'export_data' ], |
| 561 | [ '_wpnonce' => wp_create_nonce( 'export_data' ) ] |
| 562 | ); ?>" |
| 563 | > |
| 564 | <i class="latepoint-icon latepoint-icon-external-link"></i> |
| 565 | <span><?php esc_html_e('Export Data'); ?></span> |
| 566 | </a> |
| 567 | <a data-os-lightbox-classes="width-700" data-os-action="<?php echo esc_attr(OsRouterHelper::build_route_name('settings', 'import_modal')); ?>" href="#" data-os-output-target="lightbox" class="latepoint-btn latepoint-btn-grey latepoint-btn-outline"><i class="latepoint-icon latepoint-icon-download"></i><span><?php esc_html_e('Import Data', 'latepoint'); ?></span></a> |
| 568 | </div> |
| 569 | </div> |
| 570 | |
| 571 | <?php |
| 572 | /** |
| 573 | * Plug after other general settings output |
| 574 | * |
| 575 | * @since 4.7.0 |
| 576 | * @hook latepoint_settings_general_other_after |
| 577 | * |
| 578 | */ |
| 579 | do_action( 'latepoint_settings_general_other_after' ); ?> |
| 580 | </div> |
| 581 | </div> |
| 582 | <?php |
| 583 | /** |
| 584 | * Plug after general settings output, before buttons |
| 585 | * |
| 586 | * @since 4.7.8 |
| 587 | * @hook latepoint_settings_general_after |
| 588 | * |
| 589 | */ |
| 590 | do_action( 'latepoint_settings_general_after' ); ?> |
| 591 | |
| 592 | <?php |
| 593 | /** |
| 594 | * Hidden plugin settings |
| 595 | * |
| 596 | * @since 5.2.10 |
| 597 | */ |
| 598 | if(isset($_GET['danger_zone'])) { ?> |
| 599 | <div class="white-box section-anchor" id="stickySectionOther"> |
| 600 | <div class="white-box-header"> |
| 601 | <div class="os-form-sub-header"><h3><?php esc_html_e( 'Danger Zone', 'latepoint' ); ?></h3></div> |
| 602 | </div> |
| 603 | <div class="white-box-content no-padding"> |
| 604 | |
| 605 | <!-- Cleanup Section --> |
| 606 | <div class="sub-section-row"> |
| 607 | <div class="sub-section-label"> |
| 608 | <h3><?php esc_html_e( 'Plugin Deletion', 'latepoint' ) ?></h3> |
| 609 | </div> |
| 610 | <div class="sub-section-content"> |
| 611 | <div class="os-row"> |
| 612 | <div class="os-col-lg-12"> |
| 613 | <?php |
| 614 | echo OsFormHelper::toggler_field( |
| 615 | 'settings[remove_data_on_plugin_delete]', |
| 616 | __( 'Remove all data on plugin deletion', 'latepoint' ), |
| 617 | OsSettingsHelper::is_on( 'remove_data_on_plugin_delete' ), |
| 618 | false, |
| 619 | false, |
| 620 | [ 'sub_label' => __( 'All LatePoint database tables and settings will be permanently deleted when the plugin is deleted', 'latepoint' ) ] |
| 621 | ); |
| 622 | ?> |
| 623 | </div> |
| 624 | </div> |
| 625 | <div class="latepoint-message latepoint-message-subtle"> |
| 626 | <?php esc_html_e( 'This action is irreversible. Before enabling this option, we recommend exporting your data so you have a backup.', 'latepoint' ); ?> |
| 627 | <a |
| 628 | target="_blank" |
| 629 | href="<?php echo esc_url( |
| 630 | OsRouterHelper::build_admin_post_link( |
| 631 | [ 'settings', 'export_data' ], |
| 632 | [ '_wpnonce' => wp_create_nonce( 'export_data' ) ] |
| 633 | ) |
| 634 | ); ?>" |
| 635 | > |
| 636 | <?php esc_html_e( 'Export your data', 'latepoint' ); ?> |
| 637 | </a> |
| 638 | </div> |
| 639 | </div> |
| 640 | </div> |
| 641 | </div> |
| 642 | </div> |
| 643 | |
| 644 | <?php } // Danger zone end. ?> |
| 645 | <div class="os-form-buttons"> |
| 646 | <?php echo OsFormHelper::button( 'submit', __( 'Save Settings', 'latepoint' ), 'submit', [ 'class' => 'latepoint-btn' ] ); ?> |
| 647 | </div> |
| 648 | </div> |
| 649 | <div class="latepoint-page-side-nav"> |
| 650 | <div class="side-nav-actions"> |
| 651 | <button type="submit" class="latepoint-btn latepoint-btn-block"><i class="latepoint-icon latepoint-icon-check"></i><span><?php _e( 'Save Changes', 'latepoint' ); ?></span></button> |
| 652 | </div> |
| 653 | <div class="side-nav-body"> |
| 654 | <div><a href="#stickySectionAppointment" class="is-active"><?php esc_html_e( 'Appointments', 'latepoint' ); ?></a></div> |
| 655 | <div><a href="#stickySectionRestrictions"><?php esc_html_e( 'Restrictions', 'latepoint' ); ?></a></div> |
| 656 | <div><a href="#stickySectionCurrency"><?php esc_html_e( 'Currency & Price', 'latepoint' ); ?></a></div> |
| 657 | <div><a href="#stickySectionPhone"><?php esc_html_e( 'Phone', 'latepoint' ); ?></a></div> |
| 658 | <div><a href="#stickySectionAvailability"><?php esc_html_e( 'Availability Logic', 'latepoint' ); ?></a></div> |
| 659 | <div><a href="#stickySectionCustomer"><?php esc_html_e( 'Customers', 'latepoint' ); ?></a></div> |
| 660 | <div><a href="#stickySectionSetup"><?php esc_html_e( 'Setup Pages', 'latepoint' ); ?></a></div> |
| 661 | <?php |
| 662 | |
| 663 | /** |
| 664 | * Sticky menu items links for the general settings |
| 665 | * |
| 666 | * @since 5.1.94 |
| 667 | * @hook latepoint_general_settings_sticky_section_items |
| 668 | * |
| 669 | * @param {array} $sticky_menu_items items that go into sticky menu on the right of settings, in format ['href' => '', 'label' => ''] |
| 670 | * @returns {array} The filtered array of sticky menu items |
| 671 | */ |
| 672 | $before_other_items = apply_filters('latepoint_general_settings_sticky_section_items', []); |
| 673 | foreach($before_other_items as $item){ |
| 674 | echo '<div><a href="#'.esc_attr($item['href']).'">'.esc_html( $item['label'] ).'</a></div>'; |
| 675 | } |
| 676 | ?> |
| 677 | <div><a href="#stickySectionOther"><?php esc_html_e( 'Other', 'latepoint' ); ?></a></div> |
| 678 | </div> |
| 679 | |
| 680 | </div> |
| 681 | </div> |
| 682 | </form> |
| 683 |