PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.4.6
JetBackup – Backup, Restore & Migrate v1.4.6
3.1.23.6 3.1.23.5 3.1.23.3 3.1.22.4 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 5 years ago bootstrap-switch.min.js 5 years ago bootstrap.min.js 5 years ago deactivationSurvey.js 5 years ago jquery-ui.js 5 years ago jquery.fileupload.js 5 years ago jquery.iframe-transport.js 5 years ago jquery.rateyo.js 5 years ago jstree.checkbox.js 5 years ago jstree.min.js 5 years ago jstree.types.js 5 years ago jstree.wholerow.js 5 years ago less.min.js 5 years ago main.js 5 years ago popup.js 5 years ago sgNoticeDismiss.js 5 years ago sgbackup.js 5 years ago sgcloud.js 5 years ago sgdiscount.js 5 years ago sglicense.js 5 years ago sglogin.js 5 years ago sgrequesthandler.js 5 years ago sgrequesthandler.wordpress.js 5 years ago sgschedule.js 5 years ago sgsettings.js 5 years ago
main.js
553 lines
1 sgBackup = {};
2 sgBackup.isModalOpen = false;
3 SG_CURRENT_ACTIVE_AJAX = '';
4 SG_NOTICE_EXECUTION_TIMEOUT = 'timeout_error';
5 SG_NOTICE_EXECUTION_FREE_TIMEOUT = 'timeout_free_error';
6 SG_NOTICE_MIGRATION_ERROR = 'migration_error';
7 SG_NOTICE_NOT_WRITABLE_ERROR = 'restore_notwritable_error';
8
9 jQuery(window).load(function() {
10 if (jQuery('.sg-active-action-id').length == 0) {
11 sgBackup.showReviewModal();
12 }
13 });
14
15 jQuery(document).ready( function() {
16 jQuery('span[data-toggle=tooltip]').tooltip();
17
18 sgBackup.init();
19
20 jQuery('.sg-badge-warning').on('click', function () {
21 var url = jQuery(this).attr('target-url');
22 if (url) {
23 window.open(url, '_blank');
24 }
25 });
26
27 jQuery("#rateYo").rateYo({
28 rating: 5,
29 fullStar: true,
30 spacing: "3px",
31 starWidth: "16px",
32 starHeight: "16px",
33 rating: 4.5,
34 ratedFill: "#ffffff"
35 });
36
37 if (typeof SG_AJAX_REQUEST_FREQUENCY === 'undefined'){
38 SG_AJAX_REQUEST_FREQUENCY = 2000;
39 }
40
41 sgBackup.hideAjaxSpinner();
42 var notice = "";
43 jQuery('.notice-dismiss').on('click', function() {
44 if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_EXECUTION_TIMEOUT) {
45 notice = SG_NOTICE_EXECUTION_TIMEOUT;
46 }
47 else if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_EXECUTION_FREE_TIMEOUT) {
48 notice = SG_NOTICE_EXECUTION_TIMEOUT;
49 }
50 else if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_MIGRATION_ERROR) {
51 notice = SG_NOTICE_MIGRATION_ERROR;
52 }
53 else if (jQuery(this).parent().attr('data-notice-id') == SG_NOTICE_NOT_WRITABLE_ERROR) {
54 notice = SG_NOTICE_NOT_WRITABLE_ERROR
55 }
56 var sgNoticeClosedHandler = new sgRequestHandler('hideNotice', {notice: notice, token: BG_BACKUP_STRINGS.nonce});
57 sgNoticeClosedHandler.run();
58 });
59
60 //send awake requests only if there is an active action
61 if (jQuery('.sg-active-action-id').length>0) {
62 setInterval(sgBackup.awake, SG_AJAX_REQUEST_FREQUENCY);
63 }
64 });
65
66 sgBackup.awake = function(){
67 var awakeAjaxHandler = new sgRequestHandler('awake', {token: BG_BACKUP_STRINGS.nonce});
68 awakeAjaxHandler.run();
69 }
70
71 //SG init
72 sgBackup.init = function(){
73 sgBackup.initModals();
74 sgBackup.downloadButton();
75 sgBackup.navMenu();
76 sgBackup.sendUsageDataStatus();
77 };
78
79 sgBackup.sendUsageDataStatus = function ()
80 {
81 var checkbox = jQuery('.backup-send-usage-data-status');
82
83 if (!checkbox.length) {
84 return false;
85 }
86
87 checkbox.bind('switchChange.bootstrapSwitch', function () {
88 var currentStatus = jQuery(this).is(':checked');
89 var action = 'send_usage_status';
90 jQuery(this).prop('disabled', true);
91 var ajaxHandler = new sgRequestHandler(action, {currentStatus: currentStatus, token: BG_BACKUP_STRINGS.nonce});
92 ajaxHandler.callback = function(data, error) {
93 jQuery(this).prop('disabled', false);
94 }
95
96 ajaxHandler.run();
97 });
98 };
99
100 sgBackup.navMenu = function ()
101 {
102 var navMenu = jQuery('.sg-backup-sidebar-nav a');
103
104 if (!navMenu.length) {
105 return false;
106 }
107
108 navMenu.unbind('click').bind('click', function (event) {
109 event.preventDefault();
110 sgBackup.init();
111 jQuery('.sg-backup-page-content').addClass('sg-visibility-hidden');
112 jQuery('.sg-backup-sidebar-nav li').removeClass('active');
113 var currentUrl = jQuery(this).attr('href');
114
115 if (currentUrl.indexOf('wordpress.org') != -1) {
116 window.open(currentUrl);
117 }
118 var currentKey = jQuery(this).data('page-key');
119 var currentPageContent = jQuery('#sg-backup-page-content-'+currentKey);
120
121 if (!currentPageContent.length) {
122 return false;
123 }
124 jQuery(this).parent().addClass('active');
125 currentPageContent.removeClass('sg-visibility-hidden');
126 });
127 };
128
129 sgBackup.downloadButton = function()
130 {
131 var downloadButtons = jQuery('.sg-bg-download-button');
132
133 if (!downloadButtons.length) {
134 return false;
135 }
136 var isOPen = false;
137 jQuery(window).bind('click', function () {
138 if (isOPen) {
139 jQuery('.sg-backup-table .dropdown-menu').removeClass('sg-bg-show');
140 isOPen = false;
141 }
142 });
143
144 downloadButtons.bind('click', function () {
145 var currentButton = jQuery(this);
146
147 if (!currentButton.length) {
148 return false;
149 }
150 setTimeout(function () {
151 currentButton.next().addClass('sg-bg-show');
152 isOPen = true;
153 }, 0);
154 });
155 };
156
157 //SG Modal popup logic
158 sgBackup.initModals = function(){
159
160 jQuery('[data-toggle="modal"][href], [data-toggle="modal"][data-remote]').off('click').on('click', function(e) {
161 var param = '';
162 if (typeof jQuery(this).attr('data-sgbp-params') !== 'undefined'){
163 param = jQuery(this).attr('data-sgbp-params');
164 }
165
166 e.preventDefault();
167 var btn = jQuery(this),
168 url = btn.attr('data-remote'),
169 modalName = btn.attr('data-modal-name'),
170 backupType = btn.attr('sg-data-backup-type'),
171 modal = jQuery('#sg-modal');
172 if( modal.length == 0 ) {
173 modal = jQuery('' +
174 '<div class="modal fade" id="sg-modal" tabindex="-1" role="dialog" aria-hidden="true"></div>' +
175 '');
176 body.append(modal);
177 }
178 sgBackup.showAjaxSpinner('#sg-content-wrapper');
179 if (typeof sgBackup.disableUi == 'function') {
180 sgBackup.disableUi();
181 }
182
183 var ajaxHandler = new sgRequestHandler(url, {
184 param: param,
185 backupType: backupType,
186 token: BG_BACKUP_STRINGS.nonce
187 });
188
189 ajaxHandler.type = 'GET';
190 ajaxHandler.dataType = 'html';
191 ajaxHandler.callback = function(data, error) {
192 sgBackup.hideAjaxSpinner();
193 if (typeof sgBackup.enableUi == 'function') {
194 sgBackup.enableUi();
195 }
196 if (error===false) {
197 jQuery('#sg-modal').append(data);
198 }
199 modal.on('hide.bs.modal', function() {
200 if(SG_CURRENT_ACTIVE_AJAX != '') {
201 if (!confirm(BG_MAIN_STRINGS.confirmCancel)) {
202 return false;
203 }
204 SG_CURRENT_ACTIVE_AJAX.abort();
205 SG_CURRENT_ACTIVE_AJAX = '';
206 }
207 });
208 modal.one('hidden.bs.modal', function() {
209 modal.html('');
210 }).modal('show');
211 sgBackup.didOpenModal(modalName, param);
212 };
213
214 if (modalName == 'ftp-settings' || modalName == 'amazon-settings') {
215 var storage = 'FTP';
216 if (modalName == 'amazon-settings') {
217 storage = 'AMAZON';
218 }
219 error = false;
220 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: storage});
221 isFeatureAvailable.callback = function(response) {
222 if (typeof response.error !== 'undefined') {
223 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
224 jQuery('.sg-cloud-container legend').after(alert);
225 that.bootstrapSwitch('state', false);
226 sgBackup.hideAjaxSpinner();
227 }
228 else {
229 ajaxHandler.run();
230 }
231 }
232
233 isFeatureAvailable.run();
234 }
235 else {
236 ajaxHandler.run();
237 }
238 });
239 };
240
241 sgBackup.toggleSftpSettings = function() {
242 jQuery('#ftpPort').val('22');
243 jQuery('#sg-sftp-key-file-block').show();
244 jQuery('#sg-browse-key-file-block').hide();
245
246 if (jQuery('#sg-connect-with-key-file').is(':checked') && connectioType=='sftp') {
247 jQuery('#sg-browse-key-file-block').show();
248 }
249 }
250
251 sgBackup.toggleFtpSettings = function() {
252 jQuery('#ftpPort').val('21');
253 jQuery('#sg-sftp-key-file-block').hide();
254 }
255
256 // Show/hide some fields that are needed/not needed for ftp/sftp
257 sgBackup.toggleNeededFtpFields = function(connectioType) {
258 if(connectioType == 'sftp') {
259 sgBackup.toggleSftpSettings();
260
261 }
262 else if(connectioType == 'ftp') {
263 sgBackup.toggleFtpSettings();
264 }
265 }
266
267 sgBackup.didOpenModal = function(modalName, param){
268 if(modalName == 'manual-backup' || modalName == 'manual-restore'){
269 sgBackup.initManulBackupRadioInputs();
270 sgBackup.initManualBackupTooltips();
271 jQuery('#fileSystemTreeContainer').jstree({ 'core' : {
272
273 'data' : {
274 'url' : function (node) {
275 return getAjaxUrl();
276 },
277 'data' : function (node) {
278 var path = node.id;
279 return { action:"backup_guard_getBackupContent", path:path, backupName:param, token: BG_BACKUP_STRINGS.nonce };
280 }
281 }
282 },
283 "plugins" : ["wholerow", "checkbox", "types"],
284 "checkbox" : {
285 "keep_selected_style" : false
286 },
287 "types": {
288 "file": {
289 "icon": "bg-file-icon"
290 },
291 "folder": {
292 "icon": "bg-folder-icon"
293 },
294 "default":{
295 "icon": "bg-no-icon"
296 }
297 }
298 });
299 }
300 else if(modalName == 'import'){
301 sgBackup.initImportTooltips();
302 jQuery('#modal-import-2').hide();
303 jQuery('#modal-import-3').hide();
304 jQuery('#switch-modal-import-pages-back').hide();
305 jQuery('#uploadSgbpFile').hide();
306 if(jQuery('#modal-import-1').length == 0) {
307 sgBackup.toggleDownloadFromPCPage();
308 }
309 sgBackup.initFileUpload();
310 }
311 else if(modalName == 'ftp-settings'){
312 connectioType = jQuery('#sg-connection-method').val();
313 sgBackup.toggleNeededFtpFields(connectioType);
314
315 jQuery('#sg-connection-method').on('change', function(){
316 connectioType = jQuery(this).val();
317 sgBackup.toggleNeededFtpFields(connectioType);
318 });
319
320 jQuery('#sg-connect-with-key-file').on('click', function(){
321 if(jQuery(this).is(':checked')) {
322 jQuery('#sg-browse-key-file-block').show();
323 }
324 else {
325 jQuery('#sg-browse-key-file-block').hide();
326 }
327 })
328
329 sgBackup.initSFTPKeyFileSelection();
330
331 jQuery('#sg-modal').on('hidden.bs.modal', function () {
332 if(sgBackup.isFtpConnected != true) {
333 jQuery('input[data-storage=FTP]').bootstrapSwitch('state', false);
334 }
335 })
336 }
337 else if(modalName == 'amazon-settings') {
338 jQuery('#sg-modal').on('hidden.bs.modal', function () {
339 if(sgBackup.isAmazonConnected != true) {
340 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('state', false);
341 }
342 });
343 jQuery("#bucketType").on("change", function(){
344 jQuery("#bucketType option").each(function()
345 {
346 var name = jQuery(this).val();
347 jQuery(".form-group-"+name).css("display","none");
348 // Add $(this).val() to your list
349 });
350 var selected = jQuery("#bucketType").val();
351 jQuery(".form-group-"+selected).css("display","block");
352 })
353 }
354 else if(modalName == 'manual-review'){
355 var action = 'setReviewPopupState';
356 jQuery('#sgLeaveReview').click(function(){
357 var reviewUrl = jQuery(this).attr('data-review-url');
358 //Never show again
359 var reviewState = 2;
360 var ajaxHandler = new sgRequestHandler(action, {reviewState: reviewState, token: BG_BACKUP_STRINGS.nonce});
361 ajaxHandler.run();
362 window.open(reviewUrl);
363 });
364
365 jQuery('#sgDontAskAgain').click(function(){
366 //Never show again
367 var reviewState = 2;
368 var ajaxHandler = new sgRequestHandler(action, {reviewState: reviewState, token: BG_BACKUP_STRINGS.nonce});
369 ajaxHandler.run();
370 });
371
372 jQuery('#sgAskLater').click(function(){
373 var reviewState = 0;
374 var ajaxHandler = new sgRequestHandler(action, {reviewState: reviewState, token: BG_BACKUP_STRINGS.nonce});
375 ajaxHandler.run();
376 });
377 }
378 else if(modalName == 'create-schedule') {
379 sgBackup.initScheduleCreation();
380 }
381 };
382
383 sgBackup.isAnyOpenModal = function(){
384 return jQuery('#sg-modal').length;
385 };
386
387 sgBackup.alertGenerator = function(content, alertClass){
388 var sgalert = '';
389 sgalert+='<div class="alert alert-dismissible '+alertClass+'">';
390 sgalert+='<button type="button" class="close" data-dismiss="alert">×</button>';
391 if(jQuery.isArray(content)){
392 jQuery.each(content, function(index, value) {
393 sgalert+=value+'<br/>';
394 });
395 }
396 else if(content != ''){
397 sgalert+=content.replace('[','').replace(']','').replace('"','');
398 }
399 sgalert+='</div>';
400 return sgalert;
401 };
402
403 sgBackup.scrollToElement = function(id){
404 if(jQuery(id).position()){
405 if(jQuery(id).position().top < jQuery(window).scrollTop()){
406 //scroll up
407 jQuery('html,body').animate({scrollTop:jQuery(id).position().top}, 1000);
408 }
409 else if(jQuery(id).position().top + jQuery(id).height() > jQuery(window).scrollTop() + (window.innerHeight || document.documentElement.clientHeight)){
410 //scroll down
411 jQuery('html,body').animate({scrollTop:jQuery(id).position().top - (window.innerHeight || document.documentElement.clientHeight) + jQuery(id).height() + 15}, 1000);
412 }
413 }
414 };
415
416 sgBackup.showAjaxSpinner = function(appendToElement){
417 if(typeof appendToElement == 'undefined'){
418 appendToElement = '#sg-wrapper';
419 }
420 jQuery('<div class="sg-spinner"></div>').appendTo(appendToElement);
421 };
422
423 sgBackup.hideAjaxSpinner = function(){
424 jQuery('.sg-spinner').remove();
425 };
426
427 sgBackup.showReviewModal = function(){
428 if(typeof sgShowReview != 'undefined') {
429 jQuery('#sg-review').trigger("click");
430 }
431 };
432
433 sgBackup.initTablePagination = function(pageName){
434 var callBack = pageName+'';
435 jQuery.fn.sgTablePagination = function(opts){
436 var jQuerythis = this,
437 defaults = {
438 perPage: 7,
439 showPrevNext: false,
440 hidePageNumbers: false,
441 pagerSelector: '.'+pageName+' .pagination'
442 },
443 settings = jQuery.extend(defaults, opts);
444
445 var listElement = jQuerythis.children('tbody');
446 var perPage = settings.perPage;
447 var children = listElement.children();
448 var pager = jQuery('.'+pageName+'.pager');
449
450 if (typeof settings.childSelector!="undefined") {
451 children = listElement.find(settings.childSelector);
452 }
453
454 if (typeof settings.pagerSelector!="undefined") {
455 pager = jQuery(settings.pagerSelector);
456 }
457
458 var numItems = children.size();
459 var numPages = Math.ceil(numItems/perPage);
460
461 pager.data("curr",0);
462
463 if (settings.showPrevNext){
464 jQuery('<li><a href="#" class="prev_link">«</a></li>').appendTo(pager);
465 }
466
467 var curr = 0;
468 while(numPages > curr && (settings.hidePageNumbers==false)){
469 jQuery('<li><a href="#" class="page_link">'+(curr+1)+'</a></li>').appendTo(pager);
470 curr++;
471 }
472
473 if(curr<=1){
474 jQuery(settings.pagerSelector).parent('div').hide();
475 jQuery('.'+pageName+'.page_link').hide();
476 }
477
478 if (settings.showPrevNext){
479 jQuery('<li><a href="#" class="next_link">»</a></li>').appendTo(pager);
480 }
481
482 pager.find('.page_link:first').addClass('active');
483 pager.find('.prev_link').hide();
484 if (numPages<=1) {
485 pager.find('.next_link').hide();
486 }
487 pager.children().eq(1).addClass("active");
488
489 children.hide();
490 children.slice(0, perPage).show();
491
492 pager.find('li .page_link').click(function(){
493 var clickedPage = jQuery(this).html().valueOf()-1;
494 goTo(clickedPage,perPage);
495 return false;
496 });
497 pager.find('li .prev_link').click(function(){
498 previous();
499 return false;
500 });
501 pager.find('li .next_link').click(function(){
502 next();
503 return false;
504 });
505
506 function previous(){
507 var goToPage = parseInt(pager.data("curr")) - 1;
508 goTo(goToPage);
509 }
510
511 function next(){
512 goToPage = parseInt(pager.data("curr")) + 1;
513 goTo(goToPage);
514 }
515
516 function goTo(page){
517 var startAt = page * perPage,
518 endOn = startAt + perPage;
519
520 children.css('display','none').slice(startAt, endOn).show();
521
522 if (page>=1) {
523 pager.find('.prev_link').show();
524 }
525 else {
526 pager.find('.prev_link').hide();
527 }
528
529 if (page<(numPages-1)) {
530 pager.find('.next_link').show();
531 }
532 else {
533 pager.find('.next_link').hide();
534 }
535
536 pager.data("curr",page);
537 pager.children().removeClass("active");
538 pager.children().eq(page+1).addClass("active");
539
540 }
541 };
542 jQuery('table.paginated.'+pageName).sgTablePagination({pagerSelector:'.'+pageName+' .pagination',showPrevNext:true,hidePageNumbers:false,perPage:7});
543 };
544
545 sgBackup.logout = function()
546 {
547 var ajaxHandler = new sgRequestHandler('logout', {token: BG_BACKUP_STRINGS.nonce});
548 ajaxHandler.callback = function(response){
549 location.reload();
550 };
551 ajaxHandler.run();
552 }
553