PageSourceSearch

https://www.clovekvtisni.cz/js/fadmin.tiles.js?ts=1787725145

js clovekvtisni.cz collected 2026-10-02 02:21:00 UTC 10,347 bytes, 272 lines download raw bytes

1/**
2 * functions used to work with tiles 
3 */
4
5/**
6 * @type string[] all classes that represent tile aligment on page
7 */
8var TILE_ALIGMENT_CLASSES = ['left', 'left-center', 'center', 'right-center', 'right'];
9
10// contains all tiles that have been removed from medium and must be removed from server
11var tilesToDelete = [];
12
13/**
14 * packs tiles for save on server
15 */
16function packTiles() {
17    // removes content from tiles to save space
18    $('div[data-tile-type]').each(
19            function (index, elem) {
20                var elem = $(elem);
21                var doNotPack = elem.data("tile-do-not-pack");
22                if (!doNotPack) {
23                    $(elem).empty();
24                }
25            }
26    );
27
28    // delete all removed tiles from server
29    for(var i=0; i < tilesToDelete.length; i++) {
30        var removeTileData = tilesToDelete[i];
31        $.post(ajaxRemoveTileControllerURL, 
32                removeTileData,
33                function (response, status, jqXHR) {
34                    if (response.result == 'ok') {
35                    } else {
36                        alert(response.error);
37                    }
38                }
39        );
40    }
41}
42
43function reloadTiles(editable) {
44    if (typeof editable == "undefined" || editable === null) {
45        editable = false;
46    }
47    $('div[data-tile-type]').each(
48            function (index, elem) {
49                var elem = $(elem);
50                // test if do not pack required for this tile
51                // if data-tile-do-not-pack attribure is present and value 1 then do net remove content of tile or reload data as id contain all necessaray data and this data is startic
52                var doNotPack = elem.data("tile-do-not-pack");
53                if(doNotPack) {
54                    if (!editMode) { // value set in views/footer-gs-scripts-common_[edit|web].tmpl
55                        elem.find(".js-tile-control").remove(); // only remove controls from tile
56                    }
57                    return;
58                }
59
60                var url = ajaxReloadTileControllerURL;
61                var tileAlign = getTileAlign(elem);
62                var id = elem.attr('data-tile-data-id');
63                var data = {'type': elem.attr("data-tile-type"), 'id': elem.attr('data-tile-data-id'), 'editable': Number(editable), 'tileAlign': tileAlign};
64                $.get(url, {'tile': data},
65                        function (response, status, xhr) {
66                            var type = xhr.getResponseHeader("content-type") || "";
67                            var dataType = "";
68                            if (type.indexOf('html') > -1) {
69                                dataType = 'html';
70                            }
71                            if (type.indexOf('json') > -1) {
72                                dataType = 'json';
73                            }
74                            //HTML - tile
75                            if (dataType == 'html') {
76                                elem.before($(response));
77
78                                elem.remove();
79
80                                //json error
81                            } else if (dataType == 'json') {
82                                //console.log(response);
83                                if (response.display) {
84                                    elem.append('<button onclick="removeTile(this)"> Remove Tile</button>' + "\n " + response.text);
85                                } else {
86                                    elem.hide();
87                                }
88                            }
89
90                        });
91
92            }
93    );
94}
95
96function removeTile(el) {
97    // store info to delete tile from server
98    var tile = $(el).closest('div[data-tile-type]');
99    tilesToDelete.push({'type': tile.attr("data-tile-type"), 'id': tile.attr('data-tile-data-id')});
100    
101    // remove from medium
102    if( $(el).parent().hasClass('tripple-tile') ) { // is set in tripple
103        $(el).replaceWith('<div class="tile" onclick="setTileInTripple($(this));"></div>');
104    } else {
105        tile.remove();
106    }
107    
108    fadmin_editableContentChaged();
109}
110
111function getTileAlign(tile) {
112    tile = $(tile);
113    for (var i = 0; i < TILE_ALIGMENT_CLASSES.length; i++) {
114        var align = TILE_ALIGMENT_CLASSES[i];
115        if (tile.hasClass(align)) {
116            return align;
117        }
118    }
119    return 'center';
120}
121
122function setTileAlign(tile, tileAlign) {
123    tile = $(tile);
124    for (var i = 0; i < TILE_ALIGMENT_CLASSES.length; i++) {
125        tile.removeClass(TILE_ALIGMENT_CLASSES[i]);
126    }
127    tile.addClass(tileAlign);
128    fadmin_editableContentChaged();
129}
130
131function tileFormReset() {
132    $('#fadmin-tile-form')[0].reset();
133}
134
135var _filterContactsRequestTimeout = null;
136
137function ajaxTileFilterContactsForm() {
138    var form = $('#tabs-tiles-tile-contact input');
139
140    var url = ajaxFilterTileContactsURL;
141
142    if (_filterContactsRequestTimeout !== null) {
143        clearTimeout(_filterContactsRequestTimeout);
144        _filterContactsRequestTimeout = null;
145    }
146    var reloadFunc = function () {
147        $.get(url, form.serialize(), function (response) {
148            var resultHtml = "";
149            var data = response.data;
150
151            for(var i=0; i < data.page.length; i++) {
152                var element = data.page[i];
153                resultHtml += '<li class="fadmin__widgets-list__item" onclick="selectTileContact('+ element.i
153d +', $(this).find(\'.fadmin__widgets-list__item__name\').html() )" >' // is done in this manner to avoid problem with "
154                    +'<span class="fadmin__widgets-list__item__id">'+ element.id +'</span>'
155                    +'<span class="fadmin__widgets-list__item__name">'+ element.name +'</span>'
156                    +'</li>';
157            }
158
159            $('#tabs-tiles-tile-contact .js-results-container').html(resultHtml);
160            $('#tabs-tiles-tile-contact .js-results-count').html(data.totalCount);
161
162            _filterContactsRequestTimeout = null;
163        });
164    };
165    _filterContactsRequestTimeout = setTimeout(reloadFunc, 200);
166}
167
168function selectTileContact(id, name) {
169    $('#tabs-tiles-tile-contact [name="contactId"]').val(id);
170    $('#tabs-tiles-tile-contact .js-selected-contact-container').html(""+ id +" - "+ name);
171}
172
173function ajaxFilterJobOffersForm() {
174    var form = $('#fadmin-tile-form');
175
176    var url = ajaxFilterTileJobOffersURL;
177    $.get(url, form.serialize(), function (response) {
178        var resultHtml = "";
179        var data = response.data;
180        
181        for(var i=0; i < data.page.length; i++) {
182            var element = data.page[i];
183            resultHtml += '<li class="fadmin__widgets-list__item" onclick="selectJobOffer('+ element.id +', $(this).find(\'.fadmin__widgets-list__item__name\').html() )" >' // is done in this manner to avoid problem with "
184                +'<span class="fadmin__widgets-list__item__id">'+ element.id +'</span>'
185                +'<span class="fadmin__widgets-list__item__name">'+ element.name +'</span>'
186            +'</li>';
187        }
188        
189        $('#js-job-offer-search-results-container').html(resultHtml);
190        $('#js-job-offer-search-results-count').html(data.totalCount);
191    });
192}
193
194function selectJobOffer(id, name) {
195    $('#fadmin-tile-form [name="jobOfferId"]').val(id);
196    $('#fadmin-tile-form .js-selected-job-order-container').html(""+ id +" - "+ name);
197}
198
199
200function ajaxFilterPublicationForm() {
201    var form = $('#fadmin-tile-form');
202    
203    var url = ajaxFilterTilePublicationsURL;
204    $.post(url, form.serialize(), function (response) {
205        var resultHtml = "";
206        var data = response.data;
207        
208        for(var i=0; i < data.page.length; i++) {
209            var element = data.page[i];
210            resultHtml += '<li class="fadmin__widgets-list__item" onclick="selectPublication('+ element.id +', $(this).find(\'.fadmin__widgets-list__item__name\').html() )" >' // is done in this manner to avoid problem with "
211                +'<span class="fadmin__widgets-list__item__id">'+ element.id +'</span>'
212                +'<span class="fadmin__widgets-list__item__name">'+ element.name +'</span>'
213            +'</li>';
214        }
215        
216        $('#publication-pined-publications-search-form-results-container').html(resultHtml);
217        $('#publication-pined-publications-search-form-results-count').html(data.totalCount);
218    });
219}
220
221function selectPublication(id, name) {
222    $('#fadmin-tile-form [name="publicationId"]').val(id);
223    $('#fadmin-tile-form .js-selected-publication-container').html(""+ id +" - "+ name);
224}
225
226function setTileInTripple(that) {
227    var params = {};
228    fadmin_setLoading();
229    $.get(ajaxGetTileFormControllerURL, params, function (data) {
230        // shows popup
231        fadminPopup.showHTML(data);
232        $('#fadmin-gs-add-tile-form__btn').click(function (e) {
233            e.preventDefault();
234            var url = ajaxSaveTileControllerURL;
235            var form = $('#fadmin-tile-form');
236            var serialized = serializeFormToObject(form);
237            $.post(url, {'formData': serialized},
238                    function (response, status, xhr) {
239                        var type = xhr.getResponseHeader("content-type") || "";
240                        var dataType = "";
241                        if (type.indexOf('html') > -1) {
242                            dataType = 'html';
243                        }
244                        if (type.indexOf('json') > -1) {
245                            dataType = 'json';
246                        }
247                        //console.log(dataType)
248                        if (dataType == 'html') {
249                            //if (response.result == 'ok') {
250                            var responseHTML = response;
251
252                            //that.insertTile(responseHTML);
253
254                            that.replaceWith(responseHTML);
255
256                            fadminPopup.hide();
257                            
258                            fadmin_editableContentChaged();
259                        } else if (dataType == 'json') {
260                            if (response.result == 'error') {
261                                //TODO: lepší zobrazovaní chyb
262                                alert(response.error);
263                            }
264
265                        }
266                    });
267            //*/
268        });
269    });
270
271}
272

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.