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