172 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {% macro navigation() -%}
 | |
| 	{% if current_user.email %}
 | |
| 		<li><a href='{{ url_for('select_vehicle_for_new_pitstop') }}'>Create Pitstop</a></li>
 | |
| 		<li><a href='{{ url_for('get_statistics') }}'>Statistics</a></li>
 | |
| 		<li><a href='{{ url_for('get_account_page') }}'>Account</a></li>
 | |
| 		{% if current_user.has_role('admin') %}
 | |
| 			<li><a href='{{ url_for('get_admin_page') }}'>Admin</a></li>
 | |
| 		{% endif %}
 | |
| 		<li><a href='{{ url_for('security.logout') }}'>Logout</a></li>
 | |
| 	{% else %}
 | |
| 		<li><a href='{{ url_for('security.login') }}'>Login</a></li>
 | |
| 		<li><a href='{{ url_for('security.register') }}'>Register</a></li>
 | |
| 	{% endif %}
 | |
| {%- endmacro %}
 | |
| 
 | |
| {% macro render_field_with_errors(field) %}
 | |
| <div class="form-group">
 | |
| 	{% if field.type == 'SubmitField' %}
 | |
|         <div class="col-md-4" ></div>
 | |
| 
 | |
| 		<div class="col-sm-4" style="align:center">
 | |
| 			<input id="{{ field.id }}" name="{{ field.id }}" class="btn btn-default" type="submit" value="{{ field.label.text }}">
 | |
| 		</div>
 | |
|     <!--
 | |
| 		<div class="col-sm-3" style="align:center">
 | |
|             <a class="btn btn-default" href="{{ g.data['back'] }}" role="button">Cancel</a>
 | |
| 		</div>
 | |
|     -->
 | |
|         <div class="col-md-4" ></div>
 | |
| 	{% else %}
 | |
| 		<label class="col-sm-6 control-label">
 | |
| 			{{ field.label }}
 | |
| 		</label>
 | |
| 		<div class="col-sm-6">
 | |
| 			{% if field.type == 'SelectField' %}
 | |
| 				<select id="{{ field.id }}" name="{{ field.id }}" class="form-control">
 | |
| 					{% for choice in field.choices %}
 | |
| 						<option value="{{ choice[0] }}" {% if choice[0] == field.default %}selected="selected"{%endif%}>{{ choice[1] }}</option>
 | |
| 					{% endfor %}
 | |
| 				</select>
 | |
| 			{% elif field.type == 'SelectMultipleField' %}
 | |
| 				<select id="{{ field.id }}" name="{{ field.id }}" class="form-control" multiple="multiple">
 | |
| 					{% for choice in field.choices %}
 | |
| 						<option value="{{ choice[0] }}" {% if choice[0] in field.default %}selected="selected"{%endif%}>{{ choice[1] }}</option>
 | |
| 					{% endfor %}
 | |
| 				</select>
 | |
| 			{% elif field.type == 'BooleanField' %}
 | |
| 				<input class="form-control" type="checkbox" id="{{ field.id }}" name="{{ field.id }}" value="{{ field.default|none_filter }}" aria-describedby="{{ field.id }}_help" />
 | |
| 			{% elif field.type == 'StringField' %}
 | |
| 				<input class="form-control" type="text" id="{{ field.id }}" name="{{ field.id }}" value="{{ field.default|none_filter  }}" aria-describedby="{{ field.id }}_help" />
 | |
| 			{% elif field.type == 'PasswordField' %}
 | |
| 				<input class="form-control" type="password" id="{{ field.id }}" name="{{ field.id }}" value="{{ field.default|none_filter  }}" aria-describedby="{{ field.id }}_help" />
 | |
| 			{% elif field.type == 'DateField' %}
 | |
| 				<input class="form-control" type="date" id="{{ field.id }}" name="{{ field.id }}" value="{{ field.default|none_filter  }}" aria-describedby="{{ field.id }}_help" />
 | |
| 			{% elif field.type == 'IntegerField' %}
 | |
| 				<input class="form-control" type="number" id="{{ field.id }}" name="{{ field.id }}" value="{{ field.default|none_filter  }}" step="1" aria-describedby="{{ field.id }}_help" />
 | |
| 			{% elif field.type == 'DecimalField' %}
 | |
| 				<input class="form-control" type="number" id="{{ field.id }}" name="{{ field.id }}" value="{{ field.default|none_filter  }}" step="{{ 1 / 10 ** field.places}}" aria-describedby="{{ field.id }}_help" />
 | |
| 			{% else %}
 | |
| 				{{ field(**kwargs)|safe }}
 | |
| 			{% endif %}
 | |
| 			{% if field.errors %}
 | |
| 				<p class='error'>
 | |
| 					{% for error in field.errors %}
 | |
| 						{{ error }}
 | |
| 					{% endfor %}
 | |
| 				</p>
 | |
| 			{% endif %}
 | |
