PageSourceSearch

https://www.archiviodiocesano.it/wp-content/themes/wp-starter-so/wp-advanced-search/js/scripts.js

js archiviodiocesano.it collected 2026-09-25 04:42:03 UTC 9,027 bytes, 305 lines download raw bytes

1// Global constants
2var __WPAS = {
3    FORM : "#wp-advanced-search.wpas-ajax-enabled",
4    CONTAINER : "#wpas-results",
5    INNER : "#wpas-results-inner",
6    DEBUG_CONTAINER : "#wpas-debug",
7    PAGE_FIELD : "#wpas-paged",
8    FORM_ID: "",
9    KEY_PREFIX: "wpasInstance_",
10    HASH: "",
11    STORAGE_KEY: function() {
12        return this.KEY_PREFIX + this.FORM_ID;
13    }
14};
15
16jQuery(document).ready(function($) {
17
18    __WPAS.FORM_ID = $('#wpas-id').val();
19    __WPAS.HASH = $(__WPAS.FORM).data('ajax-url-hash');
20    var CURRENT_PAGE = 1;
21
22    /**
23     *  Event listeners
24     */
25
26    $('form.wpas-autosubmit :input').change(function() {
27        $(this).parents('form').submit();
28    });
29
30    $('button.wpas-clear').click(function(e) {
31        e.preventDefault();
32        $(this).parents('form').find(':input')
33            .not(':button, :submit, :reset, :hidden')
34            .val('')
35            .removeAttr('checked')
36            .removeAttr('selected');
37        $(this).parents('form.wpas-autosubmit').each(function() {
38            $(this).submit();
39            return false;
40        });
41    });
42
43    $('input.wpas-reset').click(function(e){
44        e.preventDefault();
45        $(this).parents('form')[0].reset();
46        $(this).parents('form.wpas-autosubmit').each(function() {
47            $(this).submit();
48            return false;
49        });
50    });
51
52    /**
53     *  AJAX Functionality
54     */
55
56    if ($(__WPAS.FORM).length == 0) {
57        log("No AJAX-enabled WPAS search form detected on page.");
58        return;
59    }
60
61    if ($(__WPAS.CONTAINER).length == 0) {
62        log("No container with ID #wpas-results found on page.  Results cannot be shown");
63        return;
64    }
65
66    var DEBUG_ON = ($(__WPAS.FORM).hasClass('wpas-debug-enabled')) ? true : false;
67    var SHOW_DEFAULT = ($(__WPAS.FORM).data('ajax-show-default')) ? true : false;
68
69    var T = (DEBUG_ON) ? 500 : 0;
70
71    if (DEBUG_ON && $(__WPAS.DEBUG_CONTAINER).length == 0) {
72        log("WPAS_DEBUG is enabled but no container with ID #wpas-debug was found " +
73        "on this page.  Debug information cannot be shown.");
74        return;
75    }
76
77    var ajaxLoader = {
78        container: "wpas-load",
79        load_btn: "wpas-load-btn",
80        load_btn_text: "",
81        load_img: "wpas-loading-img",
82        load_img_url: "",
83        init : function(form) {
84            this.load_btn_text = $(form).data('ajax-button');
85            this.load_img_url = $(form).data('ajax-loading');
86            $(__WPAS.CONTAINER).append(this.create());
87        },
88
89        create: function() {
90            var html = "<div id='wpas-load'>";
91            html += "<div><img id='"+this.load_img+"' style='display:none;' src='"+this.load_img_url+"'></div>";
92            html += "<div><button id='"+this.load_btn+"' style='display:none;'>"+this.load_btn_text+"</button></div>";
93            html += "</div>";
94            return html;
95        },
96
97        showButton: function() {
98            $('#'+this.load_btn).addClass('active').show();
99        },
100
101        hideButton: function() {
102            $('#'+this.load_btn).removeClass('active').hide();
103        },
104
105        showImage: function() {
106            $('#'+this.load_img).show();
107        },
108
109        hideImage: function() {
110            $('#'+this.load_img).hide();
111        }
112
113    };
114
115    $(__WPAS.CONTAINER).append("<div id='wpas-results-inner'></div>");
116    ajaxLoader.init(__WPAS.FORM);
117
118    var storage = null;
119    if (window.location.hash.slice(1) == __WPAS.HASH) {
120        storage = JSON.parse(localStorage.getItem("wpasInstance_"+__WPAS.FORM_ID));
121    }
122
123    if (storage != null) {
124        log("localStorage found");
125        loadInstance();
126    } else {
127        setPage(1);
128        setRequest($(__WPAS.FORM).serialize());
129    }
130
131    if ($(__WPAS.CONTAINER).length != 0) {
132        if (storage != null) {
133            $(__WPAS.CONTAINER).html(storage.results);
134        } else if (SHOW_DEFAULT) { // Show results by default if attribute is set
135            sendRequest($(__WPAS.FORM).serialize(), CURRENT_PAGE);
136        }
137    }
138
139    // Submits the form
140    // Reset current page to 1
141    function submitForm(form) {
142        setPage(1);
143        var form_data = $(form).serialize();
144        setRequest(form_data);
145        $(__WPAS.INNER).empty();
146        sendRequest(form_data, CURRENT_PAGE);
147    }
148
149    // Set AJAX request to fetch results
150    // Appends results to the container
151    function sendRequest(data, page) {
152        ajaxLoader.hideButton();
153        ajaxLoader.showImage();
154        jQuery.ajax({
155            type: 'POST',
156            url: '/wp-admin/admin-ajax.php',
157            data: {
158                action: 'wpas_ajax_load',
159                page: page,
160                form_data: data
161            },
162            success: function(data, textStatus, XMLHttpRequest) {
163                response = JSON.parse(data);
164                setTimeout(function() {
165                    appendHTML(__WPAS.INNER, response.results);
166                    ajaxLoader.hideImage();
167                    updateHTML(__WPAS.DEBUG_CONTAINER,response.debug);
168                    CURRENT_PAGE = response.current_page;
169                    var max_page = response.max_page;
170
171                    log("Current Page: "+CURRENT_PAGE+", Max Page: "+max_page);
172
173                    if (max_page == 0 || CURRENT_PAGE == max_page) {
174                        ajaxLoader.hideButton();
175                    } else {
176                        ajaxLoader.showButton();
177                    }
178
179                    window.location.hash = __WPAS.HASH;
180                    storeInstance();
181                    unlockForm();
182
183                }, T);
184
185            },
186            error: function(MLHttpRequest, textStatus, errorThrown){
187                console.log(errorThrown);
188            }
189        });
190    }
191
192    function storeInstance() {
193        var instance = { request: REQUEST_DATA, form: getFormValues(), results : getResults(), page: CURRENT_PAGE  };
194        instance = JSON.stringify(instance);
195        localStorage.setItem(__WPAS.STORAGE_KEY(), instance);
196    }
197
198    function addArrayValues(values, input) {
199        var name = $(input).attr('name');
200        var value = $(input).val();
201
202        if (typeof values[name] == 'undefined') {
203            values[name] = [];
204        }
205
206        if ($(input).is(":checked")) values[name].push(value);
207
208        return values;
209    }
210
211    function getFormValues() {
212        var values = {};
213        $(__WPAS.FORM).find(':input').not(':button, :submit, :reset').each(function() {
214            if ($(this).attr('type') == 'checkbox') {
215                values = addArrayValues(values, this)
216            } else {
217                values[$(this).attr('name')] = $(this).val();
218            }
219        });
220        return values;
221    }
222
223    function getResults() {
224        return $(__WPAS.CONTAINER).html();
225    }
226
227    function loadInstance() {
228        var instance = localStorage.getItem(__WPAS.STORAGE_KEY());
229        instance = JSON.parse(instance);
230        if (instance == null) return;
231        if (instance.form) loadForm(instance.form);
232        if (instance.results) loadResults(instance.results);
233        if (instance.page) setPage(instance.page);
234        if (instance.request) setRequest(instance.request);
235    }
236
237    function loadForm(form_values) {
238        $(__WPAS.FORM).find(':input').not(':button, :submit, :reset').each(function() {
239            var value = form_values[$(this).attr('name')];
240            if ($(this).attr('type') == 'checkbox') {
241                if (value.indexOf( $(this).val() ) >= 0) {
242                    $(this).prop('checked',true);
243                } else {
244                    $(this).prop('checked',false);
245                }
246            } else {
247                $(this).val(value);
248            }
249        });
250    }
251
252    function loadResults(results) {
253        $(__WPAS.CONTAINER).html(results);
254    }
255
256    function lockForm() {
257        $(__WPAS.FORM).addClass('wpas-locked');
258        $(__WPAS.FORM).find('input:submit').attr('disabled', 'disabled');
259    }
260
261    function formLocked() {
262        return $(__WPAS.FORM).hasClass('wpas-locked');
263    }
264
265    function unlockForm() {
266        $(__WPAS.FORM).removeClass('wpas-locked');
267        $(__WPAS.FORM).find('input:submit').removeAttr('disabled');
268    }
269
270    function appendHTML(el, content) {
271        $(el).append(content);
272    }
273
274    function updateHTML(el, content) {
275        $(el).html(content);
276    }
277
278    function setPage(pagenum) {
279        CURRENT_PAGE = pagenum;
280        $(__WPAS.PAGE_FIELD).val(pagenum);
281    }
282
283    function setRequest(request) {
284        REQUEST_DATA = request;
285    }
286
287    function log(msg) {
288        if (DEBUG_ON) console.log("WPAS: " + msg);
289    }
290
291    // AJAX Event Listeners
292
293    $(__WPAS.FORM).submit(function(e) {
294        e.preventDefault();
295        if (formLocked()) return;
296        lockForm();
297        submitForm(this);
298    });
299
300    $(document).on('click', '#'+ajaxLoader.load_btn+'.active', function(e){
301        setPage(parseInt(CURRENT_PAGE) + 1)
302        sendRequest(REQUEST_DATA,CURRENT_PAGE);
303    });
304
305});

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.