<!DOCTYPE html>
{% load static %}
{% load projecttags %}
{% load project_url_tag %}
<html lang="en">
  <head>
    <title>
      {% block title %} Toaster {% endblock %}
    </title>
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}" type="text/css"/>
    <link rel="stylesheet" href="{% static 'css/bootstrap-responsive.min.css' %}" type='text/css'/>
    <link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}" type='text/css'/>
    <link rel="stylesheet" href="{% static 'css/prettify.css' %}" type='text/css'/>
    <link rel="stylesheet" href="{% static 'css/default.css' %}" type='text/css'/>

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <script src="{% static 'js/jquery-2.0.3.min.js' %}">
    </script>
    <script src="{% static 'js/jquery.cookie.js' %}">
    </script>
    <script src="{% static 'js/bootstrap.min.js' %}">
    </script>
    <script src="{% static 'js/prettify.js' %}">
    </script>
    <script src="{% static 'js/libtoaster.js' %}">
    </script>
    {% if DEBUG %}
    <script>
      libtoaster.debug = true;
    </script>
    {% endif %}
    <script>
      libtoaster.ctx = {
        jsUrl : "{% static 'js/' %}",
        htmlUrl : "{% static 'html/' %}",
        projectsUrl : "{% url 'all-projects' %}",
        projectsTypeAheadUrl: {% url 'xhr_projectstypeahead' as prjurl%}{{prjurl|json}},
        {% if project.id %}
        projectId : {{project.id}},
        projectPageUrl : {% url 'project' project.id as purl %}{{purl|json}},
        projectName : {{project.name|json}},
        recipesTypeAheadUrl: {% url 'xhr_recipestypeahead' project.id as paturl%}{{paturl|json}},
        layersTypeAheadUrl: {% url 'xhr_layerstypeahead' project.id as paturl%}{{paturl|json}},
        machinesTypeAheadUrl: {% url 'xhr_machinestypeahead' project.id as paturl%}{{paturl|json}},
        projectBuildsUrl: {% url 'projectbuilds' project.id as pburl %}{{pburl|json}},
        xhrCustomRecipeUrl : "{% url 'xhr_customrecipe' %}",
        projectId : {{project.id}},
        xhrBuildRequestUrl: "{% url 'xhr_buildrequest' project.id %}",
        {% else %}
        projectId : undefined,
        projectPageUrl : undefined,
        projectName : undefined,
        {% endif %}
      };
    </script>
    {% block extraheadcontent %}
    {% endblock %}
  </head>

  <body style="height: 100%">

    {% csrf_token %}
    <div id="loading-notification" class="alert lead text-center" style="display:none">
      Loading <i class="fa-pulse icon-spinner"></i>
    </div>

    <div id="change-notification" class="alert lead alert-info" style="display:none">
      <button type="button" class="close" id="hide-alert">&times;</button>
      <span id="change-notification-msg"></span>
    </div>

    <div class="navbar navbar-fixed-top">
      <div class="navbar-inner">
        <div class="container-fluid">
          <a class="brand logo" href="#"><img src="{% static 'img/logo.png' %}" class="" alt="Yocto logo project"/></a>
          <span class="brand">
            <a href="/">Toaster</a>
            {% if DEBUG %}
            <i class="icon-info-sign" title="<strong>Toaster version information</strong>" data-content="<dl><dt>Git branch</dt><dd>{{TOASTER_BRANCH}}</dd><dt>Git revision</dt><dd>{{TOASTER_REVISION}}</dd></dl>"></i>
            {% endif %}
          </span>
          {% if request.resolver_match.url_name != 'landing' and request.resolver_match.url_name != 'newproject' %}
          <ul class="nav">
            <li {% if request.resolver_match.url_name == 'all-builds' %}
                class="active"
                {% endif %}>
              <a href="{% url 'all-builds' %}">
                <i class="icon-tasks"></i>
                All builds
              </a>
            </li>
            <li {% if request.resolver_match.url_name == 'all-projects'  %}
                class="active"
                {% endif %}>
              <a href="{% url 'all-projects' %}">
                <i class="icon-folder-open"></i>
                All projects
              </a>
            </li>
          </ul>
          {% endif %}
          <ul class="nav pull-right">
            <li>
              <a target="_blank" href="http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html">
                <i class="icon-book"></i>
                Manual
              </a>
            </li>
          </ul>
          <span class="pull-right divider-vertical"></span>
          <div class="btn-group pull-right">
            <a class="btn" id="new-project-button" href="{% url 'newproject' %}">New project</a>
          </div>
        </div>
      </div>
    </div>

    <div class="container-fluid top-padded">
      <div class="row-fluid">
        {% block pagecontent %}
        {% endblock %}
      </div>
    </div>
  </body>
</html>
