<!DOCTYPE html>
<meta charset="utf-8"/>
<head>
    <script src="http://code.jquery.com/jquery-latest.min.js"
            type="text/javascript"></script>
    <!-- to be able to handle show/hide links in all subclasses -->
    <script>

    $(function() {
        $("a#show").bind("click", function() {
            $("#message").toggle();
        });
    });

    </script>
    <script>
$(document).ready(function() {
     $("#menu-toggle").click(function(e) {
        e.preventDefault();
        $("#wrapper").toggleClass("toggled");
        });
    });

    </script>
    <!-- bootstrap -->
    <script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
    <link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
    <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}" media="all"/>

    <div id="heading">
        <span id="loginSpan">
            {% if current_user.is_authenticated() %}
                <label>{{ _('logged in as') }} {{current_user.username }}</label> (<a href="{{ url_for('user.logout') }}">logout</a>)
            {% else %}
                <a href="{{ url_for ('user.login') }}">{{ _('login') }}</a> / <a href="{{ url_for('user.signup') }}">{{ _('sign
            up') }}</a>
            {% endif %}
        </span>
        <a href="#menu-toggle" id="menu-toggle">
            <img id="logo" src="{{ url_for('static', filename='korap-logo.svg') }}" alt="IDS Mannheim Logo"
                 class="img-rounded">
        </a>

        <h2>{{ _("korap.title") }}</h2>
    </div>
    {% block head %}
    {% endblock %}
</head>
<body>
<div id="wrapper" class="toggled">
    <!-- sidebar  -->
    {% block sidebar %}
    <!--
        <a class="glyphicon glyphicon-list" aria-hidden="true" href="#menu-toggle" id="menu-toggle"></a>
    -->
    <div id="sidebar-wrapper">
        <ul class="sidebar-nav nav">
            <li class="sidebar-brand"></li>
            <li class="active"><a href="{{ url_for('app.index')}}">Home</a></li>
            <li><a href="{{ url_for('user.profile')}}">User Management</a></li>
            <li><a href="{{ url_for('app.index')}}">Resource Management</a></li>
            <li><a href="{{ url_for('app.index')}}">OAuth-Token Management</a></li>
            <li><a href="{{ url_for('app.search')}}">Query Analysis</a></li>
            <li><a href="{{ url_for('app.index')}}">Query Serialization</a></li>
        </ul>
    </div>
    {% endblock %}
    <div id="page-content-wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-11 content">
                    {% if error %}
                    <p class="warning">{{ error }}</p>
                    {% else %}
                    {% block content %}{% endblock %}
                    {% endif %}
                </div>
            </div>
        </div>
    </div>
</div>


</body>
<footer>
    <!-- /.col-xs-12 main -->
    <a class="footer" href="#">Impressum</a>
    <a class="footer" href="#">About</a>
    <a class="footer" href="#">Contact</a>

</footer>
</body>
</html>
