PageSourceSearch

https://www.inselderjugend.de/wp-content/themes/starter-theme-v2-o…/js/lib/video-gallery.js?ver=202308021353

js inselderjugend.de collected 2026-10-08 06:52:03 UTC 8,302 bytes, 204 lines download raw bytes

1document.addEventListener("DOMContentLoaded", function () {
2    (function ($) {
3
4
5        function loadVideoScript(src, id) {
6            return new Promise(function (resolve, reject) {
7                let script = document.createElement('script');
8                script.src = src;
9                script.id = id;
10                script.type = 'text/javascript';
11                script.onload = () => resolve('Script geladen');
12                document.head.append(script);
13            });
14        }
15
16       makeVideoDataScript().then(r => {
17           render_theme_gallery_data();
18       })
19        async function makeVideoDataScript() {
20            let videoWrapper = $('.theme-video-data')
21            if (videoWrapper.length) {
22                let blueImpId = $('#blueimp-gallery-script');
23                if (!blueImpId.length) {
24                  let response =  await loadVideoScript(get_hupa_option.admin_url + 'admin-core/assets/js/tools/lightbox/blueimp-gallery.min.js', 'blueimp-gallery-script');
25                   //console.log(response)
26                }
27            }
28        }
29
30        function render_theme_gallery_data() {
31            let videoWrapper = $('.theme-video-data');
32            if (videoWrapper.length) {
33                let groupArr = [];
34                let singleArr = [];
35                let groupObject;
36                let target;
37                videoWrapper.each(function () {
38                    groupObject = {
39                        'title': $(this).attr('data-title'),
40                        'type': $(this).attr('data-type'),
41                        'poster': $(this).attr('data-poster'),
42                        'href': $(this).attr('data-href'),
43                        'target': $(this).attr('data-target'),
44                        'externId': $(this).attr('data-extern-id'),
45                        'externType': $(this).attr('data-extern-type'),
46                        'externPoster': $(this).attr('data-extern-poster'),
47                    }
48                    if ($(this).parents('div.hupa-video-group').length) {
49                        groupArr.push(groupObject)
50                        $('.theme-video-' + groupObject.target).remove();
51                    } else {
52                        singleArr.push(groupObject)
53                    }
54                    target = $(this).attr('data-target');
55                    starter_blueimp_video_gallery(target).then((response) => {
56
57                    }).catch(err => {
58                        console.log(err)
59                    });
60                });
61
62
63                if (singleArr.length) {
64                    create_blueimp_video_carousel(singleArr);
65                }
66
67                if (groupArr.length) {
68                    let rand = createRandomInteger(6);
69                    let dataContainer = $('.hupa-video-group');
70                    dataContainer.addClass('group-' + rand)
71                    starter_blueimp_video_gallery(rand, 'group').then((response) => {
72                    }).catch(err => {
73                        console.log(err)
74                    });
75                    create_blueimp_video_carousel(groupArr, 'group', rand);
76                }
77            }
78        }
79
80        function create_blueimp_video_carousel(arr, type = 'single', target = '') {
81            let extTypes = ['youtube', 'vimeo'];
82            let group = [];
83
84            $.each(arr, function (key, value) {
85                let galleryObject;
86                if (extTypes.includes(value.externType)) {
87                    galleryObject = {
88                        title: value.title,
89                        type: value.type,
90                    }
91                    switch (value.externType) {
92                        case 'youtube':
93                            if (value.externPoster == 1) {
94                                galleryObject.poster = `https://img.youtube.com/vi/${value.externId}/maxresdefault.jpg`;
95                            } else {
96                                galleryObject.poster = value.poster;
97                            }
98                            galleryObject.youtube = value.externId
99                            galleryObject.href = `https://www.youtube.com/watch?v=${value.externId}`;
100                            break;
101                        case 'vimeo':
102                            if (value.externPoster == 1) {
103                                galleryObject.poster = `https://secure-b.vimeocdn.com/ts/${value.externId}.jpg`;
104                            } else {
105                                galleryObject.poster = value.poster;
106                            }
107                            galleryObject.vimeo = value.externId;
108                            galleryObject.href = `https://vimeo.com/${value.externId}`;
109
110                            break;
111                    }
112                } else {
113                    galleryObject = {
114                        'title': value.title,
115                        'type': value.type,
116                        'poster': value.poster,
117                        'href': value.href
118                    }
119                }
120
121                group.push(galleryObject);
122                if (type == 'single') {
123                    blueimp.Gallery([
124                        galleryObject
125                    ], {
126                        container: '#theme-video-' + value.target,
127                        carousel: true,
128                        videoPlaysInline: true,
129                        videoCoverClass: 'video-cover toggle'
130                    })
131                }
132            });
133
134            if (type == 'group') {
135                blueimp.Gallery(
136                    group,
137                    {
138                        container: '#theme-video-' + target,
139                        carousel: true,
140                        videoPlaysInline: true,
141                        videoCoverClass: 'video-cover toggle'
142                    })
143            }
144        }
145
146        function starter_blueimp_video_gallery(target, type = 'single') {
147
148            return new Promise(function (resolve, reject) {
149                let videoId;
150                videoId = $("#theme-video-" + target);
151                if (!videoId.length) {
152                    let html = `<div id="theme-video-${target}" class="blueimp-gallery blueimp-gallery-carousel blueimp-gallery-svgasimg blueimp-gallery-smil blueimp-gallery-display blueimp-gallery-controls"
153                   aria-label="video gallery"
154                   aria-modal="false"
155                   role="dialog">
156                  <div class="slides" aria-live="polite"></div>
157                  <h3 class="title"></h3>
158                  <p class="description"></p>
159                  <a
160                    class="prev"
161                    aria-controls="blueimp-gallery"
162                    aria-label="previous slide"
163                    aria-keyshortcuts="ArrowLeft"
164                  ></a>
165                  <a
166                    class="next"
167                    aria-controls="blueimp-gallery"
168                    aria-label="next slide"
169                    aria-keyshortcuts="ArrowRight"
170                  ></a>
171                  <a
172                    class="play-pause"
173                    aria-controls="blueimp-gallery"
174                    aria-label="play slideshow"
175                    aria-keyshortcuts="Space"
176                    aria-pressed="false"
177                    role="button"
178                  ></a>
179                  <ol class="indicator"></ol>
180                </div>`;
181                    if (type == 'single') {
182                        $('.theme-video-' + target).html(html);
183                    } else {
184                        $('.group-' + target).html(html);
185                    }
186
187                    resolve(target);
188                } else {
189                    reject('Video Target schon vorhanden')
190                }
191            });
192        }
193
194        function createRandomInteger(length) {
195            let randomCodes = '';
196            let characters = '0123456789';
197            let charactersLength = characters.length;
198            for (let i = 0; i < length; i++) {
199                randomCodes += characters.charAt(Math.floor(Math.random() * charactersLength));
200            }
201            return randomCodes;
202        }
203    })(jQuery); // jQuery End
204});

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.