PageSourceSearch

https://all4tele.com/js/tygh/tabs.js?ver=1779796988

js all4tele.com collected 2026-10-04 23:37:07 UTC 9,043 bytes, 248 lines download raw bytes

1(function(_, $) {
2
3    (function($){
4
5        function _getTabTools(id)
6        {
7            return $('.cm-tab-tools[id^="tools_' + id + '"]');
8        }
9
10        function _getTabIds(id)
11        {
12            var result_ids = ['content_' + id];
13            var additional_ids = $('#content_' + id).data('caTabTargetId');
14            if (additional_ids) {
15                result_ids.push(additional_ids);
16            }
17            _getTabTools(id).each(function() {
18                result_ids.push($(this).prop('id'));
19            });
20
21            return result_ids.join(',');
22        }
23
24        function _switchTab(tab_id, tabs_elm, show)
25        {
26            var id_obj = $('#content_' + tab_id);
27            var tab_tools = _getTabTools(tab_id);
28
29            if (show) {
30                id_obj.removeClass('hidden');
31                tab_tools.removeClass('hidden');
32
33                if (id_obj.hasClass('cm-hide-save-button')) {
34                    $('.cm-save-buttons').addClass('hidden');
35                } else {
36                    $('.cm-save-buttons').removeClass('hidden');
37                }
38
39                var editors = $(id_obj).find('textarea.cm-wysiwyg');
40                if (editors.length) {
41                    editors.each(function(){
42                        $(this).ceEditor('destroy');
43                        $(this).ceEditor('recover');
44                    });
45                }
46
47                $.ceEvent('trigger', 'ce.tab.show', [tab_id, tabs_elm]);
48            } else {
49                id_obj.addClass('hidden');
50                tab_tools.addClass('hidden');
51            }
52
53            return true;
54        }
55
56        function _cloneTools(tab_id, prev_id)
57        {
58            if (!tab_id || !prev_id) {
59                return;
60            }
61
62            var _prev_tools = _getTabTools(prev_id);
63            _prev_tools.each(function() {
64                var self = $(this);
65                var _new_id = self.prop('id').replace(prev_id, tab_id);
66
67                if (!$('#' + _new_id).length) {
68                    var _new_tool = self.clone();
69                    _new_tool.children().remove();
70                    _new_tool.prop('id', _new_id).addClass('hidden').appendTo(self.parent());
71                }
72            });
73
74        }
75
76        var methods = {
77            switch: function(tab_id) {
78                if (!tab_id) {
79                    return false;
80                }
81                
82                var tabs_elm = $(this);
83                var ul = tabs_elm.data('ceTabs').ul;
84                var elm = tabs_elm.data('ceTabs').tabs[tab_id];
85
86                if (!ul || !elm) {
87                    return false;
88                }
89
90                // we set selected_section to keep active tab opened after form submit
91                // we do it for all forms to fix settings_dev situation: forms under tabs
92                if ($(tabs_elm).hasClass('cm-track')) {
93                    $('input[name=selected_section]').val(tab_id);
94                }
95
96                if (elm.hasClass('cm-js') == false) {
97                    return false;
98                }
99
100                var active_id = $('li.active:first', ul).prop('id');
101                var content_id = 'content_' + tab_id;
102
103                $('li', ul).each(function() {
104                    var self = $(this);
105                    self.removeClass('active');
106                    _switchTab(self.prop('id'), tabs_elm, false);
107                });
108
109                //Select clicked tab and show content
110                elm.addClass('active');
111                var sub_tab = elm.parents('.cm-subtabs', ul);
112
113                if (sub_tab.length && elm.hasClass('cm-no-highlight')) {
114                    sub_tab.addClass('active');
115                }
116                
117                if (elm.hasClass('cm-ajax-onclick') && !elm.hasClass('cm-ajax-onclick-active')) {
118                    $.ceAjax('request', $('a', elm).prop('href'), {result_ids: _getTabIds(tab_id), callback: function (data){
119                        _switchTab(tab_id, tabs_elm, true);
120                    }});
121                    elm.addClass('cm-ajax-onclick-active');
122                    return true;
123                }
124
125                if (elm.hasClass('cm-ajax-onclick-active')) {
126                    _switchTab(tab_id, tabs_elm, true);
127                    return true;
128                }
129
130                if (elm.hasClass('cm-ajax') && $('#' + content_id).length == 0) {
131                    // Create tab content if it is not exist
132                    tabs_elm.after('<div id="' + content_id + '"></div>');
133
134                    _cloneTools(tab_id, active_id);
135                    $.ceAjax('request', $('a', elm).prop('href'), {result_ids: _getTabIds(tab_id), callback: function (data){
136                        _switchTab(tab_id, tabs_elm, true);
137                    }});
138                } else {
139                    _switchTab(tab_id, tabs_elm, true);
140                }
141
142                return true;
143            },            
144            init: function() {
145                $(this).each(function() {
146                    var tabs_elm = $(this);
147                    
148                    $.ceEvent('trigger', 'ce.tab.pre_init', [tabs_elm]);
149                    
150                    //Setup Tabs
151                    var ul = $('ul:first', tabs_elm);
152                    var list = $('li', ul);
153                    
154                    var data = {
155                        ul: ul,
156                        tabs: {}
157                    };
158                    
159                    list.each(function () {
160                        var elm = $(this);
161                        var tab_id = elm.prop('id');
162                        
163                        data.tabs[tab_id] = elm;
164                    });
165
166                    tabs_elm.data('ceTabs', data);
167                    
168                    list.on('click', function (e) {
169                        var elm = $(this);
170                        var tab_id = elm.prop('id');
171                        
172                        if (tabs_elm.ceTabs('switch', tab_id)) {
173                            e.preventDefault();
174                        }
175                        
176                        return true;
177                    });
178
179                    //Select default tab
180                    var test;
181                    if ((test = list.filter('.active')).length) {
182                        test.trigger('click'); //Select tab with class 'active'
183                    } else {
184                        test = list.filter(':first').trigger('click'); //Select first tab
185                    }
186
187                    // create similar active tab tools
188                    var active_id = test.prop('id');
189
190                    $('li.cm-ajax.cm-js').each(function(){
191                        var self = $(this);
192                        var tab_id = self.prop('id');
193
194                        // Check if the active content needs to be loaded
195                        if (self.hasClass('active')) {
196                            content = $('#content_' + tab_id).html().replace(/<!--.*?-->/, '').replace(/(^\s+|\s+$)/, '');
197                            if (content.length) {
198                                return true;
199                            }
200                        }
201
202                        if (!self.data('passed') && $('a', self).prop('href')) {
203                            self.data('passed', true);
204                            var id = 'content_' + tab_id;
205                            // Check if block already exists
206                            var block = $('#' + id);
207
208                            if (!block.length) {
209                                self.parents('.cm-j-tabs').eq(0).next().prepend('<div id="' + id + '"></div>');
210                                block = $('#' + id);
211                            }
212
213                            if (!self.hasClass('active')) {
214                                block.addClass('hidden');
215                            }
216
217                            _cloneTools(tab_id, active_id);
218                            if (!self.hasClass('cm-ajax-onclick')) {
219                                $.ceAjax('request', $('a', self).prop('href'), {
220                                    result_ids: _getTabIds(tab_id),
221                                    hidden: true,
222                                    repeat_on_error: true
223                                });
224                            }
225                        }
226                    });
227
228                    return true;
229                });
230
231                $.ceEvent('trigger', 'ce.tab.init');
232
233            }
234        };
235
236        $.fn.ceTabs = function(method) {
237            if (methods[method]) {
238                return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
239            } else if ( typeof method === 'object' || ! method ) {
240                return methods.init.apply(this, arguments);
241            } else {
242                $.error('ty.tabs: method ' +  method + ' does not exist');
243            }
244        };
245
246    })($);
247
248}(Tygh, Tygh.$));

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.