shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

backup.twig (7009B)


      1 {{ header }}{{ column_left }}
      2 <div id="content">
      3   <div class="page-header">
      4     <div class="container-fluid">
      5       <h1>{{ heading_title }}</h1>
      6       <ul class="breadcrumb">
      7         {% for breadcrumb in breadcrumbs %}
      8         <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
      9         {% endfor %}
     10       </ul>
     11     </div>
     12   </div>
     13   <div class="container-fluid"> {% if error_warning %}
     14     <div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
     15       <button type="button" class="close" data-dismiss="alert">&times;</button>
     16     </div>
     17     {% endif %}
     18     {% if success %}
     19     <div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> {{ success }}
     20       <button type="button" class="close" data-dismiss="alert">&times;</button>
     21     </div>
     22     {% endif %}
     23     <div class="panel panel-default">
     24       <div class="panel-heading">
     25         <h3 class="panel-title"><i class="fa fa-exchange"></i> {{ heading_title }}</h3>
     26       </div>
     27       <div class="panel-body">
     28         <ul class="nav nav-tabs">
     29           <li class="active"><a href="#tab-backup" data-toggle="tab">{{ tab_backup }}</a></li>
     30           <li><a href="#tab-restore" data-toggle="tab">{{ tab_restore }}</a></li>
     31         </ul>
     32         <div class="tab-content">
     33           <div class="tab-pane active" id="tab-backup">
     34             <form action="{{ export }}" method="post" enctype="multipart/form-data" id="form-export" class="form-horizontal">
     35               <div class="form-group">
     36                 <label class="col-sm-2 control-label">{{ entry_export }}</label>
     37                 <div class="col-sm-10">
     38                   <div class="well well-sm" style="height: 150px; overflow: auto;"> {% for table in tables %}
     39                     <div class="checkbox">
     40                       <label>
     41                         <input type="checkbox" name="backup[]" value="{{ table }}" checked="checked" />
     42                         {{ table }}</label>
     43                     </div>
     44                     {% endfor %} </div>
     45                   <button type="button" onclick="$(this).parent().find(':checkbox').prop('checked', true);" class="btn btn-link">{{ text_select_all }}</button>
     46                   /
     47                   <button type="button" onclick="$(this).parent().find(':checkbox').prop('checked', false);" class="btn btn-link">{{ text_unselect_all }}</button>
     48                 </div>
     49               </div>
     50               <div class="form-group">
     51                 <div class="col-sm-10 col-sm-offset-2">
     52                   <button type="submit" form="form-export" class="btn btn-default"><i class="fa fa-download"></i> {{ button_export }}</button>
     53                 </div>
     54               </div>
     55             </form>
     56           </div>
     57           <div class="tab-pane" id="tab-restore">
     58             <form class="form-horizontal">
     59               <div class="form-group">
     60                 <label class="col-sm-2 control-label">{{ entry_progress }}</label>
     61                 <div class="col-sm-10">
     62                   <div id="progress-import" class="progress">
     63                     <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
     64                   </div>
     65                 </div>
     66               </div>
     67               <div class="form-group">
     68                 <div class="col-sm-10 col-sm-offset-2">
     69                   <button type="button" id="button-import" class="btn btn-primary"><i class="fa fa-upload"></i> {{ button_import }}</button>
     70                 </div>
     71               </div>
     72             </form>
     73           </div>
     74         </div>
     75       </div>
     76     </div>
     77   </div>
     78   <script type="text/javascript"><!--
     79 $('#button-import').on('click', function() {
     80 	$('#form-upload').remove();
     81 	
     82 	$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="import" /></form>');
     83 	
     84 	$('#form-upload input[name=\'import\']').trigger('click');
     85 	
     86 	if (typeof timer != 'undefined') {
     87 		clearInterval(timer);
     88 	}
     89 	
     90 	timer = setInterval(function() {
     91 		if ($('#form-upload input[name=\'import\']').val() != '') {
     92 			clearInterval(timer);
     93 	
     94 			$('#progress-import .progress-bar').attr('aria-valuenow', 0);
     95 			$('#progress-import .progress-bar').css('width', '0%');
     96 	
     97 			$.ajax({
     98 				url: 'index.php?route=tool/backup/import&user_token={{ user_token }}',
     99 				type: 'post',
    100 				dataType: 'json',
    101 				data: new FormData($('#form-upload')[0]),
    102 				cache: false,
    103 				contentType: false,
    104 				processData: false,
    105 				beforeSend: function() {
    106 					$('#button-import').button('loading');
    107 				},
    108 				complete: function() {
    109 					$('#button-import').button('reset');
    110 				},
    111 				success: function(json) {
    112 					$('.alert-dismissible').remove();
    113 					
    114 					if (json['error']) {
    115 						$('#content > .container-fluid').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
    116 					}
    117 					
    118 					if (json['success']) {
    119 						$('#content > .container-fluid').prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
    120 					}
    121 					
    122 					if (json['total']) {
    123 						$('#progress-import .progress-bar').attr('aria-valuenow', json['total']);
    124 						$('#progress-import .progress-bar').css('width', json['total'] + '%');
    125 					}
    126 					
    127 					if (json['next']) {
    128 						next(json['next']);
    129 					}
    130 				},
    131 				error: function(xhr, ajaxOptions, thrownError) {
    132 					alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    133 				}
    134 			});
    135 		}
    136 	}, 500);
    137 });
    138 
    139 function next(url) {
    140 	$.ajax({
    141 		url: url,
    142 		dataType: 'json',
    143 		success: function(json) {
    144 			$('.alert-dismissible').remove();
    145 			
    146 			if (json['error']) {
    147 				$('#content > .container-fluid').prepend('<div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
    148 			}
    149 			
    150 			if (json['success']) {
    151 				$('#content > .container-fluid').prepend('<div class="alert alert-success alert-dismissible"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
    152 			}
    153 			
    154 			if (json['total']) {
    155 				$('#progress-import .progress-bar').attr('aria-valuenow', json['total']);
    156 				$('#progress-import .progress-bar').css('width', json['total'] + '%');
    157 			}
    158 			
    159 			if (json['next']) {
    160 				next(json['next']);
    161 			}
    162 		},
    163 		error: function(xhr, ajaxOptions, thrownError) {
    164 			alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    165 		}
    166 	});
    167 }
    168   //--></script> 
    169 </div>
    170 {{ footer }}