PageSourceSearch

https://keyishoes.co.uk/wp-content/plugins/bookly-addon-pro/backen…/resources/js/staff-advanced.js?ver=9.6

js keyishoes.co.uk collected 2026-10-04 22:53:15 UTC 7,926 bytes, 196 lines download raw bytes

1(function ($) {
2
3    var Advanced = function ($container, options) {
4        let obj = this,
5            hash = window.location.href.split('#')
6        ;
7
8        jQuery.extend(obj.options, options);
9
10        if (hash.length > 1) {
11            if (hash[1] === 'zoom-failed') {
12                obj.options.booklyAlert({error: [obj.options.l10n.zoomFailed]});
13                if ('pushState' in history) {
14                    history.pushState('', document.title, hash[0]);
15                }
16            }
17        }
18
19        let $form = $('form', $container),
20            $unsaved_changes = $('.bookly-js-unsaved-changes'),
21            $unsaved_changes_save = $('.bookly-js-save-changes', $unsaved_changes),
22            $unsaved_changes_ignore = $('.bookly-js-ignore-changes', $unsaved_changes),
23            has_changes = false
24        ;
25
26        $container
27        .on('change', 'select,input,textarea', function () {
28            has_changes = true;
29        })
30        .on('click', '.bookly-js-google-calendar-row a', function (e) {
31            var url = $(this).attr('href');
32            if (has_changes) {
33                e.preventDefault();
34                $unsaved_changes.booklyModal('show');
35                $unsaved_changes.data('url', url);
36            }
37        })
38        .on('click', '.bookly-js-outlook-calendar-row a', function (e) {
39            var url = $(this).attr('href');
40            if (has_changes) {
41                e.preventDefault();
42                $unsaved_changes.booklyModal('show');
43                $unsaved_changes.data('url', url);
44            }
45        })
46        .on('change', '[name=google_calendar_id]', function () {
47            let $calendar_list = $(this).closest('.bookly-js-google-calendars-list'),
48                $spinner = $calendar_list.find('.spinner-border'),
49                $warning = $calendar_list.find('.bookly-js-duplicate-calendar-warning');
50
51            $warning.hide();
52            $spinner.show();
53            $.ajax({
54                url: ajaxurl,
55                type: 'POST',
56                data: {
57                    action: 'bookly_pro_check_google_calendars',
58                    staff_id: obj.options.get_staff_advanced.staff_id,
59                    csrf_token: BooklyL10nGlobal.csrf_token,
60                    calendar_id: this.value,
61                },
62                dataType: 'json',
63                success: function (response) {
64                    $spinner.hide();
65                    if (!response.success) {
66                        $warning.show();
67                    }
68                }
69            });
70        })
71        .on('change', '[name=google_disconnect]', function () {
72            has_changes = true;
73            $('.bookly-js-google-calendars-list', $form).toggle(!this.checked);
74        }).on('change', '[name=outlook_disconnect]', function () {
75            has_changes = true;
76            $('.bookly-js-outlook-calendars-list', $form).toggle(!this.checked);
77        })
78        // Save staff member details.
79        .on('click', '#bookly-advanced-save', function (e) {
80            e.preventDefault();
81            let ladda = Ladda.create(this);
82            ladda.start();
83            saveAdvanced(function (response) {
84                ladda.stop();
85                if (response.success) {
86                    obj.options.saving({success: [obj.options.l10n.saved]});
87                }
88            });
89        })
90        .on('change', '[name="zoom_authentication"]', function () {
91            $('.bookly-js-zoom-settings', $form).toggle(false);
92            $('.bookly-js-zoom-' + this.value, $form).toggle(true);
93            obj.options.validation(this.value === 'oauth' && $('.bookly-js-zoom-disconnected').is(":visible"), obj.options.l10n.zoomOAuthConnectRequired);
94        })
95        .on('change', '[name="icalendar"]', function () {
96            $('#bookly-icalendar-days-offset').toggle(this.value === '1');
97        })
98        .on('focus', '#bookly-icalendar-url', function () {
99            $(this).select();
100        })
101        .on('click', '[type="reset"]', function (e) {
102            $form[0].reset();
103            has_changes = false;
104            $('[name="zoom_authentication"]:checked', $form).trigger('change');
105            $('[name="icalendar"]:checked', $form).trigger('change');
106        })
107        .on('click', '.bookly-js-zoom_oauth_connect', function (e) {
108            e.preventDefault();
109            $.ajax({
110                url: ajaxurl,
111                type: 'POST',
112                data: {
113                    action: 'bookly_pro_get_zoom_authorization_url',
114                    staff_id: obj.options.get_staff_advanced.staff_id,
115                    csrf_token: BooklyL10nGlobal.csrf_token,
116                    layout: obj.options.get_staff_advanced.layout,
117                    page_url: document.URL.split('#')[0]
118                },
119                dataType: 'json',
120                success: function (response) {
121                    if (response.success) {
122                        window.location.href = response.data.authorization_url;
123                    }
124                }
125            });
126        });
127
128        $('.bookly-js-zoom-' + $('[name="zoom_authentication"]', $form).val(), $form).show();
129
130        $unsaved_changes_ignore.off().on('click', function () {
131            window.location.href = $unsaved_changes.data('url');
132        });
133        $unsaved_changes_save.off().on('click', function () {
134            let ladda = Ladda.create(this);
135            ladda.start();
136            saveAdvanced(function (response) {
137                if (response.success) {
138                    window.location.href = $unsaved_changes.data('url');
139                } else {
140                    obj.options.saving({error: [response.data.error]});
141                }
142                ladda.stop();
143            });
144        });
145
146        if (typeof window.booklyInitCopyToClipboard === 'function') {
147            window.booklyInitCopyToClipboard($('.bookly-js-copy-to-clipboard', $form));
148        }
149
150        function saveAdvanced(callback) {
151            let data = $form.serializeArray();
152            data.push({name: 'action', value: 'bookly_pro_update_staff_advanced'});
153            data.push({name: 'csrf_token', value: BooklyL10nGlobal.csrf_token});
154            data.push({name: 'staff_id', value: obj.options.get_staff_advanced.staff_id});
155            $.ajax({
156                type: 'POST',
157                url: ajaxurl,
158                data: data,
159                dataType: 'json',
160                xhrFields: {withCredentials: true},
161                crossDomain: 'withCredentials' in new XMLHttpRequest(),
162                success: function (response) {
163                    if (obj.options.get_staff_advanced.layout === 'frontend') {
164                        let $disconnected = $('.bookly-js-zoom-connected', $container);
165                        if ($('input:checked', $disconnected).length > 0) {
166                            $disconnected.hide();
167                            $('.bookly-js-zoom-disconnected', $container).show();
168                            $('#zoom_authentication').val('default').trigger('change');
169                        }
170                    }
171                    obj.options.booklyAlert(response.data.alerts);
172                    has_changes = false;
173                    callback(response);
174                }
175            });
176        }
177    };
178
179    Advanced.prototype.options = {
180        get_staff_advanced: {
181            action: 'bookly_pro_get_staff_advanced',
182            staff_id: -1,
183            layout: 'backend'
184        },
185        l10n: {},
186        booklyAlert: window.booklyAlert,
187        validation: function (has_error, info) {
188            $(document.body).trigger('staff.validation', ['staff-advanced', has_error, info]);
189        },
190        saving: function (alerts) {
191            $(document.body).trigger('staff.saving', [alerts]);
192        },
193    };
194
195    window.BooklyStaffAdvanced = Advanced;
196})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.