| 		</div>
 | |
| 	{% endif %}
 | |
| </div>
 | |
| {% endmacro %}
 | |
| 
 | |
| {% macro render_login_form() %}
 | |
| <div class="panel panel-default">
 | |
| 	<div class="panel-body">
 | |
| 		<h3>Login</h3>
 | |
| 		<form class='form-horizontal' action="{{ url_for_security('login') }}" method="POST" name="login_user_form">
 | |
| 			{{ login_user_form.hidden_tag() }}
 | |
| 			{{ render_field_with_errors(login_user_form.email) }}
 | |
| 			{{ render_field_with_errors(login_user_form.password) }}
 | |
| 			{{ render_field_with_errors(login_user_form.remember) }}
 | |
| 			{{ render_field(login_user_form.next) }}
 | |
| 			{{ render_field_with_errors(login_user_form.submit) }}
 | |
| 			{% if security.recoverable %}
 | |
| 				<a href="{{ url_for_security('forgot_password') }}">Forgot password</a>
 | |
| 			{% endif %}
 | |
| 		</form>
 | |
| 	</div>
 | |
| </div>
 | |
| {% endmacro %}
 | |
| 
 | |
| 
 | |
| 
 | |
| <!doctype html>
 | |
| <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang=""> <![endif]-->
 | |
| <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8" lang=""> <![endif]-->
 | |
| <!--[if IE 8]>         <html class="no-js lt-ie9" lang=""> <![endif]-->
 | |
| <!--[if gt IE 8]><!--> <html class="no-js" lang=""> <!--<![endif]-->
 | |
|     <head>
 | |
|         <meta charset="utf-8">
 | |
|         <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 | |
|         <title>refuel journal</title>
 | |
|         <meta name="description" content="">
 | |
|         <meta name="viewport" content="width=device-width, initial-scale=1">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-57.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-60.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-72.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-76.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-114.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-120.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-144.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-152.png') }}">
 | |
|         <link rel="apple-touch-icon" href="{{ url_for('static', filename='apple-touch-icon-180.png') }}">
 | |
| 		<link rel="icon" type="image/png" sizes="192x192" href="{{ url_for('static', filename='android-icon-192x192.png') }}">
 | |
| 		<link rel="icon" type="image/png" sizes="32x32" href="{{ url_for('static', filename='favicon-32x32.png') }}">
 | |
| 		<link rel="icon" type="image/png" sizes="96x96" href="{{ url_for('static', filename='favicon-96x96.png') }}">
 | |
| 		<link rel="icon" type="image/png" sizes="16x16" href="{{ url_for('static', filename='favicon-16x16.png') }}">
 | |
| 
 | |
|         <!-- Latest compiled and minified CSS -->
 | |
| 		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
 | |
| 
 | |
| 		<!-- Optional theme -->
 | |
| 		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
 | |
| 
 | |
|         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
 | |
| 		<!-- Latest compiled and minified JavaScript -->
 | |
| 		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
 | |
|         <link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}">
 | |
| 		<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
 | |
| 		<script src="https://www.amcharts.com/lib/3/serial.js"></script>
 | |
| 		<script src="https://www.amcharts.com/lib/3/themes/patterns.js"></script>
 | |
| 		<script src="{{ url_for('static', filename='main.js') }}"></script>
 | |
|     </head>
 | |
|     <body>
 | |
| 	    <nav class="navbar navbar-inverse navbar-fixed-top">
 | |
| 	      <div class="container">
 | |
| 	        <div class="navbar-header">
 | |
| 	          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
 | |
| 	            <span class="sr-only">Toggle navigation</span>
 | |
| 	            <span class="icon-bar"></span>
 | |
| 	            <span class="icon-bar"></span>
 | |
| 	            <span class="icon-bar"></span>
 | |
| 	          </button>
 | |
| 	          <a class="navbar-brand" href="{{ url_for('index') }}">refuel journal</a>
 | |
| 	        </div>
 | |
| 	        <div id="navbar" class="collapse navbar-collapse">
 | |
| 	          <ul class="nav navbar-nav">
 | |
|                 {{ navigation() }}
 | |
| 	          </ul>
 | |
| 	        </div><!--/.nav-collapse -->
 | |
| 	      </div>
 | |
| 	    </nav>
 | |
| 
 | |
| 		<div class="container">
 | |
| 			<div class="starter-template">
 | |
| 				{% block body %}
 | |
| 				{% endblock %}
 | |
| 			</div>
 | |
| 		</div>
 | |
| {#
 | |
| 	    <nav class="navbar navbar-inverse navbar-fixed-bottom">
 | |
| 	      <div class="container">
 | |
| 	        <div class="navbar-footer">
 | |
| 				<a class="navbar-brand" href="">Imprint</a>
 | |
| 			</div>
 | |
| 		  </div>
 | |
| 		</nav>
 | |
| #}
 | |
|     </body>
 | |
| </html>
 |