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.