1/** 2 * Version: 2.3.0 3 */ 4var allps, pss; 5var wpdm_pass_target = '#pps_z'; 6String.prototype.wpdm_shuffle = function () { 7 var a = this.split(""), 8 n = a.length; 9 10 for (var i = n - 1; i > 0; i--) { 11 var j = Math.floor(Math.random() * (i + 1)); 12 var tmp = a[i]; 13 a[i] = a[j]; 14 a[j] = tmp; 15 } 16 return a.join(""); 17} 18String.prototype.wpdm_hash = function () { 19 if (Array.prototype.reduce) { 20 return this.split("").reduce(function (a, b) { 21 a = ((a << 5) - a) + b.charCodeAt(0); 22 return a & a 23 }, 0); 24 } 25 var hash = 0; 26 if (this.length === 0) return hash; 27 for (var i = 0; i < this.length; i++) { 28 var character = this.charCodeAt(i); 29 hash = ((hash << 5) - hash) + character; 30 hash = hash & hash; 31 } 32 return hash; 33} 34 35var WPDM = { 36 37 init: function ($) { 38 39 }, 40 41 copy: function ($id) { 42 var copyText = document.getElementById($id); 43 copyText.select(); 44 copyText.setSelectionRange(0, 99999); 45 document.execCommand("copy"); 46 WPDM.notify('<i class="fa fa-check-double"></i> Copied', 'success', 'top-center', 1000); 47 }, 48 49 copyTxt: function (textToCopy) { 50 WPDM.notify('<i class="fa fa-check-double"></i> Copied', 'success', 'top-center', 1000); 51 // navigator clipboard api needs a secure context (https) 52 if (navigator.clipboard && window.isSecureContext) { 53 // navigator clipboard api method' 54 return navigator.clipboard.writeText(textToCopy); 55 } else { 56 // text area method 57 let textArea = document.createElement("textarea"); 58 textArea.value = textToCopy; 59 // make the textarea out of viewport 60 textArea.style.position = "fixed"; 61 textArea.style.left = "-999999px"; 62 textArea.style.top = "-999999px"; 63 document.body.appendChild(textArea); 64 textArea.focus(); 65 textArea.select(); 66 return new Promise((res, rej) => { 67 // here the magic happens 68 document.execCommand('copy') ? res() : rej(); 69 textArea.remove(); 70 }); 71 } 72 }, 73 74 beep: function () { 75 if (WPDM.audio == undefined) 76 var snd = new Audio("data:audio/wav;base64,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BZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU="); 77 else 78 var snd = new Audio(WPDM.audio); 79 snd.play(); 80 }, 81 82 hash: function (str) { 83 return str.wpdm_hash(); 84 }, 85 86 uniqueID: function (prefix) { 87 var uniq = Date.now() + "abcdefghijklmnopqrstuvwxyz_"; 88 uniq = uniq.wpdm_shuffle(); 89 uniq = uniq.substring(1, 10); 90 uniq = typeof prefix !== 'undefined' ? prefix + uniq : uniq; 91 return uniq; 92 }, 93 94 fileTypeIcon: function (ext) { 95 //let colors = color.split('|'); 96 97 return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" style="margin: 4px"> 98 <defs> 99 <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1"> 100 <stop stop-color="#269def" offset="0"/> 101 <stop stop-color="#26bdef" offset="1"/> 102 </linearGradient> 103 </defs> 104 <g> 105 <rect fill="url(#gradient)" x="0" y="0" width="40" height="40" rx="3" ry="3"/> 106 <text x="5" y="19" font-family="Arial, Helvetica, sans-serif" font-size="10px" letter-spacing="1" fill="#FFFFFF"> 107 <tspan>${ext}</tspan> 108 <tspan x="6" y="28">_</tspan> 109 </text> 110 </g> 111 </svg>`; 112 }, 113 114 popupWindow: function (url, title, w, h, onclose) { 115 /* Fixes dual-screen position Most browsers Firefox */ 116 var dualScreenLeft = typeof window.screenLeft !== 'undefined' ? window.screenLeft : screen.left; 117 var dualScreenTop = typeof window.screenTop !== 'undefined' ? window.screenTop : screen.top; 118 119 var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; 120 var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; 121 122 var left = ((width / 2) - (w / 2)) + dualScreenLeft; 123 var top = ((height / 2) - (h / 2)) + dualScreenTop; 124 var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top='
124+ top + ', left=' + left); 125 126 /* Puts focus on the newWindow */ 127 if (window.focus) { 128 newWindow.focus(); 129 } 130 if (onclose !== undefined) 131 newWindow.onbeforeunload = function () { 132 onclose.call(); 133 } 134 return false; 135 }, 136 137 html: function (elment, html, _class, _id) { 138 _class = _class !== undefined ? _class : ''; 139 _id = _id !== undefined ? _id : ''; 140 return "<" + elment + " class='" + _class + "' id='" + _id + "'>" + html + "</" + elment + ">"; 141 }, 142 143 el: function (element, attrs, innerHTML) { 144 var el = document.createElement(element); 145 el = jQuery(el); 146 jQuery.each(attrs, function (name, val) { 147 el.attr(name, val); 148 }) 149 if (typeof innerHTML !== 'undefined' && innerHTML !== '') 150 el.html(innerHTML); 151 return el[0].outerHTML; 152 }, 153 card: function (header, body, footer, id, style) { 154 if (typeof id === 'undefined') id = 'card_' + WPDM.uniqueID(); 155 if (typeof style === 'undefined') style = ''; 156 header = header !== '' ? WPDM.el("div", {'class': 'card-header'}, header) : ''; 157 body = WPDM.el("div", {'class': 'card-body'}, body); 158 footer = footer !== '' ? WPDM.el("div", {'class': 'card-footer'}, footer) : ''; 159 return WPDM.el("div", {'class': 'card', id: id, style: style}, header + body + footer); 160 }, 161 fa: function (icon) { 162 return WPDM.el("i", {'class': icon}); 163 }, 164 bootAlert: function (heading, content, width) { 165 let html, url = ''; 166 let modal_id = '__bootModal_' + WPDM.uniqueID(); 167 if (typeof content === 'object') { 168 url = content.url; 169 content = `<div id='${modal_id}_cont'><i class='fa fa-sun fa-spin'></i> Loading...</div>`; 170 } 171 if (!width) width = 400; 172 html = '<div class="w3eden" id="w3eden' + modal_id + '"><div id="' + modal_id + '" class="modal fade" tabindex="-1" role="dialog">\n' + 173 ' <div class="modal-dialog" style="width: ' + width + 'px" role="document">\n' + 174 ' <div class="modal-content" style="border-radius: 4px;overflow: hidden">\n' + 175 ' <div class="modal-header" style="padding: 12px 15px;background: rgba(0,0,0,0.02);line-height: 18px">\n' + 176 ' <h4 class="modal-title" style="font-size: 10pt;font-weight: 600;padding: 0;margin: 0;letter-spacing: 0.5px;line-height: 18px">' + heading + '</h4><button style="line-height: 18px;font-size: 10pt;background: transparent;outline: none" type="button" class="close" data-target="#' + modal_id + '" data-dismiss="modal"><i class="fa fa-times-circle"></i></button>\n' + 177 ' </div>\n' + 178 ' <div class="modal-body fetfont" style="line-height: 1.5;text-transform: unset;font-weight:400;letter-spacing:0.5px;font-size: 12px">\n' + 179 ' ' + content + '\n' + 180 ' </div>\n' + 181 ' </div>\n' + 182 ' </div>\n' + 183 '</div></div>'; 184 jQuery('body').append(html); 185 jQuery("#" + modal_id).modal({show: true, backdrop: 'static'}); 186 187 if (url !== '') { 188 url = url.indexOf('?') > 0 ? url + '&__mdid=' + modal_id : url + '?__mdid=' + modal_id; 189 jQuery("#" + modal_id + "_cont").load(url); 190 } 191 192 return jQuery("#" + modal_id); 193 }, 194 195 /** 196 * Local push notification 197 * @param title 198 * @param message 199 * @param icon 200 * @param image 201 * @param url 202 */ 203 pushNotify: function (title, message, icon, image, url) { 204 var type = 'info'; 205 if (title.includes('rror') || message.includes('rror')) type = 'error'; 206 207 if (!('Notification' in window) || !('ServiceWorkerRegistration' in window)) { 208 WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right'); 209 return; 210 } 211 212 Notification.requestPermission(function (result) { 213 if (result === 'granted') { 214 console.log('Notification: ' + result); 215 try { 216 var notification = new Notification(title, { 217 body: message, 218 icon: icon ? icon : 'https://cdn1.iconfinder.com/data/icons/hawcons/32/698558-icon-47-note-important-512.png', 219 image: image ? image : '' 220 }); 221 if (url) { 222 notification.onclick = function (e) { 223 e.preventDefault(); 224 window.open(url, '_blank'); 225 }; 226 } 227 } catch (err) { 228 WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right'); 229 console.log('Notification API error: ' + err); 230 } 231 } else { 232 WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right'); 233 console.log('Notification: ' + result); 234 } 235 }); 236 237 }, 238 239 240 /** 241 * Shows notification 242 * @param message 243 * @param type 244 * @param position 245 */ 246 notify: function (message, type, position, autoclose) { 247 var $ = jQuery; 248 if (type === undefined || !type) type = 'info'; 249 if (position === undefined || !position) position = 'top-right'; 250 if (type === 'danger') type = 'error'; 251 let notifycont = position.indexOf('#') >= 0 ? position : '#wpdm-notify-' + position; 252 if ($(notifycont).length == 0) 253 $('body').prepend("<div id='wpdm-notify-" + position + "'></div>"); 254 var notif = $("<div class='wpdm-notify fetfont wpdm-notify-" + type + "' style='display: none'>" + message + "</div><div class='wpdm-clear'></div>"); 255 $(notifycont).append(notif); 256 $(notif).fadeIn(); 257 if (autoclose !== undefined) { 258 setTimeout(function () { 259 260 $(notif).animate({ 261 opacity: 0 262 }, 1000, function () { 263 $(this).slideUp(); 264 }); 265 266 }, autoclose); 267 } 268 return $(notif); 269 }, 270 271 /** 272 * Shows notification 273 * @param message 274 * @param type 275 * @param position 276 */ 277 floatify: function (html, position) { 278 var $ = jQuery; 279 if (position === undefined || !position) position = 'top-right'; 280 var floatifycont = '#wpdm-floatify-' + position; 281 if ($(floatifycont).length == 0) 282 $('body').prepend("<div class='w3eden' id='wpdm-floatify-" + position + "'></div>"); 283 var floatify = $("<div class='wpdm-floatify fetfont' style='margin-right: -500px'>" + html + "</div>"); 284 $(floatifycont).append(floatify); 285 $(floatify).animate({marginRight: '0px'}); 286 return $(floatify); 287 }, 288 289 blockUI: function (element, xhr) { 290 jQuery(element).addClass("blockui"); 291 if (xhr) 292 xhr.addEventListener("load", function () { 293 jQuery(element).removeClass("blockui"); 294 }); 295 }, 296 297 unblockUI: function (element) { 298 if (typeof element === 'undefined') element = '.blockui'; 299 jQuery(element).removeClass("blockui"); 300 }, 301 302 overlay: function (element, html) { 303 var $ = jQuery; 304 var overlaycontent = $("<div class='wpdm-overlay-content' style='display: none'>" + html + "<div class='wpdm-overlay-close' style='cursor: pointer'><i class='far fa-times-circle'></i> close</div></div>"); 305 $(element).addClass('wpdm-overlay').append(overlaycontent); 306 $(overlaycontent).fadeIn(); 307 $('body').on('click', '.wpdm-overlay-close', function () { 308 $(overlaycontent).fadeOut(function () { 309 $(this).remove(); 310 }); 311 }); 312 return $(overlaycontent); 313 }, 314 315 316 confirm: function (heading, content, buttons, width) { 317 var html, $ = jQuery; 318 var modal_id = '__boot_popup_' + WPDM.uniqueID(); 319 $("#w3eden__boot_popup").remove(); 320 if (!width) width = 350; 321 var _buttons = ''; 322 if (buttons) { 323 _buttons = '<div class="modal-footer text-center" style="padding: 8px 15px;justify-content: center;">\n'; 324 $.each(buttons, function (i, button) { 325 var btnid = WPDM.uniqueID(); 326 _buttons += "<button id='" + btnid + "' class='" + button.class + " btn-xs' style='font-size: 12px;padding: 4px 16px;border-radius: 4px'>" + button.label + "</button> "; 327 $('body').on('click', '#' + btnid, function () { 328 button.callback.call($("#" + modal_id)); 329 return false;
330 }); 331 }); 332 _buttons += '</div>\n'; 333 } 334 335 html = '<div class="w3eden" id="w3eden' + modal_id + '"><div id="' + modal_id + '" style="z-index: 9999999 !important;" class="modal fade" tabindex="-1" role="dialog">\n' + 336 ' <div class="modal-dialog wpdm-modal-confirm modal-dialog-centered" role="document" style="max-width: 100%;width: ' + width + 'px">\n' + 337 ' <div class="modal-content" style="border-radius: 6px;overflow: hidden">\n' + 338 ' <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' + 339 ' <h4 class="modal-title" style="font-size: 12pt;font-weight: 500;padding: 0;margin: 0;font-family:var(--wpdm-font), san-serif;letter-spacing: 0.5px">' + heading + '</h4>\n' + 340 ' </div>\n' + 341 ' <div class="modal-body text-center" style="font-family:var(--wpdm-font), san-serif;letter-spacing: 0.5px;font-size: 10pt;font-weight: 300;padding: 25px;line-height: 1.5">\n' + 342 ' ' + content + '\n' + 343 ' </div>\n' + _buttons + 344 ' </div>\n' + 345 ' </div>\n' + 346 '</div></div>'; 347 $('body').append(html); 348 $("#" + modal_id).modal('show'); 349 return $("#" + modal_id); 350 }, 351 audioUI: function (audio) { 352 var $ = jQuery, song_length, song_length_m, song_length_s; 353 354 var player_html = '<div class="w3eden"><div style="display: none" class="wpdm-audio-player-ui" id="wpdm-audio-player-ui"><div class="card m-2"><div class="card-body text-center"><div class="mb-3 wpdm-audio-control-buttons d-block d-sm-none"><button class="btn btn-primary btn-play" id="wpdm-btn-play"><i class="fa fa-play"></i></button> <button class="btn btn-secondary btn-backward" id="wpdm-btn-backward"><i class="fa fa-backward"></i></button> <button class="btn btn-secondary btn-forward" id="wpdm-btn-forward"><i class="fa fa-forward"></i></button> <button class="btn btn-info btn-volumctrl" id="wpdm-btn-volumctrl"><i class="fa fa-volume-up"></i></button></div><div class="media"><div class="mr-3 wpdm-audio-control-buttons d-none d-sm-block"><button class="btn btn-primary btn-play" id="wpdm-btn-play"><i class="fa fa-play"></i></button> <button class="btn btn-secondary btn-backward" id="wpdm-btn-backward"><i class="fa fa-backward"></i></button> <button class="btn btn-secondary btn-forward" id="wpdm-btn-forward"><i class="fa fa-forward"></i></button></div><div class="media-body"><div class="position-relative"><div id="played">00:00</div><div id="mins">00:00</div></div><div class="progress"><div id="wpdm-audio-progress" class="progress-bar bg-success" role="progressbar" style="width: 0%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div></div></div><div class="ml-3 wpdm-audio-control-buttons d-none d-sm-block"> <button class="btn btn-info btn-volumctrl" id="wpdm-btn-volumctrl"><i class="fa fa-volume-up"></i></button> <div class="volumctrl"><input type="range" min="0" max="1" step="0.01" value="3" class="p-0" id="wpdm-audio-volume"></div></div></div></div></div></div></div>'; 355 356 if (audio.duration !== Infinity) { 357 song_length = parseInt(audio.duration); 358 song_length_m = parseInt(song_length / 60); 359 song_length_s = song_length - (song_length_m * 60); 360 song_length_m = song_length_m > 9 ? song_length_m : "0" + song_length_m; 361 song_length_s = song_length_s > 9 ? song_length_s : "0" + song_length_s; 362 } else { 363 song_length_m = "--"; 364 song_length_s = "--"; 365 audio.addEventListener("durationchange", function (e) { 366 console.log(this.duration); 367 if (this.duration !== Infinity) { 368 song_length = parseInt(this.duration); 369 song_length_m = parseInt(song_length / 60); 370 song_length_s = song_length - (song_length_m * 60); 371 song_length_m = song_length_m > 9 ? song_length_m : "0" + song_length_m; 372 song_length_s = song_length_s > 9 ? song_length_s : "0" + song_length_s; 373 $('#mins').html(song_length_m + ":" + song_length_s); 374 next(song_length); 375 } 376 }, false); 377 } 378 379 if ($('#wpdm-audio-player-ui').length === 0) { 380 $('body').append(player_html); 381 $("#wpdm-audio-player-ui").slideDown(); 382 $('#mins').html(song_length_m + ":" + song_length_s); 383 $('body').on('click', '#wpdm-audio-player-ui .progress', function (e) { 384 let value = e.offsetX * 100 / this.clientWidth; 385 var played = parseInt(song_length * value / 100); 386 var played_m = parseInt(played / 60); 387 var played_s = played - (played_m * 60); 388 played_m = played_m > 9 ? played_m : "0" + played_m; 389 played_s = played_s > 9 ? played_s : "0" + played_s; 390 $('#played').html(played_m + ":" + played_s); 391 audio.currentTime = (song_length * value) / 100;
392 $(this).find('.progress-bar').css('width', value + "%"); 393 //video.currentTime = duration * (value / 100); 394 }); 395 $('body').on('click', '.btn-backward', function () { 396 let value = (parseInt($('#wpdm-audio-player-ui .progress-bar').css('width')) / parseInt($('#wpdm-audio-player-ui .progress').css('width'))) * 100 - 10; 397 if (value < 0) value = 0; 398 var played = parseInt(song_length * value / 100); 399 var played_m = parseInt(played / 60); 400 var played_s = played - (played_m * 60); 401 played_m = played_m > 9 ? played_m : "0" + played_m; 402 played_s = played_s > 9 ? played_s : "0" + played_s; 403 $('#played').html(played_m + ":" + played_s); 404 audio.currentTime = (song_length * value) / 100; 405 $('#wpdm-audio-player-ui .progress-bar').css('width', value + "%"); 406 }); 407 $('body').on('click', '.btn-forward', function () { 408 let value = (parseInt($('#wpdm-audio-player-ui .progress-bar').css('width')) / parseInt($('#wpdm-audio-player-ui .progress').css('width'))) * 100 + 10; 409 if (value > 100) value = 100; 410 var played = parseInt(song_length * value / 100); 411 var played_m = parseInt(played / 60); 412 var played_s = played - (played_m * 60); 413 played_m = played_m > 9 ? played_m : "0" + played_m; 414 played_s = played_s > 9 ? played_s : "0" + played_s; 415 $('#played').html(played_m + ":" + played_s); 416 audio.currentTime = (song_length * value) / 100; 417 $('#wpdm-audio-player-ui .progress-bar').css('width', value + "%"); 418 }); 419 $('body').on('click', '.btn-volumctrl', function () { 420 $(this).next('.volumctrl').toggle(); 421 }); 422 $('body').on('click', '.btn-play', function () { 423 if ($(this).find('.fa').hasClass('fa-play')) { 424 $(this).find('.fa').addClass('fa-pause').removeClass('fa-play'); 425 $(this).data('state', 'playing'); 426 audio.play(); 427 } else { 428 $(this).find('.fa').addClass('fa-play').removeClass('fa-pause'); 429 $(this).data('state', 'paused'); 430 audio.pause(); 431 } 432 }); 433 $('body').on('change', '#wpdm-audio-volume', function () { 434 audio.volume = this.value; 435 }); 436 437 } 438 $('#mins').html(song_length_m + ":" + song_length_s); 439 audio.addEventListener("play", function () { 440 $('.btn-play .fa').addClass('fa-pause').removeClass('fa-play'); 441 }); 442 audio.addEventListener("pause", function () { 443 $('.btn-play .fa').addClass('fa-play').removeClass('fa-pause'); 444 }); 445 audio.addEventListener("timeupdate", function (e) { 446 var song_length = parseInt(audio.duration); 447 var time_now = audio.currentTime; 448 var percent = (time_now / song_length) * 100; 449 if (percent > 100) percent = 100; 450 $('#wpdm-audio-progress').css('width', percent + "%"); 451 var played = parseInt(time_now); 452 var played_m = parseInt(played / 60); 453 var played_s = played - (played_m * 60); 454 played_m = played_m > 9 ? played_m : "0" + played_m; 455 played_s = played_s > 9 ? played_s : "0" + played_s; 456 $('#played').html(played_m + ":" + played_s); 457 }); 458 459 460 } 461 462}; 463 464 465jQuery(function ($) { 466 467 var $body = $('body'); 468 469 $body.on('click', '.wpdm-notify, .wpdm-floatify', function () { 470 $(this).animate({ 471 opacity: 0 472 }, 1000, function () { 473 $(this).slideUp(); 474 }); 475 }); 476 477 $body.on('click', '.dismis-on-click', function () { 478 $(this).slideUp(); 479 }); 480 481 $body.on('click', '.wpdm-download-link.wpdm-download-locked', function (e) { 482 e.preventDefault(); 483 hideLockFrame(); 484 485 var parentWindow = document.createElement("a"); 486 parentWindow.href = document.referrer.toString(); 487 var __sep = '?'; 488 if (wpdm_url.home.indexOf('?') > 0) __sep = '&'; 489 let extras = ''; 490 if ($(this).data('file') !== undefined) extras += '__wpdmfl=' + $(this).data('file'); 491 extras += '&REFERRER=' + encodeURI(location.href); 492 if (parentWindow.hostname === window.location.hostname || 1) 493 $(window.parent.document.body).append("<iframe id='wpdm-lock-frame' style='left:0;top:0;width: 100%;height: 100%;z-index: 999999999;position: fixed;background: rgba(255,255,255,0.4) url(" + wpdm_url.home + "wp-content/plugins/download-manager/assets/images/loader.svg) center center no-repeat;background-size: 80px 80px;border: 0;' src='" + wpdm_url.home + __sep + "__wpdmlo=" + $(this).data('package') + "&" + extras + "'></iframe>"); 494 else 495 window.parent.postMessage({ 496 'task': 'showiframe', 497 'iframe': "<iframe id='wpdm-lock-frame' style='left:0;top:0;width: 100%;height: 100%;z-index: 999999999;position: fixed;background: rgba(255,255,255,0.4) url(" + wpdm_url.home + "wp-content/plugins/download-manager/assets/images/loader.svg) center center no-repeat;background-size: 80px 80px;border: 0;' src='" + wpdm_url.home + __sep + "__wpdmlo=" + $(this).data('package') + __sep + "__wpdmfl=" + + "'></iframe>" 498 }, "*"); 499 500 }); 501
502 $body.on('click', '.wpdm-download-link.download-on-click[data-downloadurl]', function (e) { 503 e.preventDefault(); 504 if (this.target === '_blank') 505 window.open($(this).data('downloadurl')); 506 else 507 window.location.href = $(this).data('downloadurl'); 508 }); 509 510 $body.on('click', '.__wpdm_playvideo', function (e) { 511 e.preventDefault(); 512 $('#__wpdm_videoplayer').children('source').attr('src', $(this).data('video')); 513 console.log('loading...'); 514 var vid = document.getElementById("__wpdm_videoplayer"); 515 vid.onloadeddata = function () { 516 console.log('loaded....'); 517 }; 518 $("#__wpdm_videoplayer").get(0).load(); 519 520 }); 521 522 $body.on('change', '.terms_checkbox', function (e) { 523 if ($(this).is(':checked')) 524 $('#wpdm-filelist-' + $(this).data('pid') + ' .btn.inddl, #xfilelist .btn.inddl').removeAttr('disabled'); 525 else 526 $('#wpdm-filelist-' + $(this).data('pid') + ' .btn.inddl, #xfilelist .btn.inddl').attr('disabled', 'disabled'); 527 }); 528 529 $body.on('click', '.wpdm-social-lock', function (e) { 530 531 try { 532 533 if ($(this).data('url')) 534 _PopupCenter($(this).data('url'), 'Social Lock', 600, 400); 535 536 } catch (e) { 537 } 538 539 }); 540 541 $body.on('click', '#wpdm-dashboard-sidebar a.list-group-item', function (e) { 542 location.href = this.href; 543 }); 544 545 var $input_group_input = $('.input-group input'); 546 $input_group_input.on('focus', function () { 547 $(this).parent('.input-group').find('.input-group-addon').addClass('input-group-addon-active'); 548 }); 549 $input_group_input.on('blur', function () { 550 $(this).parent().find('.input-group-addon').removeClass('input-group-addon-active'); 551 }); 552 553 554 $body.on('click', 'button.btn.inddl', function (e) { 555 e.preventDefault(); 556 var tis = this; 557 if ($(this).data('dlurl') !== undefined) { 558 location.href = $(this).data('dlurl'); 559 return; 560 } 561 $.post(wpdm_rest_url('validate-filepass'), { 562 wpdmfileid: $(tis).data('pid'), 563 wpdmfile: $(tis).data('file'), 564 actioninddlpvr: 1, 565 filepass: $($(tis).data('pass')).val() 566 }, function (res) { 567 if (res.success === true) { 568 var dlurl = res.downloadurl; 569 $(tis).data('dlurl', dlurl); 570 wpdm_boot_popup(wpdm_strings.pass_var, "<div style='padding: 50px;'>"+wpdm_strings.pass_var_q+"<br/><br/><a href='" + dlurl + "' class='btn btn-lg btn-success' target='_blank'>"+wpdm_strings.start_dl+"</a></div>", 571 [{ 572 label: 'Close', 573 class: 'btn btn-secondary', 574 callback: function () { 575 this.modal('hide'); 576 return false; 577 } 578 }] 579 ); 580 } else { 581 alert(res.msg); 582 } 583 }); 584 }); 585 586 $body.on('click', '.wpdm-indir', function (e) { 587 e.preventDefault(); 588 WPDM.blockUI('#xfilelist'); 589 $('#xfilelist').load(location.href, { 590 action: 'wpdmfilelistcd', 591 pid: $(this).data('pid'), 592 cd: $(this).data('dir') 593 }, function (res) { 594 WPDM.unblockUI('#xfilelist'); 595 }); 596 }); 597 598 599 $body.on('click', '.role-tabs a', function (e) { 600 $('.role-tabs a').removeClass('active'); 601 $(this).addClass('active'); 602 }); 603 604 605 $body.on('click', '.btn-wpdm-a2f', function (e) { 606 var a2fbtn = $(this); 607 $.post(wpdm_url.ajax, {action: 'wpdm_addtofav', pid: $(this).data('package')}, function (res) { 608 if (a2fbtn.hasClass('btn-secondary')) 609 a2fbtn.removeClass('btn-secondary').addClass('btn-danger').html(a2fbtn.data('rlabel')); 610 else 611 a2fbtn.removeClass('btn-danger').addClass('btn-secondary').html(a2fbtn.data('alabel')); 612 }); 613 }); 614 615 $body.on('click', '.wpdm-btn-play', function (e) { 616 e.preventDefault(); 617 618 if ($('#wpdm-audio-player').length === 0) { 619 var player = document.createElement('audio'); 620 player.id = 'wpdm-audio-player'; 621 player.controls = 'controls'; 622 player.autoplay = 1; 623 player.type = 'audio/mpeg'; 624 $('body').append(player); 625 } 626 627 player = $('#wpdm-audio-player'); 628 var btn = $(this); 629 630 if (btn.data('state') === 'stop' || !btn.data('state')) { 631 player.css('display', 'none'); 632 player.attr('src', $(this).data('song') + "&play=song.mp3"); 633 } 634 635 if (btn.data('state') === 'playing') { 636 $(this).data('state', 'paused'); 637 player.trigger('pause'); 638 $(this).html("<i class='fa fa-play'></i>"); 639 return false;
640 } 641 642 if (btn.data('state') === 'paused') { 643 $(this).data('state', 'playing'); 644 player.trigger('play'); 645 $('.wpdm-btn-play').html("<i class='fa fa-play'></i>"); 646 $(this).html("<i class='fa fa-pause'></i>"); 647 return false; 648 } 649 650 651 $('.wpdm-btn-play').data("state", "stop"); 652 $('.wpdm-btn-play').html("<i class='fa fa-play'></i>"); 653 btn.html("<i class='fas fa-sun fa-spin'></i>"); 654 player.unbind('loadedmetadata'); 655 player.on('loadedmetadata', function () { 656 console.log("Playing " + this.src + ", for: " + this.duration + "seconds."); 657 btn.html("<i class='fa fa-pause'></i>"); 658 btn.data('state', 'playing'); 659 WPDM.audioUI(this); 660 }); 661 document.getElementById('wpdm-audio-player').onended = function () { 662 btn.html("<i class='fa fa-redo'></i>"); 663 btn.data('state', 'stop'); 664 } 665 }); 666 667 $('.wpdm_remove_empty').remove(); 668 669 /* Uploading files */ 670 var file_frame, dfield; 671 672 $body.on('click', '.wpdm-media-upload', function (event) { 673 event.preventDefault(); 674 dfield = $($(this).attr('rel')); 675 676 /* If the media frame already exists, reopen it. */ 677 if (file_frame) { 678 file_frame.open(); 679 return; 680 } 681 682 /* Create the media frame. */ 683 file_frame = wp.media.frames.file_frame = wp.media({ 684 title: $(this).data('uploader_title'), 685 button: { 686 text: $(this).data('uploader_button_text') 687 }, 688 multiple: false /* Set to true to allow multiple files to be selected */ 689 }); 690 691 /* When an image is selected, run a callback. */ 692 file_frame.on('select', function () { 693 /* We set multiple to false so only get one image from the uploader */ 694 attachment = file_frame.state().get('selection').first().toJSON(); 695 dfield.val(attachment.url); 696 697 }); 698 699 /* Finally, open the modal */ 700 file_frame.open(); 701 }); 702 703 $body.on('click', '.btn-image-selector', function (event) { 704 event.preventDefault(); 705 dfield = $($(this).attr('rel')); 706 var dfield_h = $($(this).attr('rel') + '_hidden'); 707 708 if (file_frame) { 709 file_frame.open(); 710 return; 711 } 712 713 file_frame = wp.media.frames.file_frame = wp.media({ 714 title: $(this).data('uploader_title'), 715 button: { 716 text: $(this).data('uploader_button_text') 717 }, 718 multiple: false 719 }); 720 721 722 file_frame.on('select', function () { 723 724 attachment = file_frame.state().get('selection').first().toJSON(); 725 dfield.attr('src', attachment.url); 726 dfield_h.val(attachment.url); 727 728 }); 729 730 file_frame.open(); 731 }); 732 733 $body.on('click', '.pagination.async a, .__wpdm_load_async', function (e) { 734 e.preventDefault(); 735 var _cont = $(this).data('container'); 736 $(_cont).addClass('blockui'); 737 $.get(this.href, function (res) { 738 $(_cont).html($(res).find(_cont).html()); 739 $(_cont).removeClass('blockui'); 740 }); 741 }); 742 743 $body.on("keyup", '.wpdm-pack-search-file', function () { 744 var value = $(this).val().toLowerCase(); 745 var filelist_item = $(this).data('filelist') + " tr"; 746 $(filelist_item).filter(function () { 747 $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) 748 }); 749 }); 750 751 $('.__wpdm_submit_async').on('submit', function (e) { 752 e.preventDefault(); 753 var _cont = $(this).data('container'); 754 $(_cont).addClass('blockui'); 755 $(this).ajaxSubmit({ 756 success: function (response) { 757 $(_cont).html($(response).find(_cont).html()); 758 $(_cont).removeClass('blockui'); 759 } 760 }) 761 }); 762 763 764 var unlocked = []; 765 766 $('.wpdm-filelist-area[data-termlock]').on('mouseover', function () { 767 768 try { 769 if (unlocked[$(this).data('packageid')] === 1) return; 770 } catch (e) { 771 772 } 773 $('#term-panel-' + $(this).data('packageid')).fadeIn('fast'); 774 }); 775 776 $('.terms_checkbox').on('click', function () { 777 if ($(this).is(':checked')) { 778 unlocked[$(this).data('pid')] = 1; 779 $('#term-panel-' + $(this).data('pid')).fadeOut('fast'); 780 $('.download_footer_' + $(this).data('pid')).slideDown(); 781 } else 782 $('.download_footer_' + $(this).data('pid')).slideUp(); 783 }); 784 785 786 $formcontrol = $('.input-wrapper input'); 787 $formcontrol.on('focus', function () { 788 $('.input-wrapper').removeClass('input-focused'); 789 $(this).parent('.input-wrapper').addClass('input-focused'); 790 }); 791 $formcontrol.on('change', function () { 792 $('.input-wrapper').removeClass('input-focused'); 793 $(this).parent('.input-wrapper').addClass('input-focused'); 794 if ($(this).val() !== '') 795 $(this).parent('.input-wrapper').addClass('input-withvalue'); 796 else 797 $(this).parent('.input-wrapper').removeClass('input-withvalue'); 798 }); 799 800 801}); 802 803 804function _PopupCenter(url, title, w, h) { 805 /* Fixes dual-screen position Most browsers Firefox */ 806 var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left; 807 var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top; 808 809 var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; 810 var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; 811 812 var left = ((width / 2) - (w / 2)) + dualScreenLeft; 813 var top = ((height / 2) - (h / 2)) + dualScreenTop; 814 var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top='
814+ top + ', left=' + left); 815 816 /* Puts focus on the newWindow */ 817 if (window.focus) { 818 newWindow.focus(); 819 } 820 821 return false; 822} 823 824function generatepass(id) { 825 wpdm_pass_target = '#' + id; 826 jQuery('#generatepass').modal('show'); 827} 828 829function hideLockFrame() { 830 jQuery('#wpdm-lock-frame').remove(); 831} 832 833function wpdm_bootModal(heading, content, width) { 834 var html; 835 if (!width) width = 400; 836 jQuery("#w3eden__bootModal").remove(); 837 html = '<div class="w3eden" id="w3eden__bootModal"><div id="__bootModal" class="modal fade" tabindex="-1" role="dialog">\n' + 838 ' <div class="modal-dialog" style="width: ' + width + 'px" role="document">\n' + 839 ' <div class="modal-content" style="border-radius: 3px;overflow: hidden">\n' + 840 ' <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' + 841 ' <h4 class="modal-title" style="font-size: 9pt;font-weight: 500;padding: 0;margin: 0;letter-spacing: 0.5px">' + heading + '</h4>\n' + 842 ' </div>\n' + 843 ' <div class="modal-body fetfont" style="line-height: 1.5;text-transform: unset;font-weight:400;letter-spacing:0.5px;font-size: 12px">\n' + 844 ' ' + content + '\n' + 845 ' </div>\n' + 846 ' <div class="modal-footer" style="padding: 10px 15px">\n' + 847 ' <button type="button" class="btn btn-secondary btn-xs" data-dismiss="modal">Close</button>\n' + 848 ' </div>\n' + 849 ' </div>\n' + 850 ' </div>\n' + 851 '</div></div>'; 852 jQuery('body').append(html); 853 jQuery("#__bootModal").modal('show'); 854} 855 856function wpdm_boot_popup(heading, content, buttons) { 857 var html, $ = jQuery; 858 $("#w3eden__boot_popup").remove(); 859 var _buttons = ''; 860 if (buttons) { 861 _buttons = '<div class="modal-footer" style="padding: 8px 15px;">\n'; 862 $.each(buttons, function (i, button) { 863 var id = 'btx_' + i; 864 _buttons += "<button id='" + id + "' class='" + button.class + " btn-xs' style='font-size: 10px;padding: 3px 20px;'>" + button.label + "</button> "; 865 }); 866 _buttons += '</div>\n'; 867 } 868 869 html = '<div class="w3eden" id="w3eden__boot_popup"><div id="__boot_popup" style="z-index: 9999999 !important;" class="modal fade" tabindex="-1" role="dialog">\n' + 870 ' <div class="modal-dialog" role="document" style="max-width: 100%;width: 350px">\n' + 871 ' <div class="modal-content" style="border-radius: 3px;overflow: hidden">\n' + 872 ' <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' + 873 ' <h4 class="modal-title" style="font-size: 9pt;font-weight: 500;padding: 0;margin: 0;letter-spacing: 0.5px">' + heading + '</h4>\n' + 874 ' </div>\n' + 875 ' <div class="modal-body text-center" style="letter-spacing: 0.5px;font-size: 10pt;font-weight: 300;padding: 25px;line-height: 1.5">\n' + 876 ' ' + content + '\n' + 877 ' </div>\n' + _buttons + 878 ' </div>\n' + 879 ' </div>\n' + 880 '</div></div>'; 881 $('body').append(html); 882 $("#__boot_popup").modal('show'); 883 $.each(buttons, function (i, button) { 884 var id = 'btx_' + i; 885 $('#' + id).unbind('click'); 886 $('#' + id).bind('click', function () { 887 button.callback.call($("#__boot_popup")); 888 return false; 889 }); 890 }); 891 return $("#__boot_popup"); 892} 893 894/** 895 * Open an url in iframe modal 896 * @param url 897 * @param closebutton 898 * @returns {boolean} 899 */ 900function wpdm_iframe_modal(url, closebutton) { 901 var iframe, $ = jQuery; 902 if (url === 'close') { 903 $('#wpdm_iframe_modal').remove(); 904 $('#ifcb').remove(); 905 $('body').removeClass('wpdm-iframe-modal-open'); 906 return false; 907 } 908 var closebutton_html = ""; 909 if (closebutton !== undefined && closebutton === true) 910 closebutton_html = "<span id='ifcb' class='w3eden'><a href='#' onclick='return wpdm_iframe_modal(\"close\");' style='border-radius: 0;position: fixed;top: 0;right: 0;z-index: 9999999999 !important;width: 40px;line-height: 40px;padding: 0' class='btn btn-danger'><i class='fas fa-times'></i></a></span>"; 911 912 iframe = '<iframe src="' + url + '" style="width: 100%;height: 100%;position: fixed;z-index: 999999999 !important;border: 0;left: 0;top: 0;right: 0;bottom: 0;background: rgba(0,0,0,0.2);display: none;" id="wpdm_iframe_modal"></iframe>' + closebutton_html; 913 $('body').append(iframe).addClass('wpdm-iframe-modal-open'); 914 $('#wpdm_iframe_modal').fadeIn(); 915 916} 917 918
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.