<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
{% extends "main.html" %}
{% block head %}
{% endblock %}

{% block header %}
  <div id="header-navbar">
    Signed in as {{user.email}} | <a class="header-navbar-link" href="{% url 'app_mgr:logout' %}">Sign Out</a>
  </div>
{% endblock %}

{% block container %}
  <div class="container-fluid">
    <div class="row">
      <div class="col-md-3 sidebar">
        {% if user.is_staff %}
          <div class="panel panel-default">
            <div class="panel-heading">
              <b class="panel-title">
                Admininstration
                <span class="label label-warning">Beta</span>
              </b>
            </div>
            <div class="panel-body">
              <ul class="navigation-list">
              <li><a class="navigation-item" href="{% url 'app_mgr:view_profile' %}">Manage user profile</a></li>
              </ul>
            </div>
          </div>
        {% endif %}
        <div class="panel panel-default">
          <div class="panel-heading">
            <b class="panel-title">Navigation</b>
          </div>
          <div class="panel-body">
            <ul class="navigation-list">
              <li><a class="navigation-item" href="{% url 'app_mgr:view_profile' %}">Manage user profile</a></li>
            </ul>
          </div>
        </div>
        {% block side_block %}
        {% endblock %}
      </div>
      <div class="col-md-9 main">
        {% block content %}
        {% endblock %}
      </div>
    </div>
  </div>
{% endblock %}
