﻿{% load admin_static %}{% load suit_tags %}{% load url from future %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
<head>
  <title>{% block title %}  {%if title %} {{ title }} | {% endif %} {{ 'ADMIN_NAME'|suit_conf }}{% endblock %}</title> 
  <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% endblock %}"/>
  <link rel="stylesheet" type="text/css" href="{% static 'suit/bootstrap/dist/css/bootstrap.min.css' %}" media="all"/>
  <link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
  <link rel="stylesheet" type="text/css" href="{% static 'xos.css' %}" media="all">
  {% if XOS_BRANDING_CSS %}
  <link rel="stylesheet" type="text/css" href="{% static 'cord.css' %}" media="all">
  <link rel="stylesheet" type="text/css" href="{{ XOS_BRANDING_CSS }}">
  {% endif %}
  {% block extrastyle %}{% endblock %}
  {% if LANGUAGE_BIDI %}
  <link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}"/>
  {% endif %}
  <script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
  <script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
  <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
  <script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
  <script type="text/javascript" src="{% static 'uploadTextarea.js' %}"></script>
  <script type="text/javascript" src="{% static 'observer_status.js' %}"></script>

  <script
    src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-2.min.js"
    data-apikey="748d877b8b4e211dcd3249c1aa46d263">
  </script>

  <!-- ngXosLib -->
  <script src="{% static 'js/vendor/ngXosVendor.js' %}"></script>
  <script src="{% static 'js/vendor/ngXosHelpers.js' %}"></script>
  <script src="{% static 'js/xosApi.js' %}"></script>

  <script type="text/javascript">var Suit = { $: $.noConflict() }; if (!$) $ = Suit.$; </script>
  {% if 'SHOW_REQUIRED_ASTERISK'|suit_conf %}
  <style type="text/css">.required:after { content: '*'; margin: 0 0 0 5px; position: absolute; color: #ccc;}</style>
  {% endif %}
  {% block extrahead %}{% endblock %}
  {% block blockbots %}
  <meta name="robots" content="NONE,NOARCHIVE"/>
  {% endblock %}
  <link rel="shortcut icon" href="{{ XOS_BRANDING_FAVICON }}"></head>
  {% load i18n %}
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
  <div id="dialog-placeholder">
    <!-- This is a placeholder for dialog boxes, like the observer calendar -->
  </div>

  <!-- Sticky footer wrap -->
  <div id="wrap">

    <!-- Container -->
    {% block container %}
    <!-- <div id="container"> -->
      
    <!-- </div> -->
    <!-- END Header -->
    {% if not is_popup %}
    <div id="wrapper">
    {% endif %}

    {% if is_popup %}
    <div id="wrapper-popup">
    {% endif %}

      <!-- Sidebar -->
      {% if not is_popup %}
      <div id="sidebar-wrapper">
        <a href="{% url 'admin:index' %}" class="hidden-xs">
          <img class="logo" src="{% static XOS_BRANDING_ICON %}"/>
        </a>
        <!--{% include 'suit/menu.html' %}-->
        {% include 'admin/menu.html' %}
        <button class="navbar-toggle collapsed visible-xs" type="button">
          <i class="glyphicon glyphicon-arrow-left"></i>
        </button>
      </div>
      {% endif %}
      <!-- /#sidebar-wrapper -->

      <!-- Page Content -->
      <div id="page-content-wrapper">
        <div class="container-fluid">
          <div class="row">
            <div class="col-xs-12">
              {% block header %}
                {% if not is_popup %}
                  <!-- Header -->
                  <div id="header" class="header">
                    <button class="navbar-toggle collapsed" type="button">
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                    </button>
                    {% block logo %}
                      <a href="{% url 'admin:index' %}" class="visible-xs">
                        <img class="logo" src="{% static XOS_BRANDING_ICON %}"/>
                      </a>
                    {% endblock %}
                    <!-- <div id="branding">
                      {% block quick-search %}
                        {% with 'SEARCH_URL'|suit_conf as search_url %}
                          {% if search_url %}
                            <form class="form-search nav-quick-search" autocomplete="off" action="{% if '/' in search_url %}{{ search_url }}{% else %}{% url search_url %}{% endif %}" method="GET"> <i class="input-icon icon-search"></i>
                              <input type="text" name="q" class="input-medium search-query" id="quick-search">
                              <input type="submit" class="submit" value="">
                            </form>
                          {% endif %}
                        {% endwith %}
                      {% endblock %}
                    </div> -->
                    {% block header_time %}
                      <!-- <div id="branding2">
                        <div class="header-content header-content-first">
                          <div class="header-column icon"> <i class="icon-time"></i></div>
                          <div class="header-column">
                            <span class="date">{% suit_date %}</span>
                            <br>
                            <span class="time" id="clock">{% suit_time %}</span>
                          </div>
                        </div>
                      </div> -->
                    {% endblock %}

                    {% block header_content %}
                      <div class="header-content">
                        <div class="header-column icon">
                          <i class="icon-comment"></i>
                        </div>
                        <div class="header-column">
                          <a href="" class="grey"> <b>2</b>
                            new messages
                          </a>
                        </div>
                      </div>
                    {% endblock %}

                    {% if user.is_active and user.is_staff %}
                      <div id="user-tools">
                        {% trans 'Welcome,' %}
                        <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">{{user.email}}</a>
                        <span id="observer-status"></span>
                        <span class="user-links">
                          {% block userlinks %}
                            {% url 'django-admindocs-docroot' as docsroot %}
                            {% if docsroot %}
                              <a href="http://guide.xosproject.org/">{% trans 'Documentation' %}</a>
                              <span class="separator">|</span>
                            {% endif %}
                            <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a>
                            <span class="separator">|</span>
                            <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
                          {% endblock %}
                        </span>
                      </div>
                    {% endif %}

                    {% block nav-global %}
                    {% endblock %}
                  </div>
                {% endif %}
              {% endblock %}
            </div>
          </div>
          <div class="row">
            <div class="col-lg-12">
              <div class="suit-columns {{ is_popup|yesno:'one-column,two-columns' }}">
                {% block content-center %}
                  {% if not is_popup %}
                    {% block minidash %}
                      <div id="openCloudTopPage">
                        {% include "admin/newminidashboard.html" %}
                      </div>
                    {% endblock %} 

                    {% block breadcrumbs %}
                      <ul class="breadcrumb">
                        <li>
                          <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
                          {% if title %}
                            <span class="divider">&raquo;</span>
                        </li>
                        <li class="active">
                          {{ title }}
                          {% endif %}
                        </li>
                      </ul>
                    {% endblock %}
                  {% endif %}

                  {% block messages %}
                    {% if messages %}
                      {% for message in messages %}
                        <div class="alert alert-{% firstof message.tags 'info' %}">
                          <button class="close" data-dismiss="alert">×</button>
                          <strong>{% if message.tags %}{{ message.tags|capfirst }}{% else %}Message{% endif %}!</strong> 
                          {{ message }}
                        </div>
                      {% endfor %}
                    {% endif %}
                  {% endblock messages %}

                  <!-- Content -->
                  <div id="content" class="{% block coltype %}colM{% endblock %} row-fluid">
                    {% block pretitle %}
                    {% endblock %}
                    {% block content_title %}
                      {% if title %}
                        <h2 class="content-title">{{ title }}</h2>
                      {% endif %}
                    {% endblock %}
                    {% block content %}
                      {% block object-tools %}
                      {% endblock %}
                      {{ content }}
                    {% endblock %}
                    {% block sidebar_content %}
                      {% block sidebar %}{% endblock %}
                    {% endblock %}
                  </div>
                  <!-- END Content -->
                  <span class="clearfix"></span>
                  <!-- </div>
                  -->
                {% endblock %}
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- /#page-content-wrapper -->
    <!-- /#wrapper -->
    {% endblock %}
    </div>
    {% if not is_popup %}
      <!-- Sticky footer push -->
      <div id="push"></div>
    {% endif %}

    {% block footer %}
      {% if not is_popup %}
        <div id="footer" class="footer">
          <div class="content">
            <div class="tools">
              {% block footer_links %}
                <a href="http://djangosuit.com/support/" target="_blank" class="icon">
                  <i class="icon-question-sign"></i>
                  Support
                </a>
                <a href="http://djangosuit.com/pricing/" target="_blank" class="icon">
                  <i class="icon-bookmark"></i>
                  Licence
                </a>
                <a href="http://github.com/darklow/django-suit/issues" target="_blank" class="icon">
                  <i class="icon-comment"></i>
                  Report a bug
                </a>
              {% endblock %}
            </div>

            <div class="statusMsg" id="statusMsg">
              <!-- this is a placeholder for xoslib views to display status messages -->
            </div>

            <div class="branding">
              {% block footer_branding %}
                {% with 'ADMIN_NAME'|suit_conf as admin_name %}
                  {{XOS_BRANDING_NAME}}
                  <!-- {{ admin_name }} -->
                  {% if admin_name == 'Django Suit' %}
                    {{ 'VERSION'|suit_conf }}
                  {% endif %}
                {% endwith %}
              {% endblock %}
            </div>
          </div>
        </div>
      {% endif %}
    {% endblock %}
  </div>

  <script src="{% static 'suit/bootstrap/dist/js/bootstrap.min.js' %}"></script>
  <script src="{% static 'suit/js/suit.js' %}"></script>
  <script type="text/javascript" src="//www.google.com/jsapi"></script>
  {% block extrajs %}
  {% endblock %}
  <script src="http://d3js.org/d3.v3.js"></script>
  <div class="modal fade hide" id="chartsModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <!--<div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
          <h4 class="modal-title" id="myModalLabel">OpenCloud</h4>
        </div>-->
        <div class="modal-body" style="overflow-y:hidden; overflow-x:hidden;">
          <div class="chartContainer">
            <div class="row">
              <div class=" padding"></div>
            </div>

            <div class="row">
              <div class=" heading">
                <p id="chartHeading" class="heading">OpenCloud</p>
              </div>
            </div>
            <div class="row">
              <div class="padding"></div>
              <div class="padding"></div>
            </div>
            <div class="row">
              <div id="graph" class="graph"></div>
            </div>
          </div>
          <div id="graph_work" style="display:none"></div>
        </div>
        <!--<div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
        -->
      </div>
      <!-- /.modal-content -->
    </div>
    <!-- /.modal-dialog -->
  </div>
  <!-- /.modal -->

  <!-- Menu Toggle Script -->
  <script>
    $(".navbar-toggle").click(function(e) {
      e.preventDefault();
      $("#wrapper").toggleClass("toggled");
    });
  </script>
</body>
</html>
