PluginProbe ʕ •ᴥ•ʔ
Download Manager / 3.3.63
Download Manager v3.3.63
3.3.63 3.3.62 3.3.61 3.3.60 3.3.59 3.3.58 3.3.57 3.3.56 trunk 2.1.3 2.3.0 2.5.96 2.5.97 2.6.2 2.6.96 2.8.3 2.9.99 3.0.4 3.1.05 3.1.07 3.1.08 3.1.11 3.1.12 3.1.14 3.1.17 3.1.18 3.1.22 3.1.23 3.1.24 3.1.25 3.1.26 3.1.27 3.1.28 3.2.04 3.2.13 3.2.14 3.2.16 3.2.18 3.2.19 3.2.21 3.2.22 3.2.23 3.2.24 3.2.25 3.2.27 3.2.28 3.2.29 3.2.30 3.2.31 3.2.32 3.2.33 3.2.34 3.2.35 3.2.37 3.2.38 3.2.39 3.2.40 3.2.41 3.2.42 3.2.43 3.2.44 3.2.45 3.2.46 3.2.47 3.2.48 3.2.49 3.2.50 3.2.51 3.2.52 3.2.53 3.2.54 3.2.55 3.2.56 3.2.57 3.2.58 3.2.59 3.2.60 3.2.61 3.2.63 3.2.64 3.2.65 3.2.66 3.2.67 3.2.68 3.2.69 3.2.70 3.2.71 3.2.72 3.2.73 3.2.74 3.2.75 3.2.76 3.2.77 3.2.78 3.2.79 3.2.80 3.2.81 3.2.82 3.2.83 3.2.84 3.2.85 3.2.86 3.2.87 3.2.88 3.2.89 3.2.90 3.2.91 3.2.92 3.2.93 3.2.94 3.2.95 3.2.96 3.2.97 3.2.98 3.2.99 3.3.00 3.3.01 3.3.02 3.3.03 3.3.04 3.3.05 3.3.06 3.3.07 3.3.08 3.3.09 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.15 3.3.16 3.3.17 3.3.18 3.3.19 3.3.20 3.3.21 3.3.22 3.3.23 3.3.24 3.3.25 3.3.26 3.3.27 3.3.28 3.3.29 3.3.30 3.3.31 3.3.32 3.3.33 3.3.34 3.3.35 3.3.36 3.3.37 3.3.38 3.3.39 3.3.40 3.3.41 3.3.42 3.3.43 3.3.44 3.3.45 3.3.46 3.3.47 3.3.48 3.3.49 3.3.50 3.3.51 3.3.52 3.3.53 3.3.54 3.3.55
download-manager / assets / js / front.js
download-manager / assets / js Last commit date
ads 8 months ago control 8 months ago img 10 years ago blocker.js 1 week ago blocker.min.js 1 week ago embed.js 5 years ago embed.min.js 7 months ago front.js 1 day ago front.min.js 1 day ago jquery-ui-timepicker-addon.js 10 years ago jquery-ui-timepicker-addon.min.js 7 months ago jquery.dataTables.min.js 1 year ago jquery.validate.js 7 months ago jquery.validate.min.js 1 week ago jqueryFileTree.js 5 years ago jqueryFileTree.min.js 7 months ago overwatch.js 7 months ago overwatch.min.js 7 months ago password-strength.js 2 years ago password-strength.min.js 7 months ago simple-scrollbar.js 7 months ago simple-scrollbar.min.js 7 months ago simplebar.js 6 years ago validator.min.js 9 years ago vue.js 9 months ago vue.min.js 9 months ago wpdm-admin.js 1 week ago wpdm-admin.min.js 1 week ago wpdm.js 6 months ago wpdm.min.js 6 months ago
front.js
1011 lines
1 /**
2 * Version: 2.3.0
3 */
4 var allps, pss;
5 let count = 0;
6 let colors = [];
7 var wpdm_pass_target = '#pps_z';
8 String.prototype.wpdm_shuffle = function () {
9 var a = this.split(""),
10 n = a.length;
11
12 for (var i = n - 1; i > 0; i--) {
13 var j = Math.floor(Math.random() * (i + 1));
14 var tmp = a[i];
15 a[i] = a[j];
16 a[j] = tmp;
17 }
18 return a.join("");
19 }
20 String.prototype.wpdm_hash = function () {
21 if (Array.prototype.reduce) {
22 return this.split("").reduce(function (a, b) {
23 a = ((a << 5) - a) + b.charCodeAt(0);
24 return a & a
25 }, 0);
26 }
27 var hash = 0;
28 if (this.length === 0) return hash;
29 for (var i = 0; i < this.length; i++) {
30 var character = this.charCodeAt(i);
31 hash = ((hash << 5) - hash) + character;
32 hash = hash & hash;
33 }
34 return hash;
35 }
36
37 const WPDM = {
38
39 actions: {},
40
41 init: function ($) {
42
43 },
44
45 addAction: function (action, func) {
46 if(!WPDM.actions[action]) WPDM.actions[action] = [];
47 WPDM.actions[action].push(func);
48 },
49
50 doAction: async function (action, ...params) {
51 if(typeof WPDM.actions[action] !== 'undefined')
52 WPDM.actions[action].forEach(fn => fn(...params));
53 },
54
55 copy: function ($id) {
56 var copyText = document.getElementById($id);
57 copyText.select();
58 copyText.setSelectionRange(0, 99999);
59 document.execCommand("copy");
60 WPDM.notify('Copied', 'success', 'top-center', 1000);
61 },
62
63 copyTxt: function (textToCopy) {
64 WPDM.notify('Copied', 'success', 'top-center', 1000);
65 // navigator clipboard api needs a secure context (https)
66 if (navigator.clipboard && window.isSecureContext) {
67 // navigator clipboard api method'
68 return navigator.clipboard.writeText(textToCopy);
69 } else {
70 // text area method
71 let textArea = document.createElement("textarea");
72 textArea.value = textToCopy;
73 // make the textarea out of viewport
74 textArea.style.position = "fixed";
75 textArea.style.left = "-999999px";
76 textArea.style.top = "-999999px";
77 document.body.appendChild(textArea);
78 textArea.focus();
79 textArea.select();
80 return new Promise((res, rej) => {
81 // here the magic happens
82 document.execCommand('copy') ? res() : rej();
83 textArea.remove();
84 });
85 }
86 },
87
88 beep: function () {
89 if (WPDM.audio == undefined)
90 var snd = new Audio("data:audio/wav;base64,//uQRAAAAWMSLwUIYAAsYkXgoQwAEaYLWfkWgAI0wWs/ItAAAGDgYtAgAyN+QWaAAihwMWm4G8QQRDiMcCBcH3Cc+CDv/7xA4Tvh9Rz/y8QADBwMWgQAZG/ILNAARQ4GLTcDeIIIhxGOBAuD7hOfBB3/94gcJ3w+o5/5eIAIAAAVwWgQAVQ2ORaIQwEMAJiDg95G4nQL7mQVWI6GwRcfsZAcsKkJvxgxEjzFUgfHoSQ9Qq7KNwqHwuB13MA4a1q/DmBrHgPcmjiGoh//EwC5nGPEmS4RcfkVKOhJf+WOgoxJclFz3kgn//dBA+ya1GhurNn8zb//9NNutNuhz31f////9vt///z+IdAEAAAK4LQIAKobHItEIYCGAExBwe8jcToF9zIKrEdDYIuP2MgOWFSE34wYiR5iqQPj0JIeoVdlG4VD4XA67mAcNa1fhzA1jwHuTRxDUQ//iYBczjHiTJcIuPyKlHQkv/LHQUYkuSi57yQT//uggfZNajQ3Vmz+Zt//+mm3Wm3Q576v////+32///5/EOgAAADVghQAAAAA//uQZAUAB1WI0PZugAAAAAoQwAAAEk3nRd2qAAAAACiDgAAAAAAABCqEEQRLCgwpBGMlJkIz8jKhGvj4k6jzRnqasNKIeoh5gI7BJaC1A1AoNBjJgbyApVS4IDlZgDU5WUAxEKDNmmALHzZp0Fkz1FMTmGFl1FMEyodIavcCAUHDWrKAIA4aa2oCgILEBupZgHvAhEBcZ6joQBxS76AgccrFlczBvKLC0QI2cBoCFvfTDAo7eoOQInqDPBtvrDEZBNYN5xwNwxQRfw8ZQ5wQVLvO8OYU+mHvFLlDh05Mdg7BT6YrRPpCBznMB2r//xKJjyyOh+cImr2/4doscwD6neZjuZR4AgAABYAAAABy1xcdQtxYBYYZdifkUDgzzXaXn98Z0oi9ILU5mBjFANmRwlVJ3/6jYDAmxaiDG3/6xjQQCCKkRb/6kg/wW+kSJ5//rLobkLSiKmqP/0ikJuDaSaSf/6JiLYLEYnW/+kXg1WRVJL/9EmQ1YZIsv/6Qzwy5qk7/+tEU0nkls3/zIUMPKNX/6yZLf+kFgAfgGyLFAUwY//uQZAUABcd5UiNPVXAAAApAAAAAE0VZQKw9ISAAACgAAAAAVQIygIElVrFkBS+Jhi+EAuu+lKAkYUEIsmEAEoMeDmCETMvfSHTGkF5RWH7kz/ESHWPAq/kcCRhqBtMdokPdM7vil7RG98A2sc7zO6ZvTdM7pmOUAZTnJW+NXxqmd41dqJ6mLTXxrPpnV8avaIf5SvL7pndPvPpndJR9Kuu8fePvuiuhorgWjp7Mf/PRjxcFCPDkW31srioCExivv9lcwKEaHsf/7ow2Fl1T/9RkXgEhYElAoCLFtMArxwivDJJ+bR1HTKJdlEoTELCIqgEwVGSQ+hIm0NbK8WXcTEI0UPoa2NbG4y2K00JEWbZavJXkYaqo9CRHS55FcZTjKEk3NKoCYUnSQ0rWxrZbFKbKIhOKPZe1cJKzZSaQrIyULHDZmV5K4xySsDRKWOruanGtjLJXFEmwaIbDLX0hIPBUQPVFVkQkDoUNfSoDgQGKPekoxeGzA4DUvnn4bxzcZrtJyipKfPNy5w+9lnXwgqsiyHNeSVpemw4bWb9psYeq//uQZBoABQt4yMVxYAIAAAkQoAAAHvYpL5m6AAgAACXDAAAAD59jblTirQe9upFsmZbpMudy7Lz1X1DYsxOOSWpfPqNX2WqktK0DMvuGwlbNj44TleLPQ+Gsfb+GOWOKJoIrWb3cIMeeON6lz2umTqMXV8Mj30yWPpjoSa9ujK8SyeJP5y5mOW1D6hvLepeveEAEDo0mgCRClOEgANv3B9a6fikgUSu/DmAMATrGx7nng5p5iimPNZsfQLYB2sDLIkzRKZOHGAaUyDcpFBSLG9MCQALgAIgQs2YunOszLSAyQYPVC2YdGGeHD2dTdJk1pAHGAWDjnkcLKFymS3RQZTInzySoBwMG0QueC3gMsCEYxUqlrcxK6k1LQQcsmyYeQPdC2YfuGPASCBkcVMQQqpVJshui1tkXQJQV0OXGAZMXSOEEBRirXbVRQW7ugq7IM7rPWSZyDlM3IuNEkxzCOJ0ny2ThNkyRai1b6ev//3dzNGzNb//4uAvHT5sURcZCFcuKLhOFs8mLAAEAt4UWAAIABAAAAAB4qbHo0tIjVkUU//uQZAwABfSFz3ZqQAAAAAngwAAAE1HjMp2qAAAAACZDgAAAD5UkTE1UgZEUExqYynN1qZvqIOREEFmBcJQkwdxiFtw0qEOkGYfRDifBui9MQg4QAHAqWtAWHoCxu1Yf4VfWLPIM2mHDFsbQEVGwyqQoQcwnfHeIkNt9YnkiaS1oizycqJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
91 else
92 var snd = new Audio(WPDM.audio);
93 snd.play();
94 },
95
96 hash: function (str) {
97 return str.wpdm_hash();
98 },
99
100 uniqueID: function (prefix) {
101 var uniq = Date.now() + "abcdefghijklmnopqrstuvwxyz_";
102 uniq = uniq.wpdm_shuffle();
103 uniq = uniq.substring(1, 10);
104 uniq = typeof prefix !== 'undefined' ? prefix + uniq : uniq;
105 return uniq;
106 },
107
108 fileTypeIcon: function (ext) {
109 //let colors = color.split('|');
110 if(!colors[ext]) {
111 let color1 = "58"+ ("95BB".wpdm_shuffle());
112 let color2 = "56789A".wpdm_shuffle();
113 colors[ext] = [color1, color2];
114 }
115 count++;
116 return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" style="margin: 4px">
117 <defs>
118 <linearGradient id="gradient${count}" x1="0" y1="0" x2="0" y2="1">
119 <stop stop-color="#${colors[ext][0]}" offset="0"/>
120 <stop stop-color="var(--color-primary)" stop-opacity="0.7" offset="1"/>
121 </linearGradient>
122 </defs>
123 <g>
124 <rect fill="url(#gradient${count})" x="0" y="0" width="40" height="40" rx="3" ry="3"/>
125 <text x="5" y="19" font-family="Arial, Helvetica, sans-serif" font-size="11px" letter-spacing="1" font-weight="600" text-rendering="geometricPrecision" fill="#FFFFFF">
126 <tspan>${ext}</tspan>
127 <tspan x="6" y="28">_</tspan>
128 </text>
129 </g>
130 </svg>`;
131 },
132
133 popupWindow: function (url, title, w, h, onclose) {
134 /* Fixes dual-screen position Most browsers Firefox */
135 var dualScreenLeft = typeof window.screenLeft !== 'undefined' ? window.screenLeft : screen.left;
136 var dualScreenTop = typeof window.screenTop !== 'undefined' ? window.screenTop : screen.top;
137
138 var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
139 var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
140
141 var left = ((width / 2) - (w / 2)) + dualScreenLeft;
142 var top = ((height / 2) - (h / 2)) + dualScreenTop;
143 var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
144
145 /* Puts focus on the newWindow */
146 if (window.focus) {
147 newWindow.focus();
148 }
149 if (onclose !== undefined)
150 newWindow.onbeforeunload = function () {
151 onclose.call();
152 }
153 return false;
154 },
155
156 html: function (elment, html, _class, _id) {
157 _class = _class !== undefined ? _class : '';
158 _id = _id !== undefined ? _id : '';
159 return "<" + elment + " class='" + _class + "' id='" + _id + "'>" + html + "</" + elment + ">";
160 },
161
162 el: function (element, attrs, innerHTML) {
163 var el = document.createElement(element);
164 el = jQuery(el);
165 jQuery.each(attrs, function (name, val) {
166 el.attr(name, val);
167 })
168 if (typeof innerHTML !== 'undefined' && innerHTML !== '')
169 el.html(innerHTML);
170 return el[0].outerHTML;
171 },
172
173 bootAlert: function (heading, content, width, backdrop, options) {
174 let html, url = '';
175 let modal_id = '__bootModal_' + this.uniqueID();
176 options = options || {};
177 options['width'] = width;
178
179 // Handle URL-based content loading
180 if (typeof content === 'object') {
181 return WPDM.dialog.ajax(heading, content.url, options);
182 }
183 return WPDM.dialog.alert(heading, content, options);
184 },
185
186 /**
187 * Local push notification
188 * @param title
189 * @param message
190 * @param icon
191 * @param image
192 * @param url
193 */
194 pushNotify: function (title, message, icon, image, url) {
195 var type = 'info';
196 if (title.includes('rror') || message.includes('rror')) type = 'error';
197
198 if (!('Notification' in window) || !('ServiceWorkerRegistration' in window)) {
199 WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right');
200 return;
201 }
202
203 Notification.requestPermission(function (result) {
204 if (result === 'granted') {
205 console.log('Notification: ' + result);
206 try {
207 var notification = new Notification(title, {
208 body: message,
209 icon: icon ? icon : 'https://cdn1.iconfinder.com/data/icons/hawcons/32/698558-icon-47-note-important-512.png',
210 image: image ? image : ''
211 });
212 if (url) {
213 notification.onclick = function (e) {
214 e.preventDefault();
215 window.open(url, '_blank');
216 };
217 }
218 } catch (err) {
219 WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right');
220 console.log('Notification API error: ' + err);
221 }
222 } else {
223 WPDM.notify("<strong>" + title + "</strong><br/>" + message, type, 'top-right');
224 console.log('Notification: ' + result);
225 }
226 });
227
228 },
229
230
231 /**
232 * Shows notification
233 * @param message
234 * @param type
235 * @param position
236 */
237 notify: function (message, type, position, autoclose) {
238 WPDM.toast(message, type, position, autoclose);
239 },
240
241 /**
242 * Shows notification
243 * @param message
244 * @param type
245 * @param position
246 */
247 floatify: function (html, position) {
248 WPDM.toast(html, "info", position);
249 },
250
251 toast: function (message, type, position, autoclose) {
252 var $ = jQuery;
253 if (!type) type = 'info';
254 if (!position) position = 'bottom-right';
255 if (autoclose === undefined) autoclose = 4000;
256 if (type === 'danger') type = 'error';
257
258 var containerId = 'wpdm-toast-' + position;
259 if ($('#' + containerId).length === 0)
260 $('body').append("<div class='w3eden' id='" + containerId + "' class='wpdm-toast-container'></div>");
261
262 var icons = {
263 success: '<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>',
264 error: '<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="15" y1="9" x2="9" y2="15"/><line x1="9" y1="9" x2="15" y2="15"/></svg>',
265 warning: '<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',
266 info: '<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>'
267 };
268
269 var icon = icons[type] || icons.info;
270 var toast = $("<div class='wpdm-toast wpdm-toast-" + type + "'>" +
271 "<span class='wpdm-toast-icon'>" + icon + "</span>" +
272 "<span class='wpdm-toast-msg'>" + message + "</span>" +
273 "<button class='wpdm-toast-close'>&times;</button>" +
274 "</div>");
275
276 $('#' + containerId).append(toast);
277 setTimeout(function () { toast.addClass('wpdm-toast-show'); }, 10);
278
279 toast.find('.wpdm-toast-close').on('click', function () { dismiss(); });
280
281 var timer;
282 if (autoclose > 0) {
283 timer = setTimeout(dismiss, autoclose);
284 toast.on('mouseenter', function () { clearTimeout(timer); });
285 toast.on('mouseleave', function () { timer = setTimeout(dismiss, 1500); });
286 }
287
288 function dismiss() {
289 clearTimeout(timer);
290 toast.removeClass('wpdm-toast-show');
291 setTimeout(function () { toast.remove(); }, 300);
292 }
293
294 return toast;
295 },
296
297 blockUI: function (element, xhr) {
298 jQuery(element).addClass("blockui");
299 if (xhr)
300 xhr.addEventListener("load", function () {
301 jQuery(element).removeClass("blockui");
302 });
303 },
304
305 unblockUI: function (element) {
306 if (typeof element === 'undefined') element = '.blockui';
307 jQuery(element).removeClass("blockui");
308 },
309
310
311 // Map a legacy bootstrap button class (e.g. "btn btn-danger") to a WPDM dialog button type
312 _dialogBtnType: function (cls) {
313 cls = (cls || '').toLowerCase();
314 if (cls.indexOf('danger') > -1) return 'danger';
315 if (cls.indexOf('success') > -1) return 'success';
316 if (cls.indexOf('primary') > -1 || cls.indexOf('info') > -1 || cls.indexOf('warning') > -1) return 'primary';
317 return 'secondary';
318 },
319
320 confirm: function (heading, content, buttons, width) {
321 var $ = jQuery;
322 var oldButtons = buttons || [];
323 var dialog = WPDM.dialog || window.WPDMDialog;
324
325 // Graceful fallback if the WPDM dialog system is not available
326 if (!dialog) {
327 var lastButton = oldButtons[oldButtons.length - 1];
328 if (window.confirm($('<div>').html(content).text()) && lastButton && typeof lastButton.callback === 'function') {
329 lastButton.callback.call($());
330 }
331 return $();
332 }
333
334 // Map the legacy buttons ({label, class, callback}) to WPDM dialog buttons
335 var dlgButtons = oldButtons.length ? oldButtons.map(function (button, i) {
336 return {
337 text: $('<div>').html(button.label).text(), // strip icons/markup from the label
338 type: WPDM._dialogBtnType(button.class),
339 action: 'btn_' + i
340 };
341 }) : [{ text: 'OK', type: 'primary', action: 'btn_0' }];
342
343 dialog.show({
344 title: heading,
345 message: content,
346 html: true,
347 type: 'question',
348 size: 'sm',
349 buttons: dlgButtons,
350 backdrop: 'static'
351 }).then(function (result) {
352 var m = /^btn_(\d+)$/.exec(result.action || '');
353 if (m && oldButtons[m[1]] && typeof oldButtons[m[1]].callback === 'function') {
354 // The dialog is already closing; legacy callbacks expect `this` to be the
355 // modal, so pass an empty jQuery set where .modal()/.find() are safe no-ops.
356 oldButtons[m[1]].callback.call($());
357 }
358 });
359
360 return $();
361 },
362 audioUI: function (audio) {
363 var $ = jQuery, song_length, song_length_m, song_length_s;
364
365 var player_html = `<div class="w3eden"><div style="display: none" class="wdmapui" id="wdmapui"><div id="wpdm_close_player"><svg style="width: 20px" data-name="Livello 1" viewBox="0 0 151.57 151.57" xmlns="http://www.w3.org/2000/svg"><circle cx="1038.5" cy="467.01" r="72.28" style="fill:#da2244;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-width:7px" transform="translate(-988.78 479.89) rotate(-45)"/><line style="fill:#da2244;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-width:7px" x1="47.57" x2="103.99" y1="103.99" y2="47.57"/><line style="fill:#da2244;stroke:#f2f2f2;stroke-linecap:round;stroke-linejoin:round;stroke-width:7px" x1="45.8" x2="105.7" y1="45.87" y2="105.77"/></svg></div><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>`;
366
367 if (audio.duration !== Infinity) {
368 song_length = parseInt(audio.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 } else {
374 song_length_m = "--";
375 song_length_s = "--";
376 audio.addEventListener("durationchange", function (e) {
377 console.log(this.duration);
378 if (this.duration !== Infinity) {
379 song_length = parseInt(this.duration);
380 song_length_m = parseInt(song_length / 60);
381 song_length_s = song_length - (song_length_m * 60);
382 song_length_m = song_length_m > 9 ? song_length_m : "0" + song_length_m;
383 song_length_s = song_length_s > 9 ? song_length_s : "0" + song_length_s;
384 $('#mins').html(song_length_m + ":" + song_length_s);
385 next(song_length);
386 }
387 }, false);
388 }
389
390 if ($('#wdmapui').length === 0) {
391 $('body').append(player_html);
392 $("#wdmapui").slideDown();
393 $('#mins').html(song_length_m + ":" + song_length_s);
394 $('body').on('click', '#wdmapui .progress', function (e) {
395 let value = e.offsetX * 100 / this.clientWidth;
396 var played = parseInt(song_length * value / 100);
397 var played_m = parseInt(played / 60);
398 var played_s = played - (played_m * 60);
399 played_m = played_m > 9 ? played_m : "0" + played_m;
400 played_s = played_s > 9 ? played_s : "0" + played_s;
401 $('#played').html(played_m + ":" + played_s);
402 audio.currentTime = (song_length * value) / 100;
403 $(this).find('.progress-bar').css('width', value + "%");
404 //video.currentTime = duration * (value / 100);
405 });
406 $('body').on('click', '.btn-backward', function () {
407 let value = (parseInt($('#wdmapui .progress-bar').css('width')) / parseInt($('#wdmapui .progress').css('width'))) * 100 - 10;
408 if (value < 0) value = 0;
409 var played = parseInt(song_length * value / 100);
410 var played_m = parseInt(played / 60);
411 var played_s = played - (played_m * 60);
412 played_m = played_m > 9 ? played_m : "0" + played_m;
413 played_s = played_s > 9 ? played_s : "0" + played_s;
414 $('#played').html(played_m + ":" + played_s);
415 audio.currentTime = (song_length * value) / 100;
416 $('#wdmapui .progress-bar').css('width', value + "%");
417 });
418 $('body').on('click', '.btn-forward', function () {
419 let value = (parseInt($('#wdmapui .progress-bar').css('width')) / parseInt($('#wdmapui .progress').css('width'))) * 100 + 10;
420 if (value > 100) value = 100;
421 var played = parseInt(song_length * value / 100);
422 var played_m = parseInt(played / 60);
423 var played_s = played - (played_m * 60);
424 played_m = played_m > 9 ? played_m : "0" + played_m;
425 played_s = played_s > 9 ? played_s : "0" + played_s;
426 $('#played').html(played_m + ":" + played_s);
427 audio.currentTime = (song_length * value) / 100;
428 $('#wdmapui .progress-bar').css('width', value + "%");
429 });
430 $('body').on('click', '.btn-volumctrl', function () {
431 $(this).next('.volumctrl').toggle();
432 });
433 $('body').on('click', '.btn-play', function () {
434 if ($(this).find('.fa').hasClass('fa-play')) {
435 $(this).find('.fa').addClass('fa-pause').removeClass('fa-play');
436 $(this).data('state', 'playing');
437 audio.play();
438 } else {
439 $(this).find('.fa').addClass('fa-play').removeClass('fa-pause');
440 $(this).data('state', 'paused');
441 audio.pause();
442 }
443 });
444 $('body').on('change', '#wpdm-audio-volume', function () {
445 audio.volume = this.value;
446 });
447
448 }
449 $('#mins').html(song_length_m + ":" + song_length_s);
450 audio.addEventListener("play", function () {
451 $('.btn-play .fa').addClass('fa-pause').removeClass('fa-play');
452 });
453 audio.addEventListener("pause", function () {
454 $('.btn-play .fa').addClass('fa-play').removeClass('fa-pause');
455 });
456 audio.addEventListener("timeupdate", function (e) {
457 var song_length = parseInt(audio.duration);
458 var time_now = audio.currentTime;
459 var percent = (time_now / song_length) * 100;
460 if (percent > 100) percent = 100;
461 $('#wpdm-audio-progress').css('width', percent + "%");
462 var played = parseInt(time_now);
463 var played_m = parseInt(played / 60);
464 var played_s = played - (played_m * 60);
465 played_m = played_m > 9 ? played_m : "0" + played_m;
466 played_s = played_s > 9 ? played_s : "0" + played_s;
467 $('#played').html(played_m + ":" + played_s);
468 });
469
470
471 }
472
473 };
474
475
476 jQuery(function ($) {
477
478 var $body = $('body');
479
480 const saves_state = localStorage.getItem('page_state_' + wpdm_url.page_code) || null;
481 const container = localStorage.getItem('page_state_container_' + wpdm_url.page_code) || null;
482 if(saves_state && container) {
483 $.get(saves_state, function (res) {
484 $(container).html($(res).find(container).html());
485 $(container).removeClass('blockui');
486 });
487 }
488
489 $body.on('click', '.wpdm-notify, .wpdm-floatify', function () {
490 $(this).animate({
491 opacity: 0
492 }, 1000, function () {
493 $(this).slideUp();
494 });
495 });
496
497 $body.on('click', '.dismis-on-click', function () {
498 $(this).slideUp();
499 });
500
501 $body.on('click', '.wpdm-download-link.wpdm-download-locked', function (e) {
502 e.preventDefault();
503 hideLockFrame();
504
505 var parentWindow = document.createElement("a");
506 parentWindow.href = document.referrer.toString();
507 var __sep = '?';
508 if (wpdm_url.home.indexOf('?') > 0) __sep = '&';
509 let extras = '';
510 if ($(this).data('file') !== undefined) extras += '__wpdmfl=' + $(this).data('file');
511 // Encode for a query value AND escape the single quote (which
512 // encodeURIComponent leaves intact) so it can't break out of the
513 // single-quoted iframe src attribute below. Prevents reflected XSS.
514 extras += '&REFERRER=' + encodeURIComponent(location.href).replace(/'/g, '%27');
515 if (parentWindow.hostname === window.location.hostname || 1)
516 $(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>");
517 else
518 window.parent.postMessage({
519 'task': 'showiframe',
520 '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>"
521 }, "*");
522
523 });
524
525 $body.on('click', '.wpdm-download-link.download-on-click[data-downloadurl]', function (e) {
526 e.preventDefault();
527 if (this.target === '_blank')
528 window.open($(this).data('downloadurl'));
529 else
530 window.location.href = $(this).data('downloadurl');
531 });
532
533 $body.on('click', '.__wpdm_playvideo', function (e) {
534 e.preventDefault();
535 $('#__wpdm_videoplayer').children('source').attr('src', $(this).data('video'));
536 console.log('loading...');
537 var vid = document.getElementById("__wpdm_videoplayer");
538 vid.onloadeddata = function () {
539 console.log('loaded....');
540 };
541 $("#__wpdm_videoplayer").get(0).load();
542
543 });
544
545 $body.on('change', '.terms_checkbox', function (e) {
546 if ($(this).is(':checked'))
547 $('#wpdm-filelist-' + $(this).data('pid') + ' .btn.inddl, #xfilelist .btn.inddl').removeAttr('disabled');
548 else
549 $('#wpdm-filelist-' + $(this).data('pid') + ' .btn.inddl, #xfilelist .btn.inddl').attr('disabled', 'disabled');
550 });
551
552 $body.on('click', '.wpdm-social-lock', function (e) {
553
554 try {
555
556 if ($(this).data('url'))
557 _PopupCenter($(this).data('url'), 'Social Lock', 600, 400);
558
559 } catch (e) {
560 }
561
562 });
563
564 $body.on('click', '#wdmds a.list-group-item', function (e) {
565 location.href = this.href;
566 });
567
568 var $input_group_input = $('.input-group input');
569 $input_group_input.on('focus', function () {
570 $(this).parent('.input-group').find('.input-group-addon').addClass('input-group-addon-active');
571 });
572 $input_group_input.on('blur', function () {
573 $(this).parent().find('.input-group-addon').removeClass('input-group-addon-active');
574 });
575
576
577 $body.on('click', 'button.btn.inddl', function (e) {
578 e.preventDefault();
579 var tis = this;
580 if ($(this).data('dlurl') !== undefined) {
581 location.href = $(this).data('dlurl');
582 return;
583 }
584 $.post(wpdm_rest_url('validate-filepass'), {
585 wpdmfileid: $(tis).data('pid'),
586 wpdmfile: $(tis).data('file'),
587 actioninddlpvr: 1,
588 filepass: $($(tis).data('pass')).val()
589 }, function (res) {
590 if (res.success === true) {
591 var dlurl = res.downloadurl;
592 $(tis).data('dlurl', dlurl);
593 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>",
594 [{
595 label: 'Close',
596 class: 'btn btn-secondary',
597 callback: function () {
598 $('#__boot_popup').modal('hide');
599 return false;
600 }
601 }]
602 );
603 } else {
604 alert(res.msg);
605 }
606 });
607 });
608
609 $body.on('click', '.wpdm-indir', function (e) {
610 e.preventDefault();
611 WPDM.blockUI('#xfilelist');
612 $('#xfilelist').load(location.href, {
613 action: 'wpdmfilelistcd',
614 pid: $(this).data('pid'),
615 cd: $(this).data('dir')
616 }, function (res) {
617 WPDM.unblockUI('#xfilelist');
618 });
619 });
620
621
622 $body.on('click', '.role-tabs a', function (e) {
623 $('.role-tabs a').removeClass('active');
624 $(this).addClass('active');
625 });
626
627
628 $body.on('click', '.btn-wpdm-a2f', function (e) {
629 var a2fbtn = $(this);
630 $.post(wpdm_url.ajax, {action: 'wpdm_addtofav', pid: $(this).data('package')}, function (res) {
631 if (a2fbtn.hasClass('btn-secondary'))
632 a2fbtn.removeClass('btn-secondary').addClass('btn-danger').html(a2fbtn.data('rlabel'));
633 else
634 a2fbtn.removeClass('btn-danger').addClass('btn-secondary').html(a2fbtn.data('alabel'));
635 });
636 });
637
638 $body.on('click', '#wpdm_close_player', function (e) {
639 $('#wdmapui').slideUp();
640 });
641
642 $body.on('click', '.wpdm-btn-play', function (e) {
643 e.preventDefault();
644
645 if ($('#wpdm-audio-player').length === 0) {
646 var player = document.createElement('audio');
647 player.id = 'wpdm-audio-player';
648 player.controls = 'controls';
649 player.autoplay = 1;
650 player.type = 'audio/mpeg';
651 $('body').append(player);
652 }
653
654 player = $('#wpdm-audio-player');
655 var btn = $(this);
656
657 if (btn.data('state') === 'stop' || !btn.data('state')) {
658 player.css('display', 'none');
659 player.attr('src', $(this).data('song') + "&play=song.mp3");
660 }
661
662 if (btn.data('state') === 'playing') {
663 btn.data('state', 'paused');
664 player.trigger('pause');
665 $(this).html("<i class='fa fa-play'></i>");
666 return false;
667 }
668
669 if (btn.data('state') === 'paused') {
670 $(this).data('state', 'playing');
671 player.trigger('play');
672 $('.wpdm-btn-play').html("<i class='fa fa-play'></i>");
673 $(this).html("<i class='fa fa-pause'></i>");
674 $('#wdmapui').slideDown();
675 return false;
676 }
677
678
679 $('.wpdm-btn-play').data("state", "stop");
680 $('.wpdm-btn-play').html("<i class='fa fa-play'></i>");
681 btn.html("<i class='fas fa-sun fa-spin'></i>");
682 player.unbind('loadedmetadata');
683 player.on('loadedmetadata', function () {
684 console.log("Playing " + this.src + ", for: " + this.duration + "seconds.");
685 btn.html("<i class='fa fa-pause'></i>");
686 btn.data('state', 'playing');
687 WPDM.audioUI(this);
688 });
689
690 document.getElementById('wpdm-audio-player').onended = function () {
691 btn.html("<i class='fa fa-redo'></i>");
692 btn.data('state', 'stop');
693 }
694 });
695
696 $('.wpdm_remove_empty').remove();
697
698 /* Uploading files */
699 var file_frame, dfield;
700
701 $body.on('click', '.wpdm-media-upload', function (event) {
702 event.preventDefault();
703 dfield = $($(this).attr('rel'));
704
705 /* If the media frame already exists, reopen it. */
706 if (file_frame) {
707 file_frame.open();
708 return;
709 }
710
711 /* Create the media frame. */
712 file_frame = wp.media.frames.file_frame = wp.media({
713 title: $(this).data('uploader_title'),
714 button: {
715 text: $(this).data('uploader_button_text')
716 },
717 multiple: false /* Set to true to allow multiple files to be selected */
718 });
719
720 /* When an image is selected, run a callback. */
721 file_frame.on('select', function () {
722 /* We set multiple to false so only get one image from the uploader */
723 attachment = file_frame.state().get('selection').first().toJSON();
724 dfield.val(attachment.url).trigger('change');
725 });
726
727 /* Finally, open the modal */
728 file_frame.open();
729 });
730
731 $body.on('click', '.btn-image-selector', function (event) {
732 event.preventDefault();
733 dfield = $($(this).attr('rel'));
734 var dfield_h = $($(this).attr('rel') + '_hidden');
735
736 if (file_frame) {
737 file_frame.open();
738 return;
739 }
740
741 file_frame = wp.media.frames.file_frame = wp.media({
742 title: $(this).data('uploader_title'),
743 button: {
744 text: $(this).data('uploader_button_text')
745 },
746 multiple: false
747 });
748
749
750 file_frame.on('select', function () {
751
752 attachment = file_frame.state().get('selection').first().toJSON();
753 dfield.attr('src', attachment.url);
754 dfield_h.val(attachment.url);
755
756 });
757
758 file_frame.open();
759 });
760
761 $body.on('click', '.pagination.async a, .__wpdm_load_async', function (e) {
762 e.preventDefault();
763 var _cont = $(this).data('container');
764 var href = this.href;
765 $(_cont).addClass('blockui');
766 localStorage.setItem('page_state_' + wpdm_url.page_code, href);
767 localStorage.setItem('page_state_container_' + wpdm_url.page_code, _cont);
768 $.get(href, function (res) {
769 $(_cont).html($(res).find(_cont).html());
770 $(_cont).removeClass('blockui');
771 });
772 });
773
774 $body.on("keyup", '.wpdm-pack-search-file', function () {
775 var value = $(this).val().toLowerCase();
776 var filelist_item = $(this).data('filelist') + " tr";
777 $(filelist_item).filter(function () {
778 $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
779 });
780 });
781
782 /* ========================================
783 FILE LIST GRID - Layout Toggle & Search
784 ======================================== */
785
786 // Layout toggle (Grid/List view)
787 $(document).on('click', '.wpdm-filelist-toggle__btn', function(e) {
788 e.preventDefault();
789 var $btn = $(this);
790 var $toggle = $btn.closest('.wpdm-filelist-toggle');
791 var targetSelector = $toggle.data('target');
792 var $grid = $(targetSelector);
793 var layout = $btn.data('layout');
794
795 // Update active button
796 $toggle.find('.wpdm-filelist-toggle__btn').removeClass('active');
797 $btn.addClass('active');
798
799 // Toggle layout class
800 if (layout === 'list') {
801 $grid.addClass('wpdm-filelist-grid--list');
802 } else {
803 $grid.removeClass('wpdm-filelist-grid--list');
804 }
805
806 // Remember preference in localStorage
807 try {
808 localStorage.setItem('wpdm_filelist_layout', layout);
809 } catch (e) {}
810 });
811
812 // Restore layout preference on page load
813 $(function() {
814 try {
815 var savedLayout = localStorage.getItem('wpdm_filelist_layout');
816 if (savedLayout === 'list') {
817 $('.wpdm-filelist-toggle').each(function() {
818 var $toggle = $(this);
819 var targetSelector = $toggle.data('target');
820 var $grid = $(targetSelector);
821
822 $toggle.find('.wpdm-filelist-toggle__btn').removeClass('active');
823 $toggle.find('[data-layout="list"]').addClass('active');
824 $grid.addClass('wpdm-filelist-grid--list');
825 });
826 }
827 } catch (e) {}
828 });
829
830 // Search for new grid-based file list and gallery
831 $(document).on('input', '.wpdm-filelist-search__input', function() {
832 var value = $(this).val().toLowerCase().trim();
833 var targetSelector = $(this).data('filelist');
834 var $items = $(targetSelector).find('.wpdm-filelist-item, .wpdm-gallery__item');
835
836 if (value === '') {
837 $items.removeClass('wpdm-filelist-hidden');
838 return;
839 }
840
841 $items.each(function() {
842 var $item = $(this);
843 var filename = $item.data('filename') || '';
844 var titleText = $item.find('.wpdm-filelist-item__title, .wpdm-gallery__title').text().toLowerCase();
845 var matches = filename.indexOf(value) > -1 || titleText.indexOf(value) > -1;
846
847 if (matches) {
848 $item.removeClass('wpdm-filelist-hidden');
849 } else {
850 $item.addClass('wpdm-filelist-hidden');
851 }
852 });
853 });
854
855 // Clear search on Escape key
856 $body.on('keydown', '.wpdm-filelist-search__input', function(e) {
857 if (e.key === 'Escape') {
858 $(this).val('').trigger('input');
859 }
860 });
861
862 /* FILE LIST GRID ENDS */
863
864 $('body').on('submit', '.__wpdm_submit_async', function (e) {
865 e.preventDefault();
866 var _cont = $(this).data('container');
867 $(_cont).addClass('blockui');
868 $(this).ajaxSubmit({
869 success: function (response) {
870 $(_cont).html($(response).find(_cont).html());
871 $(_cont).removeClass('blockui');
872 }
873 })
874 });
875
876
877 var unlocked = [];
878
879 $('.wpdm-filelist-area[data-termlock]').on('mouseover', function () {
880
881 try {
882 if (unlocked[$(this).data('packageid')] === 1) return;
883 } catch (e) {
884
885 }
886 $('#term-panel-' + $(this).data('packageid')).fadeIn('fast');
887 });
888
889 $('.terms_checkbox').on('click', function () {
890 if ($(this).is(':checked')) {
891 unlocked[$(this).data('pid')] = 1;
892 $('#term-panel-' + $(this).data('pid')).fadeOut('fast');
893 $('.download_footer_' + $(this).data('pid')).slideDown();
894 } else
895 $('.download_footer_' + $(this).data('pid')).slideUp();
896 });
897
898
899 $formcontrol = $('.input-wrapper input');
900 $formcontrol.on('focus', function () {
901 $('.input-wrapper').removeClass('input-focused');
902 $(this).parent('.input-wrapper').addClass('input-focused');
903 });
904 $formcontrol.on('change', function () {
905 $('.input-wrapper').removeClass('input-focused');
906 $(this).parent('.input-wrapper').addClass('input-focused');
907 if ($(this).val() !== '')
908 $(this).parent('.input-wrapper').addClass('input-withvalue');
909 else
910 $(this).parent('.input-wrapper').removeClass('input-withvalue');
911 });
912
913
914 });
915
916
917 function _PopupCenter(url, title, w, h) {
918 /* Fixes dual-screen position Most browsers Firefox */
919 var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
920 var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
921
922 var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
923 var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
924
925 var left = ((width / 2) - (w / 2)) + dualScreenLeft;
926 var top = ((height / 2) - (h / 2)) + dualScreenTop;
927 var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
928
929 /* Puts focus on the newWindow */
930 if (window.focus) {
931 newWindow.focus();
932 }
933
934 return false;
935 }
936
937 function generatepass(id) {
938 wpdm_pass_target = '#' + id;
939 jQuery('#generatepass').modal('show');
940 }
941
942 function hideLockFrame() {
943 jQuery('#wpdm-lock-frame').remove();
944 }
945
946 function wpdm_bootModal(heading, content, width) {
947 return WPDM.bootAlert(heading, content, width);
948 }
949
950 function wpdm_boot_popup(heading, content, buttons) {
951 var html, $ = jQuery;
952 $("#w3eden__boot_popup").remove();
953 var _buttons = '';
954 if (buttons) {
955 _buttons = '<div class="modal-footer" style="padding: 8px 15px;">\n';
956 $.each(buttons, function (i, button) {
957 var id = 'btx_' + i;
958 _buttons += "<button id='" + id + "' class='" + button.class + " btn-xs' style='font-size: 10px;padding: 3px 20px;'>" + button.label + "</button> ";
959 });
960 _buttons += '</div>\n';
961 }
962
963 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' +
964 ' <div class="modal-dialog" role="document" style="max-width: 96%;width: 350px">\n' +
965 ' <div class="modal-content" style="border-radius: 3px;overflow: hidden">\n' +
966 ' <div class="modal-header" style="padding: 12px 15px;background: #f5f5f5;">\n' +
967 ' <h4 class="modal-title" style="font-size: 9pt;font-weight: 500;padding: 0;margin: 0;letter-spacing: 0.5px">' + heading + '</h4>\n' +
968 ' </div>\n' +
969 ' <div class="modal-body text-center" style="letter-spacing: 0.5px;font-size: 10pt;font-weight: 300;padding: 25px;line-height: 1.5">\n' +
970 ' ' + content + '\n' +
971 ' </div>\n' + _buttons +
972 ' </div>\n' +
973 ' </div>\n' +
974 '</div></div>';
975 $('body').append(html);
976 $("#__boot_popup").modal('show');
977 $.each(buttons, function (i, button) {
978 var id = 'btx_' + i;
979 $('#' + id).unbind('click');
980 $('#' + id).bind('click', function () {
981 button.callback.call($("#__boot_popup"));
982 return false;
983 });
984 });
985 return $("#__boot_popup");
986 }
987
988 /**
989 * Open an url in iframe modal
990 * @param url
991 * @param closebutton
992 * @returns {boolean}
993 */
994 function wpdm_iframe_modal(url, closebutton) {
995 var iframe, $ = jQuery;
996 if (url === 'close') {
997 $('#wpdm_iframe_modal').remove();
998 $('#ifcb').remove();
999 $('body').removeClass('wpdm-iframe-modal-open');
1000 return false;
1001 }
1002 var closebutton_html = "";
1003 if (closebutton !== undefined && closebutton === true)
1004 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>";
1005
1006 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;
1007 $('body').append(iframe).addClass('wpdm-iframe-modal-open');
1008 $('#wpdm_iframe_modal').fadeIn();
1009
1010 }
1011