{% macro navigation() -%} {% if current_user.email %} <li><a id='new_pitstop_link' href='{{ url_for('select_vehicle_for_new_pitstop') }}'>Create Pitstop</a></li> <li><a id='new_service_link' href='{{ url_for('select_vehicle_for_new_service') }}'>Create Service</a></li> <li><a id='statistics_limk' href='{{ url_for('get_statistics') }}'>Statistics</a></li> <li><a id='account_link' href='{{ url_for('get_account_page') }}'>Account</a></li> {% if current_user.has_role('admin') %} <li><a id='admin_link' href='{{ url_for('get_admin_page') }}'>Admin</a></li> {% endif %} <li><a id='logout_link' href='{{ url_for('security.logout') }}'>Logout</a></li> {% else %} <li><a id='login_link' href='{{ url_for('security.login') }}'>Login</a></li> <li><a id='register_link' 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" /> {% elif field.type == 'TextAreaField' %} <textarea class="form-control" id="{{ field.id }}" name="{{ field.id }}">{{ field.default|none_filter }}</textarea> {% 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> {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} <div class="row topspace"> <div class="col-md-4" ></div> <div class="col-md-4"> <div class="alert alert-{{category}} alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> {{ message }} </div> </div> <div class="col-md-4" ></div> </div> {% endfor %} {% endif %} {% endwith %} <div class="container topspace"> <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>