PageSourceSearch

https://www.rism.it/media/plg_system_youtuber/assets/js/frontend.js?v=3.4.0

js rism.it collected 2026-10-02 14:41:06 UTC 9,853 bytes, 277 lines download raw bytes

1(function ($) {
2    "use strict";
3
4    var dummyTip = null;
5    var _config = null;
6
7    function getConfig() {
8        if (_config !== null) {
9            return _config;
10        } else if ($('#youtuber-cfg').length) {
11            _config = JSON.parse($('#youtuber-cfg').html());
12            if (!_config || !_config['ajax_url']) {
13                console.log('No YouTubeR config');
14            }
15            return _config;
16        } else {
17            console.log('No YouTubeR config');
18        }
19    }
20    
21    function getConfigValue(_name){
22        var params = getConfig();
23        return params[_name];
24    }
25    
26    function getLangString(key) {
27        var params = getConfig();
28        return params.lang[key];
29    }
30    
31    function reBindScripts() {
32        if ($('a.mxyt-lightbox').length) {
33            $('a.mxyt-lightbox').fancybox(JSON.parse(getConfigValue('fancybox_params')));
34        }
35
36        $('.mxyt-tip').each(function (index, element) {
37            var $this = $(this);
38            var mainContainer = $this.closest('.mxYouTubeR');
39            var _class = '';
40            if (mainContainer.attr('class')) {
41                var matches = mainContainer.attr('class').match(/(mxYouTubeR_theme_[a-z0-9\-_]+)/);
42                if (matches && matches.length > 0) {
43                    _class = matches[0];
44                }
45            }
46            $this.off('mouseenter');
47            $this.on('mouseenter', function () {
48                if (!dummyTip.hasClass(_class)) {
49                    dummyTip.addClass(_class);
50                }
51                dummyTip.children('span').html($this.attr('title'));
52                var pos = $this.offset();
53                dummyTip.css('left', pos.left + $this.innerWidth() / 2 - dummyTip.width() / 2);
54                dummyTip.css('top', pos.top);
55
56                dummyTip.addClass('active');
57                dummyTip.stop().css('opacity', 0).animate({
58                    'opacity': 0.9,
59                    'margin-top': -25
60                }, 200, 'swing', function () {
61                    //console.info(tip,this);
62                });
63            });
64            $this.off('mouseleave');
65            $this.on('mouseleave', function () {
66                dummyTip.removeClass(_class);
67                dummyTip.removeClass('active');
68                dummyTip.css('margin-top', -15);
69            });
70        });
71
72        $('.mxyt-text-description.mxyt-less').each(function (index, element) {
73            var $this = $(this);
74            if ($this.next().is('.mxyt-text-description-btn')) {
75                return;
76            }
77            var moreBtn = $('<div class="mxyt-text-description-btn">' + getLangString('more') + '</div>');
78            var fullHeight = $this.children().height();
79            if ($this.height() < fullHeight) {
80                $this.addClass('hasMore');
81                moreBtn.insertAfter($this);
82                moreBtn.off('click');
83                moreBtn.on('click', function () {
84                    var btn = $(this);
85                    if ($this.hasClass('mxyt-less')) {
86                        $this.removeClass('mxyt-less');
87                        btn.html(getLangString('less'));
88                    } else {
89                        $this.addClass('mxyt-less');
90                        btn.html(getLangString('more'));
91                    }
92                });
93            } else {
94                $this.removeClass('hasMore');
95                $this.addClass('noMore');
96            }
97        });
98
99        $('.mxyt-playlist-select span').off('click');
100        $('.mxyt-playlist-select span').on('click', function () {
101            var $this = $(this);
102            playlistLoader.loadPlaylist($this.closest('.mxyt-channel-videos'), $this.attr('data-mxyt-cfg'));
103            return false;
104        });
105
106        $('.mxyt-load-more').each(function (index, element) {
107            var $this = $(this);
108            if ($this.attr('data-checked')) {
109                return;
110            }
111            $this.attr('data-checked', 'true');
112            if ($this.hasClass('mxyt-infinite-scroll')) {
113                $(window).on('scroll resize', function () {
114                    playlistLoader.checkLoadMore($this);
115                });
116                playlistLoader.checkLoadMore($this);
117            } else {
118                $this.off('click');
119                $this.on('click', function () {
120                    playlistLoader.loadMore($this);
121                    return false;
122                });
123            }
124        });
125        $('.ch-item').on('mouseenter', function () {
126            $(this).addClass('mx-active');
127        });
128        $('.ch-item').on('mouseleave', function () {
129            $(this).removeClass('mx-active');
130        });
131        $('.mxYouTubeR').trigger('mxYouTubeRLayout');
132    }
133
134    var playlistLoader = {
135        loading: false,
136        haveMore: false,
137        button: null,
138        loadingBar: null,
139        params: {},
140        target: null,
141
142        bind: function (jqBtn) {
143            this.button = jqBtn;
144            this.haveMore = jqBtn.attr('data-mxyt-havemore')=='1';
145            this.params = jqBtn.attr('data-mxyt-cfg');
146            this.target = jqBtn.closest('.mxYouTubeR').find('.mxyt-playlist');
147        },
148        checkLoadMore: function(jqBtn){
149            if (jqBtn.hasClass('mxyt-infinite-scroll')) {
150                var top = $(window).scrollTop() + $(window).height();
151                if (top > jqBtn.offset().top) {
152                    this.loadMore(jqBtn);
153                }
154            }
155        },
156        loadMore: function (jqBtn) {
157            if (this.loading) {
158                return false;
159            }
160            this.bind(jqBtn);
161            if (!this.haveMore) {
162                return false;
163            }
164            this.loading = true;
165            this.loadingBar = $('<i class="mxyt-icon mxyt-icon-spinner"></i>');
166            this.button.hide();
167            this.button.parent().append(this.loadingBar);
168
169            var loader = this;
170            $.ajax({
171                url: getConfigValue('ajax_url'),
172                type: 'post',
173                dataType: "json",
174                data: {
175                    action: 'youtuber',
176                    params: loader.params,
177                },
178                success: function (result) {
179                    if (result && result.success) {
180                        loader.loaded(result);
181                    } 
182                    else if(result && result.error){
183                        alert(result.error);
184                    }
185                    else {
186                        alert('mxYouTubeR ajax error.');
187                    }
188                },
189                error: function () {
190                    alert('mxYouTubeR ajax error.');
191                }
192            });
193        },
194        loadPlaylist: function (_container, _params) {
195            if (this.loading) {
196                return false;
197            }
198            this.loading = true;
199            var loadingBar = $('<p align="center"><i class="mxyt-icon mxyt-icon-spinner"></i></p>');
200            _container.html(loadingBar);
201
202            var loader = this;
203            $.ajax({
204                url: getConfigValue('ajax_url'),
205                type: 'post',
206                dataType: "json",
207                data: {
208                    action: 'youtuber',
209                    params: _params
210                },
211                success: function (result) {
212                    if (result.success) {
213                        loader.loading = false;
214                        loadingBar.remove();
215                        var items = $($(result.html).find('.mxyt-channel-videos').html());
216                        _container.append(items);
217                        reBindScripts();
218                        items.css('opacity', 0);
219                        items.stop().animate({
220                            'opacity': 1
221                        }, 300);
222                    } else {
223                        alert('mxYouTubeR ajax error.');
224                    }
225                },
226                error: function () {
227                    alert('mxYouTubeR ajax error.');
228                }
229            });
230        },
231        loaded: function (result) {
232            this.haveMore = result.haveMore;
233            this.loading = false;
234            this.loadingBar.remove();
235            this.button.attr('data-mxyt-havemore', (this.haveMore?'1':'0'));
236            if (this.haveMore) {
237                this.button.show();
238            }
239            var html = $(result.html);
240            var items = html.find('.mxyt-row, .mxyt-brow');
241            this.params = this.params.replace(/\&start=\d+/,'&start='+html.find('.mxyt-load-more').attr('data-mxyt-start'));
242            this.button.attr('data-mxyt-cfg', this.params);
243            this.target.append(items);
244            reBindScripts();
245            items.css('opacity', 0);
246            items.stop().animate({
247                'opacity': 1
248            }, 300);
249            
250            this.checkLoadMore(this.button);
251        }
252    };
253
254    window.mxYouTuberInit = function () {
255        if (!dummyTip) {
256            dummyTip = $('<div id="mxyt-tooltip" class="mxyt-tooltip"><span></span><div></div></div>');
257            $('body').append(dummyTip);
258        }
259        $('.mxYouTubeR').trigger('mxYouTubeRInit');
260        reBindScripts();
261    }
262
263    $(document).ready(function (e) {
264        $('.mxYouTubeR').on('mxYouTubeRInit mxYouTubeRLayout',function(e){
265            console.info(e);
266        });
267        window.mxYouTuberInit();
268    });
269
270})(jQuery);
271
272
273
274
275
276
277

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.