PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.2.9
JetBackup – Backup, Restore & Migrate v1.2.9
3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / public / js / main.js
backup / public / js Last commit date
Chart.bundle.min.js 6 years ago bootstrap-switch.min.js 6 years ago bootstrap.min.js 6 years ago deactivationSurvey.js 6 years ago jquery-ui.js 6 years ago jquery.fileupload.js 6 years ago jquery.iframe-transport.js 6 years ago jquery.rateyo.js 6 years ago jstree.checkbox.js 6 years ago jstree.min.js 6 years ago jstree.types.js 6 years ago jstree.wholerow.js 6 years ago less.min.js 6 years ago main.js 6 years ago popup.js 6 years ago sgNoticeDismiss.js 6 years ago sgbackup.js 6 years ago sgcloud.js 6 years ago sgdiscount.js 6 years ago sglicense.js 6 years ago sglogin.js 6 years ago sgrequesthandler.js 6 years ago sgrequesthandler.wordpress.js 6 years ago sgschedule.js 6 years ago sgsettings.js 6 years ago
main.js
461 lines
1 sgBackup = {};
2 sgBackup.isModalOpen = false;
3 SG_CURRENT_ACTIVE_AJAX = '';
4 SG_NOTICE_EXECUTION_TIMEOUT = 'timeout_error';
5 SG_NOTICE_MIGRATION_ERROR = 'migration_error';
6 SG_NOTICE_NOT_WRITABLE_ERROR = 'restore_notwritable_error';
7
8 jQuery(window).load(function() {
9 if (jQuery('.sg-active-action-id').length == 0) {
10 sgBackup.showReviewModal();
11 }
12 });
13
14 jQuery(document).ready( function() {
15 jQuery('span[data-toggle=tooltip]').tooltip();
16
17 sgBackup.init();
18
19 jQuery('.sg-badge-warning').on('click', function () {
20 var url = jQuery(this).attr('target-url');
21 if (url) {
22 window.open(url, '_blank');
23 }
24 });
25
26 jQuery("#rateYo").rateYo({
27 rating: 5,
28 fullStar: true,
29 spacing: "3px",
30 starWidth: "16px",
31 starHeight: "16px",
32 rating: 4.5,
33 ratedFill: "#ffffff"
34 });
35
36 if (typeof SG_AJAX_REQUEST_FREQUENCY === 'undefined'){
37 SG_AJAX_REQUEST_FREQUENCY = 2000;
38 }
39
40 sgBackup.hideAjaxSpinner();
41 var notice = "";
42 jQuery('.notice-dismiss').on('click', function() {
43 if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_EXECUTION_TIMEOUT) {
44 notice = SG_NOTICE_EXECUTION_TIMEOUT;
45 }
46 else if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_MIGRATION_ERROR) {
47 notice = SG_NOTICE_MIGRATION_ERROR;
48 }
49 else if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_NOT_WRITABLE_ERROR) {
50 notice = SG_NOTICE_NOT_WRITABLE_ERROR
51 }
52 var sgNoticeClosedHandler = new sgRequestHandler('hideNotice', {notice: notice, token: BG_BACKUP_STRINGS.nonce});
53 sgNoticeClosedHandler.run();
54 });
55
56 //send awake requests only if there is an active action
57 if (jQuery('.sg-active-action-id').length>0) {
58 setInterval(sgBackup.awake, SG_AJAX_REQUEST_FREQUENCY);
59 }
60 });
61
62 sgBackup.awake = function(){
63 var awakeAjaxHandler = new sgRequestHandler('awake', {token: BG_BACKUP_STRINGS.nonce});
64 awakeAjaxHandler.run();
65 }
66
67 //SG init
68 sgBackup.init = function(){
69 sgBackup.initModals();
70 };
71
72 //SG Modal popup logic
73 sgBackup.initModals = function(){
74
75 jQuery('[data-toggle="modal"][href], [data-toggle="modal"][data-remote]').off('click').on('click', function(e) {
76 var param = '';
77 if (typeof jQuery(this).attr('data-sgbp-params') !== 'undefined'){
78 param = jQuery(this).attr('data-sgbp-params');
79 }
80
81 e.preventDefault();
82 var btn = jQuery(this),
83 url = btn.attr('data-remote'),
84 modalName = btn.attr('data-modal-name'),
85 backupType = btn.attr('sg-data-backup-type'),
86 modal = jQuery('#sg-modal');
87 if( modal.length == 0 ) {
88 modal = jQuery('' +
89 '<div class="modal fade" id="sg-modal" tabindex="-1" role="dialog" aria-hidden="true"></div>' +
90 '');
91 body.append(modal);
92 }
93 sgBackup.showAjaxSpinner('#sg-content-wrapper');
94
95 var ajaxHandler = new sgRequestHandler(url, {
96 param: param,
97 backupType: backupType,
98 token: BG_BACKUP_STRINGS.nonce
99 });
100
101 ajaxHandler.type = 'GET';
102 ajaxHandler.dataType = 'html';
103 ajaxHandler.callback = function(data, error) {
104 sgBackup.hideAjaxSpinner();
105 if (error===false) {
106 jQuery('#sg-modal').append(data);
107 }
108 modal.on('hide.bs.modal', function() {
109 if(SG_CURRENT_ACTIVE_AJAX != '') {
110 if (!confirm(BG_MAIN_STRINGS.confirmCancel)) {
111 return false;
112 }
113 SG_CURRENT_ACTIVE_AJAX.abort();
114 SG_CURRENT_ACTIVE_AJAX = '';
115 }
116 });
117 modal.one('hidden.bs.modal', function() {
118 modal.html('');
119 }).modal('show');
120 sgBackup.didOpenModal(modalName, param);
121 };
122
123 if (modalName == 'ftp-settings' || modalName == 'amazon-settings') {
124 var storage = 'FTP';
125 if (modalName == 'amazon-settings') {
126 storage = 'AMAZON';
127 }
128 error = false;
129 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: storage});
130 isFeatureAvailable.callback = function(response) {
131 if (typeof response.error !== 'undefined') {
132 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
133 jQuery('.sg-cloud-container legend').after(alert);
134 that.bootstrapSwitch('state', false);
135 sgBackup.hideAjaxSpinner();
136 }
137 else {
138 ajaxHandler.run();
139 }
140 }
141
142 isFeatureAvailable.run();
143 }
144 else {
145 ajaxHandler.run();
146 }
147 });
148 };
149
150 sgBackup.toggleSftpSettings = function() {
151 jQuery('#ftpPort').val('22');
152 jQuery('#sg-sftp-key-file-block').show();
153 jQuery('#sg-browse-key-file-block').hide();
154
155 if (jQuery('#sg-connect-with-key-file').is(':checked') && connectioType=='sftp') {
156 jQuery('#sg-browse-key-file-block').show();
157 }
158 }
159
160 sgBackup.toggleFtpSettings = function() {
161 jQuery('#ftpPort').val('21');
162 jQuery('#sg-sftp-key-file-block').hide();
163 }
164
165 // Show/hide some fields that are needed/not needed for ftp/sftp
166 sgBackup.toggleNeededFtpFields = function(connectioType) {
167 if(connectioType == 'sftp') {
168 sgBackup.toggleSftpSettings();
169
170 }
171 else if(connectioType == 'ftp') {
172 sgBackup.toggleFtpSettings();
173 }
174 }
175
176 sgBackup.didOpenModal = function(modalName, param){
177 if(modalName == 'manual-backup' || modalName == 'manual-restore'){
178 sgBackup.initManulBackupRadioInputs();
179 sgBackup.initManualBackupTooltips();
180 jQuery('#fileSystemTreeContainer').jstree({ 'core' : {
181
182 'data' : {
183 'url' : function (node) {
184 return getAjaxUrl();
185 },
186 'data' : function (node) {
187 var path = node.id;
188 return { action:"backup_guard_getBackupContent", path:path, backupName:param, token: BG_BACKUP_STRINGS.nonce };
189 }
190 }
191 },
192 "plugins" : ["wholerow", "checkbox", "types"],
193 "checkbox" : {
194 "keep_selected_style" : false
195 },
196 "types": {
197 "file": {
198 "icon": "bg-file-icon"
199 },
200 "folder": {
201 "icon": "bg-folder-icon"
202 },
203 "default":{
204 "icon": "bg-no-icon"
205 }
206 }
207 });
208 }
209 else if(modalName == 'import'){
210 sgBackup.initImportTooltips();
211 jQuery('#modal-import-2').hide();
212 jQuery('#modal-import-3').hide();
213 jQuery('#switch-modal-import-pages-back').hide();
214 jQuery('#uploadSgbpFile').hide();
215 if(jQuery('#modal-import-1').length == 0) {
216 sgBackup.toggleDownloadFromPCPage();
217 }
218 sgBackup.initFileUpload();
219 }
220 else if(modalName == 'ftp-settings'){
221 connectioType = jQuery('#sg-connection-method').val();
222 sgBackup.toggleNeededFtpFields(connectioType);
223
224 jQuery('#sg-connection-method').on('change', function(){
225 connectioType = jQuery(this).val();
226 sgBackup.toggleNeededFtpFields(connectioType);
227 });
228
229 jQuery('#sg-connect-with-key-file').on('click', function(){
230 if(jQuery(this).is(':checked')) {
231 jQuery('#sg-browse-key-file-block').show();
232 }
233 else {
234 jQuery('#sg-browse-key-file-block').hide();
235 }
236 })
237
238 sgBackup.initSFTPKeyFileSelection();
239
240 jQuery('#sg-modal').on('hidden.bs.modal', function () {
241 if(sgBackup.isFtpConnected != true) {
242 jQuery('input[data-storage=FTP]').bootstrapSwitch('state', false);
243 }
244 })
245 }
246 else if(modalName == 'amazon-settings') {
247 jQuery('#sg-modal').on('hidden.bs.modal', function () {
248 if(sgBackup.isAmazonConnected != true) {
249 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('state', false);
250 }
251 });
252 jQuery("#bucketType").on("change", function(){
253 jQuery("#bucketType option").each(function()
254 {
255 var name = jQuery(this).val();
256 jQuery(".form-group-"+name).css("display","none");
257 // Add $(this).val() to your list
258 });
259 var selected = jQuery("#bucketType").val();
260 jQuery(".form-group-"+selected).css("display","block");
261 })
262 }
263 else if(modalName == 'manual-review'){
264 var action = 'setReviewPopupState';
265 jQuery('#sgLeaveReview').click(function(){
266 var reviewUrl = jQuery(this).attr('data-review-url');
267 //Never show again
268 var reviewState = 2;
269 var ajaxHandler = new sgRequestHandler(action, {reviewState: reviewState, token: BG_BACKUP_STRINGS.nonce});
270 ajaxHandler.run();
271 window.open(reviewUrl);
272 });
273
274 jQuery('#sgDontAskAgain').click(function(){
275 //Never show again
276 var reviewState = 2;
277 var ajaxHandler = new sgRequestHandler(action, {reviewState: reviewState, token: BG_BACKUP_STRINGS.nonce});
278 ajaxHandler.run();
279 });
280
281 jQuery('#sgAskLater').click(function(){
282 var reviewState = 0;
283 var ajaxHandler = new sgRequestHandler(action, {reviewState: reviewState, token: BG_BACKUP_STRINGS.nonce});
284 ajaxHandler.run();
285 });
286 }
287 else if(modalName == 'create-schedule') {
288 sgBackup.initScheduleCreation();
289 }
290 };
291
292 sgBackup.isAnyOpenModal = function(){
293 return jQuery('#sg-modal').length;
294 };
295
296 sgBackup.alertGenerator = function(content, alertClass){
297 var sgalert = '';
298 sgalert+='<div class="alert alert-dismissible '+alertClass+'">';
299 sgalert+='<button type="button" class="close" data-dismiss="alert">×</button>';
300 if(jQuery.isArray(content)){
301 jQuery.each(content, function(index, value) {
302 sgalert+=value+'<br/>';
303 });
304 }
305 else if(content != ''){
306 sgalert+=content.replace('[','').replace(']','').replace('"','');
307 }
308 sgalert+='</div>';
309 return sgalert;
310 };
311
312 sgBackup.scrollToElement = function(id){
313 if(jQuery(id).position()){
314 if(jQuery(id).position().top < jQuery(window).scrollTop()){
315 //scroll up
316 jQuery('html,body').animate({scrollTop:jQuery(id).position().top}, 1000);
317 }
318 else if(jQuery(id).position().top + jQuery(id).height() > jQuery(window).scrollTop() + (window.innerHeight || document.documentElement.clientHeight)){
319 //scroll down
320 jQuery('html,body').animate({scrollTop:jQuery(id).position().top - (window.innerHeight || document.documentElement.clientHeight) + jQuery(id).height() + 15}, 1000);
321 }
322 }
323 };
324
325 sgBackup.showAjaxSpinner = function(appendToElement){
326 if(typeof appendToElement == 'undefined'){
327 appendToElement = '#sg-wrapper';
328 }
329 jQuery('<div class="sg-spinner"></div>').appendTo(appendToElement);
330 };
331
332 sgBackup.hideAjaxSpinner = function(){
333 jQuery('.sg-spinner').remove();
334 };
335
336 sgBackup.showReviewModal = function(){
337 if(typeof sgShowReview != 'undefined') {
338 jQuery('#sg-review').trigger("click");
339 }
340 };
341
342 sgBackup.initTablePagination = function(){
343 jQuery.fn.sgTablePagination = function(opts){
344 var jQuerythis = this,
345 defaults = {
346 perPage: 7,
347 showPrevNext: false,
348 hidePageNumbers: false,
349 pagerSelector: 'pagination'
350 },
351 settings = jQuery.extend(defaults, opts);
352
353 var listElement = jQuerythis.children('tbody');
354 var perPage = settings.perPage;
355 var children = listElement.children();
356 var pager = jQuery('.pager');
357
358 if (typeof settings.childSelector!="undefined") {
359 children = listElement.find(settings.childSelector);
360 }
361
362 if (typeof settings.pagerSelector!="undefined") {
363 pager = jQuery(settings.pagerSelector);
364 }
365
366 var numItems = children.size();
367 var numPages = Math.ceil(numItems/perPage);
368
369 pager.data("curr",0);
370
371 if (settings.showPrevNext){
372 jQuery('<li><a href="#" class="prev_link">«</a></li>').appendTo(pager);
373 }
374
375 var curr = 0;
376 while(numPages > curr && (settings.hidePageNumbers==false)){
377 jQuery('<li><a href="#" class="page_link">'+(curr+1)+'</a></li>').appendTo(pager);
378 curr++;
379 }
380
381 if(curr<=1){
382 jQuery(settings.pagerSelector).parent('div').hide();
383 jQuery('.page_link').hide();
384 }
385
386 if (settings.showPrevNext){
387 jQuery('<li><a href="#" class="next_link">»</a></li>').appendTo(pager);
388 }
389
390 pager.find('.page_link:first').addClass('active');
391 pager.find('.prev_link').hide();
392 if (numPages<=1) {
393 pager.find('.next_link').hide();
394 }
395 pager.children().eq(1).addClass("active");
396
397 children.hide();
398 children.slice(0, perPage).show();
399
400 pager.find('li .page_link').click(function(){
401 var clickedPage = jQuery(this).html().valueOf()-1;
402 goTo(clickedPage,perPage);
403 return false;
404 });
405 pager.find('li .prev_link').click(function(){
406 previous();
407 return false;
408 });
409 pager.find('li .next_link').click(function(){
410 next();
411 return false;
412 });
413
414 function previous(){
415 var goToPage = parseInt(pager.data("curr")) - 1;
416 goTo(goToPage);
417 }
418
419 function next(){
420 goToPage = parseInt(pager.data("curr")) + 1;
421 goTo(goToPage);
422 }
423
424 function goTo(page){
425 var startAt = page * perPage,
426 endOn = startAt + perPage;
427
428 children.css('display','none').slice(startAt, endOn).show();
429
430 if (page>=1) {
431 pager.find('.prev_link').show();
432 }
433 else {
434 pager.find('.prev_link').hide();
435 }
436
437 if (page<(numPages-1)) {
438 pager.find('.next_link').show();
439 }
440 else {
441 pager.find('.next_link').hide();
442 }
443
444 pager.data("curr",page);
445 pager.children().removeClass("active");
446 pager.children().eq(page+1).addClass("active");
447
448 }
449 };
450 jQuery('table.paginated').sgTablePagination({pagerSelector:'.pagination',showPrevNext:true,hidePageNumbers:false,perPage:7});
451 };
452
453 sgBackup.logout = function()
454 {
455 var ajaxHandler = new sgRequestHandler('logout', {token: BG_BACKUP_STRINGS.nonce});
456 ajaxHandler.callback = function(response){
457 location.reload();
458 };
459 ajaxHandler.run();
460 }
461