shop.balmet.com

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

install.twig (6136B)


      1 {{ header }}{{ column_left }}
      2 <div id="content">
      3 	<div class="page-header">
      4 		<div class="container-fluid">
      5 			<div class="pull-right">
      6 				<a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a>
      7 			</div>
      8 			<h1>{{ heading_title }} {{ version }}</h1>
      9 			<ul class="breadcrumb">
     10 				{% for breadcrumb in breadcrumbs %}
     11 				<li><a href="{{ breadcrumb['href'] }}">{{ breadcrumb['text'] }}</a></li>
     12 				{% endfor %}
     13 			</ul>
     14 		</div>
     15 	</div>
     16 	<div class="container-fluid">
     17 		{% if error['warning'] %}
     18 		<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i><button type="button" class="close" data-dismiss="alert">&times;</button> {{ error['warning'] }}</div>
     19 		{% endif %}
     20 		{% if success %}
     21 		<div class="alert alert-success"><i class="fa fa-exclamation-circle"></i><button type="button" class="close" data-dismiss="alert">&times;</button> {{ success }}</div>
     22 		{% endif %}
     23 		<div class="panel panel-default panel-resizable">
     24 			<div class="panel-heading">
     25 				<h3 class="panel-title">{{ text_install }}</h3>
     26 			</div>
     27 			<div class="panel-body panel-setup" style="background-image: url(view/image/{{ codename }}/background.svg)">
     28 				<div class="row">
     29 					<div class="col-md-8 col-md-offset-2 text-center">
     30 						<div class="setup-info">
     31 							<h1 class="title m-t-lg m-b-lg">{{ text_setup }}</h1>
     32 							<p class="description m-b-lg">{{ help_setup }}</p>
     33 							<div class="btn-group m-b-lg" data-toggle="buttons">
     34 								<label class="btn btn-info active" data-toggle="tooltip" title="{{ help_full_setup }}">
     35 									<input type="radio" name="action" value="{{ setup }}" checked="checked" /> {{ text_full_setup }}
     36 								</label>
     37 								<label class="btn btn-info" data-toggle="tooltip" title="{{ help_custom_setup }}">
     38 									<input type="radio" name="action" value="{{ install }}" /> {{ text_custom_setup }}
     39 								</label>
     40 							</div>
     41 							<br/>
     42 							<a action="{{ setup }}" id="button_setup" class="btn btn-danger btn-lg"><i class="fa fa-cog"></i><i class="fa fa-refresh rotate hide"></i> {{ button_setup }}</a>
     43 						</div>
     44 					</div>
     45 				</div>
     46 				<div class="row">
     47 					<div class="col-md-8 col-md-offset-2 text-center">
     48 						<div class="features">
     49 							{% for feature in features %}
     50 							<div class="feature info-window-item" data-href="{{ feature['href'] }}">
     51 								<div class="feature-wrap">
     52 									<img src="view/image/{{ feature['image'] }}" class="image" />
     53 									<p class="name">{{ feature['name'] }}</p>
     54 								</div>
     55 							</div>
     56 							{% endfor %}
     57 							<br class="clear"/>
     58 						</div>
     59 					</div>
     60 				</div>
     61 				<img src="view/image/{{ codename }}/planet.svg" class="planet" />
     62 			</div>
     63 		</div>
     64 		<div class="info-window">
     65 			<div class="info-window-wrap">
     66 				<div class="info-window-block">
     67 					<div class="info-window-close"><i class="fa fa-close"></i></div>
     68 					<div class="info-window-description"></div>
     69 				</div>
     70 			</div>
     71 		</div>
     72 		<br class="clear"/>
     73 	</div>
     74 </div>
     75 <script type="text/javascript">
     76 
     77 var column_count = 5;
     78 var feature_count = $('.features .feature').length;
     79 
     80 $('.features .feature').eq(column_count * Math.floor(feature_count / column_count)).css('margin-left', (column_count - (feature_count % column_count)) * (50 / column_count) + '%');
     81 
     82 </script>
     83 <script type="text/javascript">
     84 
     85 function showAlert(json) {
     86 	$('.alert, .text-danger').remove();
     87 	$('.form-group').removeClass('has-error');
     88 
     89 	if (json['error']) {
     90 		if (json['error']['warning']) {
     91 			$('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i><button type="button" class="close" data-dismiss="alert">&times;</button> ' + json['error']['warning'] + '</div>');
     92 		}
     93 
     94 		for (i in json['error']) {
     95 			var element = $('#input_' + i);
     96 
     97 			if (element.parent().hasClass('input-group')) {
     98                 $(element).parent().after('<div class="text-danger">' + json['error'][i] + '</div>');
     99 			} else {
    100 				$(element).after('<div class="text-danger">' + json['error'][i] + '</div>');
    101 			}
    102 		}
    103 
    104 		$('.text-danger').parents('.form-group').addClass('has-error');
    105 	}
    106 
    107 	if (json['success']) {
    108 		$('#content > .container-fluid').prepend('<div class="alert alert-success"><i class="fa fa-check-circle"></i><button type="button" class="close" data-dismiss="alert">&times;</button> ' + json['success'] + '</div>');
    109 	}
    110 }
    111 </script>
    112 <script type="text/javascript">
    113 
    114 var info_window = {
    115 	'item' : new Array(),
    116 	'current_url' : ''
    117 }
    118 	
    119 $.each($('.info-window-item'), function(key, value) {
    120 	var url = $(this).attr('data-href');
    121 		
    122 	if (url) {
    123 		$.getJSON(url + '?format=json&callback=?', function(data) {
    124 			info_window.item[url] = data['description'];
    125 		});
    126 	}
    127 });
    128 	
    129 $('.info-window-item').on('click', function() {
    130 	var url = $(this).attr('data-href');
    131 	
    132 	if (url == info_window.current_url) {
    133 		info_window.current_url = '';
    134 		$('.info-window').removeClass('resized');
    135 		$('.panel-resizable').removeClass('resized');
    136 	} else {
    137 		info_window.current_url = url;
    138 		$('.info-window .info-window-description').html(info_window.item[url]);
    139 		$('.panel-resizable').addClass('resized');
    140 		$('.info-window').addClass('resized');
    141 	}
    142 });
    143 	
    144 $('.info-window .info-window-close').on('click', function() {
    145 	info_window.current_url = '';
    146 	$('.info-window').removeClass('resized');
    147 	$('.panel-resizable').removeClass('resized');
    148 });
    149 
    150 $('body').on('click', '#button_setup', function(){
    151 	$.ajax({
    152 		type: 'post',
    153 		url: $('[name="action"]:checked').val(),
    154 		data: '',
    155 		dataType: 'json',
    156 		beforeSend: function() {
    157 			$('#button_setup .fa-refresh').removeClass('hide');
    158 			$('#button_setup .fa-cog').addClass('hide');
    159 		},
    160 		complete: function() {
    161 			$('#button_setup .fa-refresh').addClass('hide');
    162 			$('#button_setup .fa-cog').removeClass('hide');
    163 		},
    164 		success: function(json) {
    165 			showAlert(json);
    166 			
    167 			if (json['success']) {
    168 				location = '{{ module_link|replace({"&amp;" : "&"}) }}';
    169 			}
    170 		},
    171 		error: function(xhr, ajaxOptions, thrownError) {
    172 			console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    173 		}
    174     });
    175 });
    176 
    177 </script>
    178 {{ footer }}