cord CSS styles, wip
diff --git a/xos/core/static/cord.css b/xos/core/static/cord.css
index 9d66efb..fa8d42f 100644
--- a/xos/core/static/cord.css
+++ b/xos/core/static/cord.css
@@ -1,13 +1,155 @@
+/* login page background image */
.login {
background-image: url('cord_bg.jpg');
background-size: 100%;
background-repeat: no-repeat;
}
+/* login page logo */
.login #content-main h1 {
background: url("cord_logo1.jpg") no-repeat scroll 40% center / 89% auto rgba(235, 240, 242, 0);
- height: 55px;
- background-repeat: no-repeat;
+ height: 55px;
+ background-repeat: no-repeat;
font-size: 0px;
padding-top: 70px;
}
+
+/* content page logo */
+.logo {
+ display: block;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ background: url('cord_logo1.jpg') no-repeat;
+ width: 167px;
+ height: 55px;
+ padding-left: 167px;
+}
+
+/* content page header, adjust the margin to match logo */
+.header{
+ margin-top: -90px !important;
+}
+
+/* hide the quick search box */
+.nav-quick-search {
+ display: None;
+}
+
+/* -----------------------------------------
+ Service Grid Page
+ -----------------------------------------
+*/
+
+.service-grid tr td {
+ width: 132px;
+}
+
+.service-grid-icon img {
+ width: 96px;
+ height: 96px;
+ margin-bottom: 10px;
+}
+
+/* Service Icon Screen */
+.service-grid-icon-link {
+ font-size: 125%;
+}
+
+/* -----------------------------------------
+ Font Sizes
+ -----------------------------------------
+*/
+
+/* the welcome line at the top of the screen */
+#user-tools {
+ font-size: 125%;
+}
+
+/* suit navigation tabs */
+.nav-tabs-suit li a {
+ font-size: 125%;
+}
+.nav-tabs-suit li.active a:hover,.nav-tabs-suit li a:hover{
+ font-size: 125%;
+}
+
+/* bread crumb */
+.breadcrumb {
+ font-size: 125%;
+}
+
+/* tablularInline */
+.inline-related {
+ font-size: 125%;
+}
+.inline-related select {
+ font-size: 125%;
+ height: 40px;
+}
+.table .add-row a {
+ font-size: 125%;
+}
+
+/* list view */
+#result_list th, #result_list td {
+ font-size: 125%;
+}
+
+/* application list of admins */
+.applist th, .applist td, .applist caption a {
+ font-size: 125%;
+}
+
+/* ModelAdmin stuff */
+.form-row label, .form-row span, .form-row input, .form-row textarea {
+ font-size: 125%;
+}
+
+.form-row .linked-select {
+ font-size: 125%;
+ height: 40px;
+}
+.form-row .linked-select-link {
+ font-size: 125%;
+}
+
+/* ModelAdmin help text */
+.form-horizontal .control-group .help-inline {
+ font-size: 125%;
+}
+
+/* the save buttons and tools */
+.save-box button, .save-box .btn-info, .save-box .deletelink {
+ font-size: 125%;
+}
+.italic-title {
+ font-size: 125%;
+}
+.menu-box li {
+ font-size: 125%;
+}
+
+/* left nav buttons */
+.left-nav>ul>li>a {
+ font-size: 125%;
+}
+.left-nav>ul>li>a:hover {
+ font-size: 125%;
+}
+
+/* bottom of page tools */
+.tools {
+ font-size: 125%;
+}
+
+/* bottom of page branding */
+.branding {
+ font-size: 125%;
+}
+
+
+
+
+
+
+
diff --git a/xos/templates/cord_admin/base.html b/xos/templates/cord_admin/base.html
new file mode 100644
index 0000000..80779df
--- /dev/null
+++ b/xos/templates/cord_admin/base.html
@@ -0,0 +1,287 @@
+{% 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/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">
+ <link rel="stylesheet" type="text/css" href="{% static 'cord.css' %}" media="all">
+ {% 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 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="{% static 'favicon.png' %}">
+</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">
+
+ {% block logo %}
+ <a href="{% url 'admin:index' %}"><h1 id="site-name"><img class="logo" height="70" width="259" src="{% static 'open-cloud-login-themed-light.png' %}"/></h1></a>
+ {% endblock %}
+ {% block header %}
+ {% if not is_popup %}
+ <!-- Header -->
+ <div id="header" class="header">
+
+ <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>-->
+
+ {% 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>
+ </span>
+ {% endblock %}
+ </div>
+ {% endif %}
+
+ {% block nav-global %}{% endblock %}
+
+ </div>
+ </div>
+ {% endif %}
+ <!-- END Header -->
+ {% endblock %}
+
+
+ <div class="suit-columns {{ is_popup|yesno:'one-column,two-columns' }}">
+
+ {% block content-center %}
+ <div id="suit-center" class="suit-column">
+
+ {% 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">»</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 %}
+
+
+ {% block content-left %}
+ {% if not user.is_appuser %}
+ {% if not is_popup %}
+ <div id="suit-left" class="suit-column">
+
+
+ {% include 'suit/menu.html' %}
+
+ </div>
+ {% endif %}
+ {% endif %}
+ {% endblock %}
+
+ </div>
+ </div>
+ {% endblock %}
+
+ {% if not is_popup %}
+ <!-- Sticky footer push -->
+ <div id="push"></div>
+ {% endif %}
+
+</div>
+
+{% 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="copyright">
+ {% block copyright %}
+ Copyright © 2013 DjangoSuit.com<br>Developed by <a href="http://djangosuit.com" target="_blank">DjangoSuit.com</a>
+ {% endblock %}
+ </div> -->
+
+ <div class="branding">{% block footer_branding %}
+ CORD
+ {% endblock %}</div>
+ </div>
+ </div>
+ {% endif %}
+{% endblock %}
+
+ <script src="{% static 'suit/bootstrap/js/bootstrap.min.js' %}"></script>
+ <script src="{% static 'suit/js/suit.js' %}"></script>
+ <script type="text/javascript" src="//www.google.com/jsapi"></script>
+ <!-- src="{% static 'xos_graphs.js' %}" -->
+
+ {% 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">×</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 -->
+
+
+<script>
+
+
+
+
+</script>
+</body>
+</html>
diff --git a/xos/templates/cord_admin/dashboard_base.html b/xos/templates/cord_admin/dashboard_base.html
new file mode 100644
index 0000000..ea8b7f2
--- /dev/null
+++ b/xos/templates/cord_admin/dashboard_base.html
@@ -0,0 +1,92 @@
+{% extends "admin/base.html" %}
+{% load admin_static %}
+
+{% block extrahead %}
+<link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css">
+<link rel="stylesheet" type="text/css" href="{% static 'suit/css/suit.css' %}" media="all">
+<link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables_themeroller.css">
+<link rel="stylesheet" type="text/css" href="{% static 'xos.css' %}" media="all">
+<link rel="stylesheet" type="text/css" href="{% static 'cord.css' %}" media="all">
+<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
+<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
+<script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>
+
+
+<!-- no need to include jquery here as it's already included by base.html. Including it multiple times will break mtuity statistics. -->
+<!-- src="http://code.jquery.com/jquery-1.9.1.js" -->
+
+<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
+<script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
+<script type="text/javascript" src="{% static 'log4javascript-1.4.6/log4javascript.js' %}"></script>
+<script src="{% static 'js/Leaflet.MakiMarkers.js' %}" > </script>
+
+<script>
+ $(function() {
+ $( "#hometabs" ).tabs({active: 0, //event: "mouseover"
+ //collapsible: true
+ });
+ });
+
+var consoleAppender = new log4javascript.BrowserConsoleAppender();
+var patternLayout = new log4javascript.PatternLayout("%d{HH:mm:ss,SSS} %l{s:l} %-5p - %m{1}%n");
+consoleAppender.setLayout(patternLayout);
+//var log = log4javascript.getDefaultLogger();
+var log = log4javascript.getRootLogger();
+log.addAppender(consoleAppender);
+log.setLevel(log4javascript.Level.ERROR);
+
+function confirmDialog(title,msg) {
+ var dialog = $('<div>'+msg+'</div>');
+ var def = $.Deferred();
+
+ $(dialog).dialog({
+ resizable: false,
+ title: title,
+ autoOpen: true,
+ modal: true,
+ dialogClass: "dashboard-hpc-sliver",
+ buttons: {
+ 'OK': function() {
+ def.resolve();
+ log.debug("Chose to add a sliver");
+ $( this ).dialog( "close" );
+ },
+ 'Cancel': function() {
+ def.reject();
+ $( this ).dialog( "close" );
+ }
+ },
+ close: {
+ }
+ });
+ return def.promise();
+}
+
+function errorDialog(title,msg) {
+ var dialog = $('<div>'+msg+'</div>');
+ var def = $.Deferred();
+
+ $(dialog).dialog({
+ resizable: false,
+ title: title,
+ autoOpen: true,
+ modal: true,
+ dialogClass: "dashboard-hpc-sliver",
+ buttons: {
+ 'OK': function() {
+ def.resolve();
+ $( this ).dialog( "close" );
+ },
+ },
+ close: {
+ }
+ });
+ return def.promise();
+}
+
+</script>
+{% endblock %}
+
+{% block content %}
+dashboard goes here
+{% endblock %}
diff --git a/xos/templates/cord_admin/login.html b/xos/templates/cord_admin/login.html
new file mode 100644
index 0000000..634ed02
--- /dev/null
+++ b/xos/templates/cord_admin/login.html
@@ -0,0 +1,159 @@
+{% extends "admin/base_site_login.html" %}
+{% load i18n admin_static %}
+
+{% block extrastyle %}{{ block.super }}
+<link rel="stylesheet" type="text/css" href="/static/suit/bootstrap/css/bootstrap.min.css" media="all"/>
+<link rel="stylesheet" type="text/css" href="{% static "xos.css" %}" />
+<script src="{% static 'suit/js/jquery-1.9.1.min.js' %}"></script>
+<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
+{% endblock %}
+
+
+{% block bodyclass %}login{% endblock %}
+
+{% block nav-global %}{% endblock %}
+
+{% block content_title %}{% endblock %}
+
+{% block breadcrumbs %}{% endblock %}
+
+{% block content %}
+{% if form.errors and not form.non_field_errors and not form.this_is_the_login_form.errors %}
+<p class="errornote">
+{% blocktrans count counter=form.errors.items|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
+</p>
+{% endif %}
+
+{% if form.non_field_errors or form.this_is_the_login_form.errors %}
+{% for error in form.non_field_errors %}
+<p class="errornote">
+ {{ error }}
+</p>
+{% endfor %}
+{% for error in form.this_is_the_login_form.errors %}
+<p class="errornote">
+ {{ error }}
+</p>
+{% endfor %}
+{% endif %}
+<div id="wrap">
+<div id="content-main">
+<h1><i class="icon-lock icon-white"></i> OpenCloud</h1>
+<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
+ <div class="form-row">
+ {% if not form.this_is_the_login_form.errors %}{{ form.username.errors }}{% endif %}
+ {{ form.username }}
+ </div>
+ <div class="form-row">
+ {% if not form.this_is_the_login_form.errors %}{{ form.password.errors }}{% endif %}
+ {{ form.password }}
+ <input type="hidden" name="this_is_the_login_form" value="1" />
+ <input type="hidden" name="next" value="{{ next }}" />
+ </div>
+ <div class="submit-row">
+ <input type="submit" class="btn btn-info" value="{% trans 'SIGN IN' %}" />
+ </div>
+ <div id="requestAccountLink">{% trans 'Request a new Account' %}</div>
+</form>
+
+<div id="request-account-form" title="Request an Account" style="display: none;">
+ <form>
+ <fieldset>
+ <div class="request-form-row">
+ <label for="request-first-name">First Name</label>
+ <input type="text" name="request-first-name" id="request-first-name">
+ </div>
+ <div class="request-form-row">
+ <label for="request-last-name">Last Name</label>
+ <input type="text" name="request-last-name" id="request-last-name">
+ </div>
+ <div class="request-form-row">
+ <label for="request-email">Email</label>
+ <input type="text" name="request-email" id="request-email">
+ </div>
+ <div class="request-form-row">
+ <label for="request-site-name">Site</label><br>
+ <select id="request-site-name" name="request-site-name">
+ <option>---------</option>
+ {% for site in sites %}
+ {% if site.allowNewUsers %}
+ <option>{{ site.name }}</option>
+ {% endif %}
+ {% endfor %}
+ </select>
+ </div>
+ <div class="submit-row">
+ <input id ="request-signup" class="btn btn-info" value="SIGN UP">
+ </div>
+ </fieldset>
+ </form>
+</div>
+</div>
+</div>
+
+
+<script type="text/javascript">
+$(function() {
+ initRequest();
+});
+function initRequest(){
+ $.ajax({
+ url: '/tenantview',
+ dataType: 'json',
+ success: function (data) {
+ var sites = data['sitesToBeRequested'];
+ console.log(sites);
+ for (site in sites){
+ $("#request-site-name").append("<option>" + site + "</option>");
+ }
+ }
+ });
+}
+$("#requestAccountLink").unbind().click(function(){
+ $("#request-account-form").dialog({
+ autoOpen: false,
+ modal: true,
+ dialogClass: "requestDialog",
+ });
+ $("#request-account-form").dialog("open");
+})
+$("#request-signup").unbind().click(function(){
+ $.ajax({
+ url: '/requestaccess/',
+ dataType: 'json',
+ data: {
+ email: $("#request-email").val(),
+ firstname: $("#request-first-name").val(),
+ lastname: $("#request-last-name").val(),
+ site: $("#request-site-name").val(),
+ csrfmiddlewaretoken: "{{ csrf_token }}", // < here
+ state: "inactive"
+ },
+ async: false,
+ type: 'POST',
+ success: function (response) {
+ if (response && response.error) {
+ if (response.error == "already_approved") {
+ alert("Your request has already been proccessed and approved. We are sending you another email with a new temporary password");
+ return;
+ } else if (response.error == "already_pending") {
+ alert("Your request is already pending and awaiting approval");
+ return;
+ } else if (response.error == "is_deleted") {
+ alert("Your user record is in a deleted state. Please contact OpenCloud support");
+ return;
+ }
+ }
+ $("#request-account-form").dialog("close");
+ alert("Your request has been submitted");
+ },
+ error:function (xhr, textStatus, thrownError){
+ alert("Error:", textStatus + " " + xhr.responseText);
+ }
+ });
+})
+document.getElementById('id_username').focus()
+</script>
+</div>
+</div>
+{% endblock %}