diff --git a/deploy/pip_packages.txt b/deploy/pip_packages.txt index e43ecbf9f754be2544263c6ab211155eb80c6bd8..7a73488bfd813fe1d25e561033afda97971c65e0 100644 --- a/deploy/pip_packages.txt +++ b/deploy/pip_packages.txt @@ -18,7 +18,7 @@ djangorestframework-bulk==0.2.1 pytest-django==2.8.0 factory_boy -mock +mock==1.0.1 py==1.4.29 django.js==0.8.1 diff --git a/django/website/dashboard/static/dashboard/dashboard.css b/django/website/dashboard/static/dashboard/dashboard.css index 7bfe56c8761ffa0c1c9c9ae233592beae3bc954f..ef45b636e92507ee834178077e514d2493c7d7d4 100644 --- a/django/website/dashboard/static/dashboard/dashboard.css +++ b/django/website/dashboard/static/dashboard/dashboard.css @@ -1,10 +1,11 @@ +.dashboard .panel-heading { + padding:10px 15px; +} + .dashboard .panel { margin-bottom: 20px; } -.dashboard .panel-heading { - height: 40px; - padding: 10px 15px; -} + .dashboard .widget-height-small { height: 120px; } @@ -21,7 +22,7 @@ height: 280px; } .dashboard .widget-height-medium .panel-body { - height: 240px; + height: 210px; } .dashboard .widget-height-tall { height: 420px; diff --git a/django/website/dashboard/templates/dashboard/basic-text-widget.html b/django/website/dashboard/templates/dashboard/basic-text-widget.html index 9d8316631a93455da5a0a9ea7b4c7753f3110ba1..da03387986e1301751546e87995d5d054730c1d6 100644 --- a/django/website/dashboard/templates/dashboard/basic-text-widget.html +++ b/django/website/dashboard/templates/dashboard/basic-text-widget.html @@ -1,6 +1,6 @@ <div class='panel panel-default'> <div class='panel-heading'> - <i class='fa fa-list fa-fw'></i> + <span class='fa fa-align-justify fa-fw'></span> {{ title }} </div> <div class='panel-body'> diff --git a/django/website/dashboard/templates/dashboard/dashboard.html b/django/website/dashboard/templates/dashboard/dashboard.html index 64c10aa470918331bc708cfa97a6b236f270c527..c15762cc91699fabadedb5cbeb6b24fffcdf829e 100644 --- a/django/website/dashboard/templates/dashboard/dashboard.html +++ b/django/website/dashboard/templates/dashboard/dashboard.html @@ -10,11 +10,7 @@ {% endblock %} {% block maincontent %} -<ul class="nav nav-tabs navbar-right"> - <li class="active"><a href="#home" data-toggle="tab">Ebola Questions</a></li> - <li><a href="#profile" data-toggle="tab">Rumors</a></li> -</ul> -<h1 class="page-header"><i class="fa fa-dashboard fa-fw"></i>{% trans "Dashboard" %}</h1> +<h1 class="page-header"><span class="fa fa-dashboard fa-fw"></span>{% trans "Dashboard" %}</h1> {# Actual widgets #} {% for row in rows %} <div class='row dashboard'> @@ -26,11 +22,11 @@ </div> {% endfor %} {# "Example canned data" #} -<div class="row"> +<div class="row dashboard"> <div class="col-lg-8"> - <div class="panel panel-default"> + <div class="panel panel-red"> <div class="panel-heading"> - <i class="fa fa-bar-chart-o fa-fw"></i>Ebola Questions this week + <span class="fa fa-bar-chart-o fa-fw"></span>Ebola Questions this week </div> <!-- /.panel-heading --> <div class="panel-body"> @@ -42,9 +38,9 @@ </div> <!-- /.col-lg-8 --> <div class="col-lg-4"> - <div class="panel panel-default"> + <div class="panel panel-blue"> <div class="panel-heading"> - <i class="fa fa-list fa-fw"></i>Blank widget space + <span class="fa fa-list fa-fw"></span>Blank widget space </div> <!-- /.panel-heading --> <div class="panel-body"> @@ -57,105 +53,106 @@ <!-- /.col-lg-4 --> </div> <!-- /.row --> -<div class="row"> - <div class="col-lg-12"> - <div class="panel panel-default"> - <div class="panel-heading"> - <i class="fa fa-table fa-fw"></i> Recent Messages - <div class="pull-right"> - <div class="btn-group"> - <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"> - Actions - <span class="caret"></span> - </button> - <ul class="dropdown-menu pull-right" role="menu"> - <li><a href="#">Action</a> - </li> - <li><a href="#">Another action</a> - </li> - <li><a href="#">Something else here</a> - </li> - <li class="divider"></li> - <li><a href="#">Separated link</a> - </li> - </ul> - </div> - </div> - </div> - <!-- /.panel-heading --> - <div class="panel-body"> - <div class="row"> - <div class="table-responsive"> - <table class="table table-bordered table-hover table-striped"> - <thead> - <tr> - <th>County</th> - <th>Date</th> - <th>Question</th> - <th>Type</th> - </tr> - </thead> - <tbody> - <tr> - <td>Lofa</td> - <td>5/7/15</td> - <td>What is the cause of ebola?</td> - <td>Origin</td> - </tr> - <tr> - <td>Montserrado</td> - <td>5/7/15</td> - <td>Is ebola still here or not?</td> - <td>Updates</td> - </tr> - <tr> - <td>Margibi</td> - <td>5/7/15</td> - <td>When will Liberia be free from ebola</td> - <td>Updates</td> - </tr> - <tr> - <td>Sinoe</td> - <td>5/7/15</td> - <td>How did Ebola come to Liberia?</td> - <td>Origin</td> - </tr> - <tr> - <td>Montserrado</td> - <td>5/7/15</td> - <td>HOW DO EBOLA TREAT A PERSON</td> - <td>Measures</td> - </tr> - <tr> - <td>Montserrado</td> - <td>5/7/15</td> - <td>I have been told that very soon that Liberia will be declar ebolo free now i want to know if there is any ebola case</td> - <td>Updates</td> - </tr> - <tr> - <td>Montserrado</td> - <td>5/7/15</td> - <td>EBOLA STILL IN LIBERIA?</td> - <td>Updates</td> - </tr> - <tr> - <td>Montserrado</td> - <td>5/7/15</td> - <td>How Many Person Have Die From Ebola In Liberia?</td> - <td>Numbers</td> - </tr> - </tbody> - </table> - </div> - <!-- /.table-responsive --> - </div> - <!-- /.col-lg-4 (nested) --> - </div> - <!-- /.row --> - </div> - <!-- /.panel-body --> - </div> - </div><!-- /.col-lg-12 --> +<div class="row dashboard"> + <div class="col-lg-12"> + <div class="panel panel-default"> + <div class="panel-heading"> + <span class="fa fa-table fa-fw"></span> Recent Messages + <div class="pull-right"> + <div class="btn-group"> + <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"> + Actions + <span class="caret"></span> + </button> + <ul class="dropdown-menu pull-right" role="menu"> + <li><a href="#">Action</a> + </li> + <li><a href="#">Another action</a> + </li> + <li><a href="#">Something else here</a> + </li> + <li class="divider"></li> + <li><a href="#">Separated link</a> + </li> + </ul> + </div> + </div> + </div> + <!-- /.panel-heading --> + <div class="panel-body"> + <div class="row"> + <div class="table-responsive"> + <table class="table table-hover table-striped table-no-border"> + <thead> + <tr> + <th>County</th> + <th>Date</th> + <th>Question</th> + <th>Type</th> + </tr> + </thead> + <tbody> + <tr> + <td>Lofa</td> + <td>5/7/15</td> + <td>What is the cause of ebola?</td> + <td>Origin</td> + </tr> + <tr> + <td>Montserrado</td> + <td>5/7/15</td> + <td>Is ebola still here or not?</td> + <td>Updates</td> + </tr> + <tr> + <td>Margibi</td> + <td>5/7/15</td> + <td>When will Liberia be free from ebola</td> + <td>Updates</td> + </tr> + <tr> + <td>Sinoe</td> + <td>5/7/15</td> + <td>How did Ebola come to Liberia?</td> + <td>Origin</td> + </tr> + <tr> + <td>Montserrado</td> + <td>5/7/15</td> + <td>HOW DO EBOLA TREAT A PERSON</td> + <td>Measures</td> + </tr> + <tr> + <td>Montserrado</td> + <td>5/7/15</td> + <td>I have been told that very soon that Liberia will be declar ebolo free now i want to know if there is any ebola case</td> + <td>Updates</td> + </tr> + <tr> + <td>Montserrado</td> + <td>5/7/15</td> + <td>EBOLA STILL IN LIBERIA?</td> + <td>Updates</td> + </tr> + <tr> + <td>Montserrado</td> + <td>5/7/15</td> + <td>How Many Person Have Die From Ebola In Liberia?</td> + <td>Numbers</td> + </tr> + </tbody> + </table> + </div> + <!-- /.table-responsive --> + </div> + <!-- /.col-lg-4 (nested) --> + </div> + <!-- /.row --> + </div> + <!-- /.panel-body --> + </div> + </div><!-- /.col-lg-12 --> +</div> {% endblock maincontent %} {% block lastjs %} diff --git a/django/website/hid/templates/hid/sources.html b/django/website/hid/templates/hid/sources.html index 21b2ff4ee7a049ae4f86a1ca7993dd61ab32c1bf..09ba78cd883b99efc7af6c7fce711d7b77dc6d34 100644 --- a/django/website/hid/templates/hid/sources.html +++ b/django/website/hid/templates/hid/sources.html @@ -3,7 +3,7 @@ {% load bootstrap3 %} {% block maincontent %} - <h1 class="page-header"><i class="fa fa-download fa-fw"></i>{% trans "Sources" %}</h1> + <h1 class="page-header"><span class="fa fa-download fa-fw"></span>{% trans "Sources" %}</h1> <ul class="list-unstyled"> {% for source in sources %} <li class="well item-source clearfix"> @@ -13,9 +13,9 @@ <form action="{% url "sources-upload" %}" method="post" enctype="multipart/form-data" class="item-source-actions pull-right"> {% csrf_token %} - <a class="btn btn-primary btn-block btn-sm" value="View/Edit data" type="button" href="{% url "data-view" %}"><i class="fa fa-pencil fa-fw"></i> View & Edit data</a> + <a class="btn btn-primary btn-block btn-sm" value="View/Edit data" type="button" href="{% url "data-view" %}"><span class="fa fa-pencil fa-fw"></span> View & Edit data</a> {% bootstrap_form source.form show_label=False %} - <a class="btn-sm item-source-upload btn-block btn-primary" type="button" value="Upload" href="{% url "data-view" %}"><i class="fa fa-upload fa-fw"></i> Upload</a> + <a class="btn-sm item-source-upload btn-block btn-primary" type="button" value="Upload" href="{% url "data-view" %}"><span class="fa fa-upload fa-fw"></span> Upload</a> </form> </li> {% endfor %} diff --git a/django/website/hid/templates/hid/table.html b/django/website/hid/templates/hid/table.html index 97dd15f0868af75baef1de83bfb8e6808472d61a..3e2a2d91a11ce56773d969630ccb5a3343096140 100644 --- a/django/website/hid/templates/hid/table.html +++ b/django/website/hid/templates/hid/table.html @@ -5,7 +5,7 @@ <div class="table-container"> {% endif %} {% block table %} -<table{% if table.attrs %} {{ table.attrs.as_html }}{% endif %}> +<table class="table table-hover table-striped table-no-border"{% if table.attrs %} {{ table.attrs.as_html }}{% endif %}> {% nospaceless %} {% block table.thead %} <thead> @@ -53,9 +53,11 @@ {% with table.page.paginator.count as total %} {% with table.page.object_list|length as count %} {% block pagination %} + + <ul class="pagination {{ pagination_class }}"> {% if table.page.has_previous %} - {% nospaceless %}{% block pagination.previous %}<li class="previous"><a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">{% trans "Previous" %}</a></li>{% endblock pagination.previous %}{% endnospaceless %} + {% nospaceless %}{% block pagination.previous %}<li class="previous"><a title="previous" class="btn btn-primary btn-circle" href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}"><span class="fa fa-chevron-left fw"></span></a></li>{% endblock pagination.previous %}{% endnospaceless %} {% endif %} {% if table.page.has_previous or table.page.has_next %} @@ -63,7 +65,7 @@ {% endif %} {% if table.page.has_next %} - {% nospaceless %}{% block pagination.next %}<li class="next"><a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">{% trans "Next" %}</a></li>{% endblock pagination.next %}{% endnospaceless %} + {% nospaceless %}{% block pagination.next %}<li class="next"><a class="btn btn-primary btn-circle" title="next" href="{% querystring table.prefixed_page_field=table.page.next_page_number %}"><span class="fa fa-chevron-right fw"></span></a></li>{% endblock pagination.next %}{% endnospaceless %} {% endif %} {% nospaceless %}{% block pagination.cardinality %}<li class="cardinality">{% if total != count %}{% blocktrans %}{{ count }} of {{ total }}{% endblocktrans %}{% else %}{{ total }}{% endif %} {% if total == 1 %}{{ table.data.verbose_name }}{% else %}{{ table.data.verbose_name_plural }}{% endif %}</li>{% endblock pagination.cardinality %}{% endnospaceless %} diff --git a/django/website/hid/templates/hid/view.html b/django/website/hid/templates/hid/view.html index 7e0a45bc85dfc10b4f5ace0bf7dbe9ae0dd08b9e..290bfdc705637b5e3ab64a3e99995e33e5d3154d 100644 --- a/django/website/hid/templates/hid/view.html +++ b/django/website/hid/templates/hid/view.html @@ -4,19 +4,41 @@ {% load render_table from django_tables2 %} {% block maincontent %} -<h1 class="page-header"><i class="fa fa-pencil fa-fw"></i>{% trans "View & Edit" %}</h1> - <form action="{% url "data-view-process" %}" method="post" class="view-items-form">{% csrf_token %} - {% with pagination_class="col-lg-12 pull-right pager" %} - <div class="col-lg-4 pull-right view-items-actions"> - {% bootstrap_button "Save Changes" button_type="submit" value="Update" button_class="btn-sm pull-right btn-primary table-submit" %} - </div> - {% render_table table %} - {% endwith %} - - {% block table_finished %} - {% bootstrap_button "Save Changes" button_type="submit" value="Update" button_class="btn-sm btn-primary pull-right table-submit" %} - {% endblock table_finished %} - </form> +<ul class="nav nav-pills navbar-right nav-hanging-tabs"> + <li class="active"><a href="#home" data-toggle="tab">All</a></li> + <li><a href="#profile" data-toggle="tab">Questions</a></li> + <li><a href="#profile" data-toggle="tab">Rumors</a></li> + +</ul> +<h1 class="page-header"><span class="fa fa-pencil fa-fw"></span>{% trans "View & Edit" %}</h1> + <div class='row'> + <div class="col-lg-12"> + <form action="{% url "data-view-process" %}" method="post" class="view-items-form">{% csrf_token %} + <div class="panel panel-default"> + <div class="panel-heading"> + <span class="fa fa-table fa-fw"></span> Questions + <div class="pull-right"> + <div class="btn-group"> + {% bootstrap_button "Save Changes" button_type="submit" value="Update" button_class="btn btn-success btn-sm table-submit" %} + </div> + </div> + </div> + <div class="panel-body"> + {% with pagination_class="pagination-circle-nav" %} + {% render_table table %} + {% endwith %} + + </div> + <div class="panel-footer clearfix"> + {% bootstrap_button "Save Changes" button_type="submit" value="Update" button_class="btn btn-success pull-right btn-sm table-submit" %} + + </div> + </div> + + </form> + </div> +</div> + {% endblock maincontent %} {% block lastjs %} diff --git a/django/website/hid/templates/hid/widgets/chart.html b/django/website/hid/templates/hid/widgets/chart.html index 938c236f63934fd69808f7e1a7c9c0c9daa9b398..35a57e837386cc7925208934780163904cd90c2c 100644 --- a/django/website/hid/templates/hid/widgets/chart.html +++ b/django/website/hid/templates/hid/widgets/chart.html @@ -1,7 +1,7 @@ {% load json_data %} <div class='panel panel-default'> <div class='panel-heading'> - <i class='fa fa-bar-chart-o fa-fw'></i> + <span class='fa fa-bar-chart-o fa-fw'></span> {{name}} </div> <div class='panel-body'> diff --git a/django/website/hid/tests/views_tests.py b/django/website/hid/tests/views_tests.py index af305258f431b320507d47317e5c24fad3a9a330..5aa709778e75c1a540d7b437ddc03ab59d9061f4 100644 --- a/django/website/hid/tests/views_tests.py +++ b/django/website/hid/tests/views_tests.py @@ -94,6 +94,7 @@ def test_get_categories_filters_out_removed(): @pytest.fixture def request_item(): '''Create item and request''' + msg = {'body': "Message text"} transport.items.create(msg) diff --git a/django/website/media/css/styles.css b/django/website/media/css/styles.css index ae0f45e5e20815159171bd181038efc0486c9580..ec6cac6d26c019f3693ca28ce5b14bfe70356197 100644 --- a/django/website/media/css/styles.css +++ b/django/website/media/css/styles.css @@ -1144,7 +1144,7 @@ hr { margin-top: 21px; margin-bottom: 21px; border: 0; - border-top: 1px solid #f0efed; + border-top: 1px solid #edecec; } .sr-only { position: absolute; @@ -1303,7 +1303,7 @@ small, } mark, .mark { - background-color: #ff9f3c; + background-color: #f29e30; padding: .2em; } .text-left { @@ -1334,10 +1334,10 @@ mark, color: #c3bcb4; } .text-primary { - color: #4f63b8; + color: #0f6cb6; } a.text-primary:hover { - color: #3d4e97; + color: #0b5087; } .text-success { color: #ffffff; @@ -1365,16 +1365,16 @@ a.text-danger:hover { } .bg-primary { color: #fff; - background-color: #4f63b8; + background-color: #0f6cb6; } a.bg-primary:hover { - background-color: #3d4e97; + background-color: #0b5087; } .bg-success { - background-color: #60a144; + background-color: #56ac4a; } a.bg-success:hover { - background-color: #4b7d35; + background-color: #44883b; } .bg-info { background-color: #404965; @@ -1383,21 +1383,21 @@ a.bg-info:hover { background-color: #2c3246; } .bg-warning { - background-color: #ff9f3c; + background-color: #f29e30; } a.bg-warning:hover { - background-color: #ff8609; + background-color: #e1860e; } .bg-danger { - background-color: #de5d5a; + background-color: #d8502f; } a.bg-danger:hover { - background-color: #d63330; + background-color: #b33e21; } .page-header { padding-bottom: 9.5px; margin: 42px 0 21px; - border-bottom: 1px solid #f0efed; + border-bottom: 1px solid #edecec; } ul, ol { @@ -1465,7 +1465,7 @@ blockquote { padding: 10.5px 21px; margin: 0 0 21px; font-size: 18.75px; - border-left: 5px solid #f0efed; + border-left: 5px solid #edecec; } blockquote p:last-child, blockquote ul:last-child, @@ -1489,7 +1489,7 @@ blockquote .small:before { blockquote.pull-right { padding-right: 15px; padding-left: 0; - border-right: 5px solid #f0efed; + border-right: 5px solid #edecec; border-left: 0; text-align: right; } @@ -2352,14 +2352,14 @@ table th[class*="col-"] { .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th { - background-color: #60a144; + background-color: #56ac4a; } .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { - background-color: #558f3c; + background-color: #4d9a42; } .table > thead > tr > td.info, .table > tbody > tr > td.info, @@ -2394,14 +2394,14 @@ table th[class*="col-"] { .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th { - background-color: #ff9f3c; + background-color: #f29e30; } .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { - background-color: #ff9222; + background-color: #f09318; } .table > thead > tr > td.danger, .table > tbody > tr > td.danger, @@ -2415,14 +2415,14 @@ table th[class*="col-"] { .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { - background-color: #de5d5a; + background-color: #d8502f; } .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { - background-color: #da4845; + background-color: #c84526; } .table-responsive { overflow-x: auto; @@ -2569,7 +2569,7 @@ output { .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { - background-color: #f0efed; + background-color: #edecec; opacity: 1; } .form-control[disabled], @@ -2813,7 +2813,7 @@ select[multiple].form-group-lg .form-control { .has-success .input-group-addon { color: #ffffff; border-color: #ffffff; - background-color: #60a144; + background-color: #56ac4a; } .has-success .form-control-feedback { color: #ffffff; @@ -2843,7 +2843,7 @@ select[multiple].form-group-lg .form-control { .has-warning .input-group-addon { color: #ffffff; border-color: #ffffff; - background-color: #ff9f3c; + background-color: #f29e30; } .has-warning .form-control-feedback { color: #ffffff; @@ -2873,7 +2873,7 @@ select[multiple].form-group-lg .form-control { .has-error .input-group-addon { color: #ffffff; border-color: #ffffff; - background-color: #de5d5a; + background-color: #d8502f; } .has-error .form-control-feedback { color: #ffffff; @@ -3076,8 +3076,8 @@ fieldset[disabled] .btn-default.active { } .btn-primary { color: #ffffff; - background-color: #4f63b8; - border-color: #4f63b8; + background-color: #0f6cb6; + border-color: #0f6cb6; } .btn-primary:hover, .btn-primary:focus, @@ -3086,8 +3086,8 @@ fieldset[disabled] .btn-default.active { .btn-primary.active, .open > .dropdown-toggle.btn-primary { color: #ffffff; - background-color: #3d4e97; - border-color: #3a4a90; + background-color: #0b5087; + border-color: #0a4a7d; } .btn-primary:active, .btn-primary.active, @@ -3112,17 +3112,17 @@ fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { - background-color: #4f63b8; - border-color: #4f63b8; + background-color: #0f6cb6; + border-color: #0f6cb6; } .btn-primary .badge { - color: #4f63b8; + color: #0f6cb6; background-color: #ffffff; } .btn-success { color: #ffffff; - background-color: #60a144; - border-color: #60a144; + background-color: #56ac4a; + border-color: #56ac4a; } .btn-success:hover, .btn-success:focus, @@ -3131,8 +3131,8 @@ fieldset[disabled] .btn-primary.active { .btn-success.active, .open > .dropdown-toggle.btn-success { color: #ffffff; - background-color: #4b7d35; - border-color: #467632; + background-color: #44883b; + border-color: #418138; } .btn-success:active, .btn-success.active, @@ -3157,11 +3157,11 @@ fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active { - background-color: #60a144; - border-color: #60a144; + background-color: #56ac4a; + border-color: #56ac4a; } .btn-success .badge { - color: #60a144; + color: #56ac4a; background-color: #ffffff; } .btn-info { @@ -3211,8 +3211,8 @@ fieldset[disabled] .btn-info.active { } .btn-warning { color: #ffffff; - background-color: #ff9f3c; - border-color: #ff9f3c; + background-color: #f29e30; + border-color: #f29e30; } .btn-warning:hover, .btn-warning:focus, @@ -3221,8 +3221,8 @@ fieldset[disabled] .btn-info.active { .btn-warning.active, .open > .dropdown-toggle.btn-warning { color: #ffffff; - background-color: #ff8609; - border-color: #fe8100; + background-color: #e1860e; + border-color: #d7800e; } .btn-warning:active, .btn-warning.active, @@ -3247,17 +3247,17 @@ fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active { - background-color: #ff9f3c; - border-color: #ff9f3c; + background-color: #f29e30; + border-color: #f29e30; } .btn-warning .badge { - color: #ff9f3c; + color: #f29e30; background-color: #ffffff; } .btn-danger { color: #ffffff; - background-color: #de5d5a; - border-color: #de5d5a; + background-color: #d8502f; + border-color: #d8502f; } .btn-danger:hover, .btn-danger:focus, @@ -3266,8 +3266,8 @@ fieldset[disabled] .btn-warning.active { .btn-danger.active, .open > .dropdown-toggle.btn-danger { color: #ffffff; - background-color: #d63330; - border-color: #d12e2a; + background-color: #b33e21; + border-color: #aa3b20; } .btn-danger:active, .btn-danger.active, @@ -3292,11 +3292,11 @@ fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active { - background-color: #de5d5a; - border-color: #de5d5a; + background-color: #d8502f; + border-color: #d8502f; } .btn-danger .badge { - color: #de5d5a; + color: #d8502f; background-color: #ffffff; } .btn-link { @@ -3458,7 +3458,7 @@ tbody.collapse.in { .dropdown-menu > li > a:focus { text-decoration: none; color: #ffffff; - background-color: #4f63b8; + background-color: #0f6cb6; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, @@ -3466,7 +3466,7 @@ tbody.collapse.in { color: #ffffff; text-decoration: none; outline: 0; - background-color: #4f63b8; + background-color: #0f6cb6; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, @@ -3791,7 +3791,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { line-height: 1; color: #282625; text-align: center; - background-color: #f0efed; + background-color: #edecec; border: 1px solid #cccccc; border-radius: 0; } @@ -3876,7 +3876,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; - background-color: #f0efed; + background-color: #edecec; } .nav > li.disabled > a { color: #c3bcb4; @@ -3891,7 +3891,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { - background-color: #f0efed; + background-color: #edecec; border-color: #282625; } .nav .nav-divider { @@ -3917,7 +3917,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { border-radius: 0 0 0 0; } .nav-tabs > li > a:hover { - border-color: #f0efed #f0efed #dddddd; + border-color: #edecec #edecec #dddddd; } .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, @@ -3985,7 +3985,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #ffffff; - background-color: #4f63b8; + background-color: #0f6cb6; } .nav-stacked > li { float: none; @@ -4474,8 +4474,8 @@ fieldset[disabled] .navbar-default .btn-link:focus { color: #cccccc; } .navbar-inverse { - background-color: #4f63b8; - border-color: #3d4e97; + background-color: #0f6cb6; + border-color: #0b5087; } .navbar-inverse .navbar-brand { color: #ffffff; @@ -4494,13 +4494,13 @@ fieldset[disabled] .navbar-default .btn-link:focus { .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { color: #ffffff; - background-color: #3d4e97; + background-color: #0b5087; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { color: #ffffff; - background-color: #3d4e97; + background-color: #0b5087; } .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, @@ -4513,27 +4513,27 @@ fieldset[disabled] .navbar-default .btn-link:focus { } .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { - background-color: #3d4e97; + background-color: #0b5087; } .navbar-inverse .navbar-toggle .icon-bar { background-color: #ffffff; } .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { - border-color: #4154a2; + border-color: #0c5895; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { - background-color: #3d4e97; + background-color: #0b5087; color: #ffffff; } @media (max-width: 767px) { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #3d4e97; + border-color: #0b5087; } .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #3d4e97; + background-color: #0b5087; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #ffffff; @@ -4541,13 +4541,13 @@ fieldset[disabled] .navbar-default .btn-link:focus { .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { color: #ffffff; - background-color: #3d4e97; + background-color: #0b5087; } .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { color: #ffffff; - background-color: #3d4e97; + background-color: #0b5087; } .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, @@ -4630,7 +4630,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus { .pagination > li > a:focus, .pagination > li > span:focus { color: #000000; - background-color: #f0efed; + background-color: #edecec; border-color: #dddddd; } .pagination > .active > a, @@ -4706,7 +4706,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus { .pager li > a:hover, .pager li > a:focus { text-decoration: none; - background-color: #f0efed; + background-color: #edecec; } .pager .next > a, .pager .next > span { @@ -4757,18 +4757,18 @@ a.label:focus { background-color: #000000; } .label-primary { - background-color: #4f63b8; + background-color: #0f6cb6; } .label-primary[href]:hover, .label-primary[href]:focus { - background-color: #3d4e97; + background-color: #0b5087; } .label-success { - background-color: #60a144; + background-color: #56ac4a; } .label-success[href]:hover, .label-success[href]:focus { - background-color: #4b7d35; + background-color: #44883b; } .label-info { background-color: #404965; @@ -4778,18 +4778,18 @@ a.label:focus { background-color: #2c3246; } .label-warning { - background-color: #ff9f3c; + background-color: #f29e30; } .label-warning[href]:hover, .label-warning[href]:focus { - background-color: #ff8609; + background-color: #e1860e; } .label-danger { - background-color: #de5d5a; + background-color: #d8502f; } .label-danger[href]:hover, .label-danger[href]:focus { - background-color: #d63330; + background-color: #b33e21; } .badge { display: inline-block; @@ -4802,7 +4802,7 @@ a.label:focus { vertical-align: baseline; white-space: nowrap; text-align: center; - background-color: #4f63b8; + background-color: #0f6cb6; border-radius: 10px; } .badge:empty { @@ -4841,7 +4841,7 @@ a.badge:focus { padding: 30px 15px; margin-bottom: 30px; color: inherit; - background-color: #f0efed; + background-color: #edecec; } .jumbotron h1, .jumbotron .h1 { @@ -4853,7 +4853,7 @@ a.badge:focus { font-weight: 200; } .jumbotron > hr { - border-top-color: #dad5d0; + border-top-color: #d4d2d2; } .container .jumbotron, .container-fluid .jumbotron { @@ -4934,12 +4934,12 @@ a.thumbnail.active { color: inherit; } .alert-success { - background-color: #60a144; - border-color: #638f3c; + background-color: #56ac4a; + border-color: #5c9a42; color: #ffffff; } .alert-success hr { - border-top-color: #577d35; + border-top-color: #51883b; } .alert-success .alert-link { color: #e6e6e6; @@ -4956,23 +4956,23 @@ a.thumbnail.active { color: #e6e6e6; } .alert-warning { - background-color: #ff9f3c; - border-color: #ff742d; + background-color: #f29e30; + border-color: #f17522; color: #ffffff; } .alert-warning hr { - border-top-color: #ff6413; + border-top-color: #ea670f; } .alert-warning .alert-link { color: #e6e6e6; } .alert-danger { - background-color: #de5d5a; - border-color: #db4d62; + background-color: #d8502f; + border-color: #d12c27; color: #ffffff; } .alert-danger hr { - border-top-color: #d7384f; + border-top-color: #bb2723; } .alert-danger .alert-link { color: #e6e6e6; @@ -5010,7 +5010,7 @@ a.thumbnail.active { line-height: 21px; color: #ffffff; text-align: center; - background-color: #4f63b8; + background-color: #0f6cb6; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-transition: width 0.6s ease; @@ -5031,7 +5031,7 @@ a.thumbnail.active { animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { - background-color: #60a144; + background-color: #56ac4a; } .progress-striped .progress-bar-success { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); @@ -5047,7 +5047,7 @@ a.thumbnail.active { background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-warning { - background-color: #ff9f3c; + background-color: #f29e30; } .progress-striped .progress-bar-warning { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); @@ -5055,7 +5055,7 @@ a.thumbnail.active { background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-danger { - background-color: #de5d5a; + background-color: #d8502f; } .progress-striped .progress-bar-danger { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); @@ -5143,7 +5143,7 @@ a.list-group-item:focus { .list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { - background-color: #f0efed; + background-color: #edecec; color: #c3bcb4; cursor: not-allowed; } @@ -5162,7 +5162,7 @@ a.list-group-item:focus { .list-group-item.active:focus { z-index: 2; color: #ffffff; - background-color: #4f63b8; + background-color: #0f6cb6; border-color: #dddddd; } .list-group-item.active .list-group-item-heading, @@ -5179,11 +5179,11 @@ a.list-group-item:focus { .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { - color: #e0e4f3; + color: #9acef7; } .list-group-item-success { color: #ffffff; - background-color: #60a144; + background-color: #56ac4a; } a.list-group-item-success { color: #ffffff; @@ -5194,7 +5194,7 @@ a.list-group-item-success .list-group-item-heading { a.list-group-item-success:hover, a.list-group-item-success:focus { color: #ffffff; - background-color: #558f3c; + background-color: #4d9a42; } a.list-group-item-success.active, a.list-group-item-success.active:hover, @@ -5227,7 +5227,7 @@ a.list-group-item-info.active:focus { } .list-group-item-warning { color: #ffffff; - background-color: #ff9f3c; + background-color: #f29e30; } a.list-group-item-warning { color: #ffffff; @@ -5238,7 +5238,7 @@ a.list-group-item-warning .list-group-item-heading { a.list-group-item-warning:hover, a.list-group-item-warning:focus { color: #ffffff; - background-color: #ff9222; + background-color: #f09318; } a.list-group-item-warning.active, a.list-group-item-warning.active:hover, @@ -5249,7 +5249,7 @@ a.list-group-item-warning.active:focus { } .list-group-item-danger { color: #ffffff; - background-color: #de5d5a; + background-color: #d8502f; } a.list-group-item-danger { color: #ffffff; @@ -5260,7 +5260,7 @@ a.list-group-item-danger .list-group-item-heading { a.list-group-item-danger:hover, a.list-group-item-danger:focus { color: #ffffff; - background-color: #da4845; + background-color: #c84526; } a.list-group-item-danger.active, a.list-group-item-danger.active:hover, @@ -5509,58 +5509,58 @@ a.list-group-item-danger.active:focus { border-bottom: 1px solid #dddddd; } .panel-default { - border-color: #dddddd; + border-color: #edecec; } .panel-default > .panel-heading { color: #282625; - background-color: #f5f5f5; - border-color: #dddddd; + background-color: #f7f7f7; + border-color: #edecec; } .panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #dddddd; + border-top-color: #edecec; } .panel-default > .panel-heading .badge { - color: #f5f5f5; + color: #f7f7f7; background-color: #282625; } .panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #dddddd; + border-bottom-color: #edecec; } .panel-primary { - border-color: #4f63b8; + border-color: #0f6cb6; } .panel-primary > .panel-heading { color: #ffffff; - background-color: #4f63b8; - border-color: #4f63b8; + background-color: #0f6cb6; + border-color: #0f6cb6; } .panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #4f63b8; + border-top-color: #0f6cb6; } .panel-primary > .panel-heading .badge { - color: #4f63b8; + color: #0f6cb6; background-color: #ffffff; } .panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #4f63b8; + border-bottom-color: #0f6cb6; } .panel-success { - border-color: #638f3c; + border-color: #5c9a42; } .panel-success > .panel-heading { color: #ffffff; - background-color: #60a144; - border-color: #638f3c; + background-color: #56ac4a; + border-color: #5c9a42; } .panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #638f3c; + border-top-color: #5c9a42; } .panel-success > .panel-heading .badge { - color: #60a144; + color: #56ac4a; background-color: #ffffff; } .panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #638f3c; + border-bottom-color: #5c9a42; } .panel-info { border-color: #323e4f; @@ -5581,40 +5581,40 @@ a.list-group-item-danger.active:focus { border-bottom-color: #323e4f; } .panel-warning { - border-color: #ff742d; + border-color: #f17522; } .panel-warning > .panel-heading { color: #ffffff; - background-color: #ff9f3c; - border-color: #ff742d; + background-color: #f29e30; + border-color: #f17522; } .panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ff742d; + border-top-color: #f17522; } .panel-warning > .panel-heading .badge { - color: #ff9f3c; + color: #f29e30; background-color: #ffffff; } .panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ff742d; + border-bottom-color: #f17522; } .panel-danger { - border-color: #db4d62; + border-color: #d12c27; } .panel-danger > .panel-heading { color: #ffffff; - background-color: #de5d5a; - border-color: #db4d62; + background-color: #d8502f; + border-color: #d12c27; } .panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #db4d62; + border-top-color: #d12c27; } .panel-danger > .panel-heading .badge { - color: #de5d5a; + color: #d8502f; background-color: #ffffff; } .panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #db4d62; + border-bottom-color: #d12c27; } .embed-responsive { position: relative; @@ -6479,11 +6479,11 @@ body { #page-wrapper { padding: 30px 15px; min-height: 1000px; - background-color: white; - -webkit-box-shadow: inset 5px 0px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 5px 0px 10px rgba(0, 0, 0, 0.2); - -o-box-shadow: inset 5px 0px 10px rgba(0, 0, 0, 0.2); - box-shadow: inset 5px 0px 10px rgba(0, 0, 0, 0.2); + background-color: #edecec; + -webkit-box-shadow: inset 0px 0px 10px rgba(51, 51, 51, 0.38); + -moz-box-shadow: inset 0px 0px 10px rgba(51, 51, 51, 0.38); + -o-box-shadow: inset 0px 0px 10px rgba(51, 51, 51, 0.38); + box-shadow: inset 0px 0px 10px rgba(51, 51, 51, 0.38); } @media (min-width: 768px) { #page-wrapper { @@ -6515,7 +6515,7 @@ body { font-size: 13px; text-align: center; padding: 10px; - background-color: #f0efed; + background-color: #edecec; } .site-info a { color: #78716e; @@ -6543,7 +6543,7 @@ body { min-height: 50px; } .navbar-top-links > li > a, -.navbar-top-links > li > a > i { +.navbar-top-links > li > a > .fa { color: #ffffff; } .navbar-top-links .dropdown-menu li { @@ -6581,7 +6581,7 @@ body { } .navbar-top-links > li > a:hover, .navbar-top-links > .open > a:focus { - background-color: #404965; + background-color: #002d62; } .sidebar { margin-top: 51px; @@ -6594,7 +6594,7 @@ body { padding: 15px; } .sidebar ul li a.active { - background-color: #ffffff; + background-color: #edecec; } .sidebar .arrow { float: right; @@ -6637,19 +6637,19 @@ body { transition: all .5s; } .btn-primary.btn-outline { - color: #4f63b8; + color: #0f6cb6; } .btn-success.btn-outline { - color: #60a144; + color: #56ac4a; } .btn-info.btn-outline { color: #404965; } .btn-warning.btn-outline { - color: #ff9f3c; + color: #f29e30; } .btn-danger.btn-outline { - color: #de5d5a; + color: #d8502f; } .btn-primary.btn-outline:hover, .btn-success.btn-outline:hover, @@ -6658,7 +6658,7 @@ body { .btn-danger.btn-outline:hover { color: white; } -.btn-primary > i { +.btn-primary > .fa { color: #ffffff; } .login-panel { @@ -6709,74 +6709,121 @@ body { .huge { font-size: 40px; } +.panel { + border: none; + border-color: transparent; + -webkit-box-shadow: 0px 0px 5px 4; + -moz-box-shadow: 0px 0px 5px 4; + -o-box-shadow: 0px 0px 5px 4; + box-shadow: 0px 0px 5px 4; +} +.panel-heading { + font-weight: bold; + padding: 25px; + border: none; +} +.panel-heading .fa { + font-size: 22px; +} +.panel-blue, +.panel-primary { + border-color: #0f6cb6; +} +.panel-blue .panel-heading, +.panel-primary .panel-heading { + border-color: #0f6cb6; + color: white; + background-color: #0f6cb6; +} +.panel-blue .panel-heading .fa, +.panel-primary .panel-heading .fa { + color: white; +} +.panel-blue a, +.panel-primary a { + color: #56ac4a; +} +.panel-blue a:hover, +.panel-primary a:hover { + color: #3b7733; +} .panel-green { - border-color: #60a144; + border-color: #56ac4a; } .panel-green .panel-heading { - border-color: #60a144; + border-color: #56ac4a; + color: white; + background-color: #56ac4a; +} +.panel-green .panel-heading .fa { color: white; - background-color: #60a144; } .panel-green a { - color: #60a144; + color: #56ac4a; } .panel-green a:hover { - color: #406b2d; + color: #3b7733; } .panel-red { - border-color: #de5d5a; + border-color: #d8502f; } .panel-red .panel-heading { - border-color: #de5d5a; + border-color: #d8502f; + color: white; + background-color: #d8502f; +} +.panel-red .panel-heading .fa { color: white; - background-color: #de5d5a; } .panel-red a { - color: #de5d5a; + color: #d8502f; } .panel-red a:hover { - color: #c42b27; + color: #9d361d; } .panel-yellow { - border-color: #ff9f3c; + border-color: #f29e30; } .panel-yellow .panel-heading { - border-color: #ff9f3c; + border-color: #f29e30; + color: white; + background-color: #f29e30; +} +.panel-yellow .panel-heading .fa { color: white; - background-color: #ff9f3c; } .panel-yellow a { - color: #ff9f3c; + color: #f29e30; } .panel-yellow a:hover { - color: #ef7900; + color: #c9770d; } .fa-fw { - color: #404965; + color: #5e5e5e; margin-right: 5px; } .navbar-inverse .badge { background-color: #fff; - color: #4f63b8; + color: #0f6cb6; } body { -webkit-font-smoothing: antialiased; } .text-primary, .text-primary:hover { - color: #4f63b8; + color: #0f6cb6; } .text-success, .text-success:hover { - color: #60a144; + color: #56ac4a; } .text-danger, .text-danger:hover { - color: #de5d5a; + color: #d8502f; } .text-warning, .text-warning:hover { - color: #ff9f3c; + color: #f29e30; } .text-info, .text-info:hover { @@ -6821,12 +6868,12 @@ table .info a, .has-warning.radio-inline label, .has-warning.checkbox-inline label, .has-warning .form-control-feedback { - color: #ff9f3c; + color: #f29e30; } .has-warning .form-control, .has-warning .form-control:focus, .has-warning .input-group-addon { - border: 1px solid #ff9f3c; + border: 1px solid #f29e30; } .has-error .help-block, .has-error .control-label, @@ -6839,12 +6886,12 @@ table .info a, .has-error.radio-inline label, .has-error.checkbox-inline label, .has-error .form-control-feedback { - color: #de5d5a; + color: #d8502f; } .has-error .form-control, .has-error .form-control:focus, .has-error .input-group-addon { - border: 1px solid #de5d5a; + border: 1px solid #d8502f; } .has-success .help-block, .has-success .control-label, @@ -6857,15 +6904,16 @@ table .info a, .has-success.radio-inline label, .has-success.checkbox-inline label, .has-success .form-control-feedback { - color: #60a144; + color: #56ac4a; } .has-success .form-control, .has-success .form-control:focus, .has-success .input-group-addon { - border: 1px solid #60a144; + border: 1px solid #56ac4a; } .nav-pills > li > a { border-radius: 0; + background-color: #ffffff; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { @@ -6908,25 +6956,25 @@ table .info a, color: #282625; } a.list-group-item-success.active { - background-color: #60a144; + background-color: #56ac4a; } a.list-group-item-success.active:hover, a.list-group-item-success.active:focus { - background-color: #558f3c; + background-color: #4d9a42; } a.list-group-item-warning.active { - background-color: #ff9f3c; + background-color: #f29e30; } a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus { - background-color: #ff9222; + background-color: #f09318; } a.list-group-item-danger.active { - background-color: #de5d5a; + background-color: #d8502f; } a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus { - background-color: #da4845; + background-color: #c84526; } .modal .close { color: #282625; @@ -6934,16 +6982,30 @@ a.list-group-item-danger.active:focus { .popover { color: #282625; } +.table-no-border > thead > tr > th, +.table > tbody > tr > th, +.table-no-border > tfoot > tr > th, +.table > thead > tr > td, +.table-no-border > tbody > tr > td, +.table > tfoot > tr > td { + border: none; +} .table .form-control { line-height: 1em; height: inherit; padding: 5px; } -.created, -.timestamp { +td.created, +td.timestamp { color: #78716e; font-size: 13px; } +th.delete > input { + margin-right: 10px; +} +th.delete > label { + margin-bottom: 0; +} .view-items-actions { position: relative; bottom: 65px; @@ -6956,13 +7018,36 @@ a.list-group-item-danger.active:focus { .view-items-form .pagination li { padding: 10px; } -.messages-box .alert { - padding: 5px 10px; +.messages-box > ul { margin-top: 40px; + color: #fff; +} +.messages-box > ul > li { + padding: 5px 10px; +} +.pagination-circle-nav .btn-primary, +.pagination-circle-nav > li:first-child > a { + border: none; + padding: 7px; + background-color: #0f6cb6; + border-bottom-left-radius: 15px; + border-top-left-radius: 15px; + float: inherit; } .bootstrap3-multi-input { display: none; } +.nav-hanging-tabs { + margin-top: 20px; + margin-right: 0; +} +.nav-hanging-tabs > li > a { + background-color: rgba(0, 0, 0, 0.05); + padding: 14px 18px; +} +#side-menu { + padding-top: 14.5px; +} .clearfix:before, .clearfix:after, .dl-horizontal dd:before, diff --git a/django/website/media/less/internews-bootstrap.less b/django/website/media/less/internews-bootstrap.less index ed0dd13e79d75aa4fd4e920bd0e618c6a0b84415..e4d25b7f144411ba5c0dea9874a9053b035d121e 100644 --- a/django/website/media/less/internews-bootstrap.less +++ b/django/website/media/less/internews-bootstrap.less @@ -6,5 +6,7 @@ @import "internews-cosmo.less"; @import "view-edit.less"; @import "sources.less"; +@import "widgets.less"; +@import "navigation.less"; @import "../bootstrap/less/mixins.less"; @import "../bootstrap/less/utilities.less"; \ No newline at end of file diff --git a/django/website/media/less/internews-cosmo.less b/django/website/media/less/internews-cosmo.less index 792f2e59208f060247ea7854321937c834172be9..2aff8bfe59a224b549954a4df5cf64fa167cc2c5 100644 --- a/django/website/media/less/internews-cosmo.less +++ b/django/website/media/less/internews-cosmo.less @@ -150,6 +150,7 @@ table, & > li > a { border-radius: 0; + background-color:@gray-lightest; } } diff --git a/django/website/media/less/internews-mixins.less b/django/website/media/less/internews-mixins.less index 569c8c7c229c90f4ad98361a9913542b75afc918..15177fac210914d0cb0080bde2d7588cd0edda2b 100644 --- a/django/website/media/less/internews-mixins.less +++ b/django/website/media/less/internews-mixins.less @@ -1,8 +1,4 @@ -// Box shadow -// @position = default, inset -// @horizontal = offset -// @transparency = .box-shadow(@horizontal, @vertical, @spread:5px, @color: rgba(0,0,0,0.4)) { -webkit-box-shadow:@arguments; -moz-box-shadow:@arguments; @@ -10,9 +6,9 @@ box-shadow:@arguments; } -.box-shadow-inset(@position:inset, @horizontal:5, @vertical:0, @spread:10px, @color: rgba(0,0,0,0.2)) { +.box-shadow-inset(@position:inset, @horizontal:0, @vertical:0, @spread:10px, @color: rgba(51,51,51,0.38)) { -webkit-box-shadow:@arguments; -moz-box-shadow:@arguments; -o-box-shadow:@arguments; box-shadow:@arguments; -} +} \ No newline at end of file diff --git a/django/website/media/less/internews-variables.less b/django/website/media/less/internews-variables.less index d95891b96a58fac6fdb40cb611f59e36c7b2e160..601b1d10fd11c6748a2907667e4e60de551a6ff4 100644 --- a/django/website/media/less/internews-variables.less +++ b/django/website/media/less/internews-variables.less @@ -8,20 +8,20 @@ // //## Gray and brand colors for use across Bootstrap. -@gray-base: #000; +@gray-base: #5e5e5e; @gray: #78716e; @gray-darker: darken(@gray, 50%); @gray-dark: darken(@gray, 30%); @gray-light: #C3BCB4; -@gray-lighter: lighten(@gray-light, 20%); +@gray-lighter: #EDECEC; @gray-lightest: lighten(@gray-light, 40%); -@brand-primary: #4F63B8; -@brand-secondary: #404965; -@brand-success: #60A144; +@brand-primary: #0F6CB6; +@brand-secondary: #002D62; +@brand-success: #56AC4A; @brand-info: #404965; -@brand-warning: #FF9F3C; -@brand-danger: #DE5D5A; +@brand-warning: #F29E30; +@brand-danger: #D8502F; //== Scaffolding @@ -715,8 +715,8 @@ @panel-footer-bg: #f5f5f5; @panel-default-text: @gray-dark; -@panel-default-border: #ddd; -@panel-default-heading-bg: #f5f5f5; +@panel-default-border: @gray-lighter; +@panel-default-heading-bg: #f7f7f7; @panel-primary-text: #fff; @panel-primary-border: @brand-primary; diff --git a/django/website/media/less/internews.less b/django/website/media/less/internews.less index 00edf78cc6caae2e887de385796d50503a86e045..028946fe1e41a0acdeebefecfde364f0505906e8 100644 --- a/django/website/media/less/internews.less +++ b/django/website/media/less/internews.less @@ -13,8 +13,8 @@ body { #page-wrapper { padding: 30px 15px; min-height: 1000px; - background-color: white; - .box-shadow-inset(inset, 5px, 0px); + background-color: @gray-lighter; + .box-shadow-inset(inset, 0px, 0px); } @media(min-width:768px) { @@ -89,7 +89,7 @@ body { } .navbar-top-links > li > a, -.navbar-top-links > li > a > i { +.navbar-top-links > li > a > .fa { color:@body-bg; } @@ -157,7 +157,7 @@ body { .sidebar ul li { a { &.active { - background-color: @gray-lightest; + background-color: @gray-lighter; } } } @@ -244,7 +244,7 @@ body { color: white; } -.btn-primary > i { +.btn-primary > .fa { color:@body-bg; } @@ -310,18 +310,54 @@ body { margin: 15px 0; } -// Custom Colored Panels +// Panel customisation .huge { font-size: 40px; } +.panel { + border:none; + border-color:transparent; + .box-shadow(0px, 0px, 5px, 4); +} + +.panel-heading { + font-weight:bold; + padding:25px; + border:none; + .fa { + font-size:22px; + } +} + +.panel-blue, .panel-primary { + border-color: @brand-primary; + .panel-heading { + border-color: @brand-primary; + color: white; + background-color: @brand-primary; + .fa { + color:white; + } + } + a { + color: @brand-success; + &:hover { + color: darken(@brand-success, 15%); + } + } +} + .panel-green { border-color: @brand-success; .panel-heading { border-color: @brand-success; color: white; background-color: @brand-success; + .fa { + color:white; + } } a { color: @brand-success; @@ -337,6 +373,9 @@ body { border-color: @brand-danger; color: white; background-color: @brand-danger; + .fa { + color:white; + } } a { color: @brand-danger; @@ -352,6 +391,9 @@ body { border-color: @brand-warning; color: white; background-color: @brand-warning; + .fa { + color:white; + } } a { color: @brand-warning; @@ -363,7 +405,7 @@ body { //icons .fa-fw { - color:@brand-secondary; + color:@gray-base; margin-right:5px; } diff --git a/django/website/media/less/navigation.less b/django/website/media/less/navigation.less new file mode 100644 index 0000000000000000000000000000000000000000..7648071fdb4eab658efd35edb8c8b23d573d20e7 --- /dev/null +++ b/django/website/media/less/navigation.less @@ -0,0 +1,15 @@ +//internews navigation overrides + +.nav-hanging-tabs { + margin-top:20px; + margin-right:0; +} + +.nav-hanging-tabs > li > a { + background-color:rgba(0,0,0,0.05); + padding:14px 18px; +} + +#side-menu { + padding-top:@navbar-padding-vertical; +} diff --git a/django/website/media/less/view-edit.less b/django/website/media/less/view-edit.less index f8e8aa27bd728381f3f16b51e0e4e91a83221d79..e7022fdc1e11767cce86814cd1ce8c437921d9a4 100644 --- a/django/website/media/less/view-edit.less +++ b/django/website/media/less/view-edit.less @@ -1,16 +1,30 @@ // View/edit +.table-no-border > thead > tr > th, .table > tbody > tr > th, +.table-no-border > tfoot > tr > th, .table > thead > tr > td, +.table-no-border > tbody > tr > td, .table > tfoot > tr > td { + border:none; +} + .table .form-control { line-height:1em; height:inherit; padding:5px; } -.created, .timestamp { +td.created, td.timestamp { color:@gray; font-size:@font-size-small; } +th.delete > input { + margin-right:10px; +} + +th.delete > label { + margin-bottom:0; +} + .view-items-actions { position:relative; bottom:65px; @@ -25,7 +39,24 @@ } } -.messages-box .alert { - padding:5px 10px; +.messages-box > ul { margin-top:40px; + color:#fff; } + +.messages-box > ul > li { + padding:5px 10px; +} + +//circle navigation + +.pagination-circle-nav .btn-primary, +.pagination-circle-nav > li:first-child > a { + border:none; + padding:7px; + background-color:@brand-primary; + border-bottom-left-radius: 15px; + border-top-left-radius: 15px; + float:inherit; +} + diff --git a/django/website/media/less/widgets.less b/django/website/media/less/widgets.less new file mode 100644 index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc --- /dev/null +++ b/django/website/media/less/widgets.less @@ -0,0 +1 @@ + diff --git a/django/website/settings.py b/django/website/settings.py index ebbc47668ed3e937821fcde03aed8efae1b5e4e5..2d614e42492cfbcd50989bcf9685b71ef68c7252 100644 --- a/django/website/settings.py +++ b/django/website/settings.py @@ -63,7 +63,7 @@ USE_L10N = True # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-tz USE_TZ = True -SHORT_DATETIME_FORMAT = 'D d/m/y H:i' +SHORT_DATETIME_FORMAT = 'd M Y H:i' # TODO this is used in hid/tables.py # and should probably use FORMAT_MODULE_PATH instead.? diff --git a/django/website/templates/Copy of base_side.html b/django/website/templates/Copy of base_side.html new file mode 100644 index 0000000000000000000000000000000000000000..89d7fcc404f0ad8abd39a0604c12865b71469dac --- /dev/null +++ b/django/website/templates/Copy of base_side.html @@ -0,0 +1,67 @@ +{% extends "base.html" %} +{% load i18n %} +{% block content %} +<!-- Navigation --> + <div class="navbar-default sidebar" role="navigation"> + <div class="featured-image"> + <img class="img-responsive" src="{{ STATIC_URL }}images/rsz_west-african-girl.jpg" alt="West African girl" /> + </div> + <nav class="sidebar-nav navbar-collapse"> + <ul class="nav" id="side-menu"> + <li><a href="{% url "dashboard" %}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a></li> + <li><a href="{% url "sources" %}"><i class="fa fa-download fa-fw"></i> Sources</a></li> + <li><a href="{% url "data-view" %}"><i class="fa fa-pencil fa-fw"></i> View & Edit</a></li> + </ul> + </nav> + <div class="site-info"> + <p>An <a href="http://www.internews.org" title="Internews website">Internews project</a><br /> + Site by<a href="http://www.aptivate.org" title="Aptivate website"> Aptivate</a></p> + </div> + <!-- /.sidebar-collapse --> + </div> + <!-- /.sidebar --> + <nav class="navbar navbar-inverse navbar-static-top" role="navigation" style="margin-bottom: 0"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> + <span class="sr-only">Toggle navigation</span> + </button> + <a class="navbar-brand pull-left" href="/">{% trans "HID " %}<span class="subtitle">{% trans "Humanitarian Information Dashboard" %}</span></a> + </div> + <!-- /.navbar-header --> + {% if request.user.is_authenticated %} + <ul class="nav navbar-top-links navbar-right"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#"> + <i class="fa fa-user fa-fw"></i> {{ request.user }} <i class="fa fa-caret-down"> </i> + </a> + <ul class="dropdown-menu dropdown-user"> + <li><a href="#"><i class="fa fa-gear fa-fw"></i> Settings</a></li> + <li><a href="{% url "logout" %}?next={% url 'login' %}" class=""><i class="fa fa-sign-out fa-fw"></i>{% trans "Log out" %}</a></li> + </ul> + <!-- /.dropdown-user --> + </li> + </ul> + {% endif %} + <!-- /.navbar-top-links --> + </nav> + <!-- /Navigation --> + <!-- Main Content --> + <div id="page-wrapper"> + <div class="row"> + <div class="col-lg-12"> + <div class="row messages-box"> + {% if messages %} + <ul class="list-unstyled"> + {% for message in messages %} + <li{% if message.tags %} class="alert {{ message.tags }} {% if message.tags == "error" %}bg-danger{% else %}bg-success{% endif %}"{% endif %}>{{ message }}</li> + {% endfor %} + </ul> + {% endif %} + </div> + {% block maincontent %} + {% endblock maincontent %} + </div> + </div> + </div> + <!-- /Main Content --> +{% endblock content %} diff --git a/django/website/templates/base_side.html b/django/website/templates/base_side.html index 32b9bfdf17050b76bf9f12e3b3b798fdb8600c79..9dfe6f0a7f6337ebc02482e4f7f68f718d2fb7b7 100644 --- a/django/website/templates/base_side.html +++ b/django/website/templates/base_side.html @@ -8,14 +8,14 @@ </div> <nav class="sidebar-nav navbar-collapse"> <ul class="nav" id="side-menu"> - <li><a href="{% url "dashboard" %}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a></li> + <li><a class="active" href="{% url "dashboard" %}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a></li> <li><a href="{% url "sources" %}"><i class="fa fa-download fa-fw"></i> Sources</a></li> <li><a href="{% url "data-view" %}"><i class="fa fa-pencil fa-fw"></i> View & Edit</a></li> </ul> </nav> <div class="site-info"> - <p>An <a href="http://www.internews.org" title="Internews website">Internews project</a><br /> - Site by<a href="http://www.aptivate.org" title="Aptivate website"> Aptivate</a></p> + <p>A project of <a href="http://www.internews.org" title="Internews website">Internews</a><br /> + Developed by<a href="http://www.aptivate.org" title="Aptivate website"> Aptivate</a></p> </div> <!-- /.sidebar-collapse --> </div> @@ -48,7 +48,8 @@ <!-- Main Content --> <div id="page-wrapper"> <div class="row"> - <div class="col-lg-12 messages-box"> + <div class="col-lg-12"> + <div class="row messages-box"> {% if messages %} <ul class="list-unstyled"> {% for message in messages %} @@ -56,6 +57,7 @@ {% endfor %} </ul> {% endif %} + </div> {% block maincontent %} {% endblock maincontent %} </div> diff --git a/django/website/transport/items.py b/django/website/transport/items.py index 3983a36c6383c922805bd8b531c5bfce0d2ba006..6903ca92463b73d870eace446bed4e9e35db328b 100644 --- a/django/website/transport/items.py +++ b/django/website/transport/items.py @@ -1,4 +1,5 @@ from django.core.urlresolvers import reverse +from django.utils.dateparse import parse_datetime from rest_framework.test import APIRequestFactory from rest_framework import status from rest_api.views import ItemViewSet @@ -26,6 +27,16 @@ def get_view(): return ItemViewSet.as_view(actions) +def _parse_date_fields(item): + date_fields = ('created', 'timestamp') + item_dict = dict(item) + for date_field in date_fields: + value = item_dict[date_field] + if value is not None: + item_dict[date_field] = parse_datetime(value) + return item_dict + + def list(**kwargs): """ Return a list of Items @@ -35,7 +46,13 @@ def list(**kwargs): # FIXME: currently only body exact filtering is supported view = get_view() request = request_factory.get(list_url(), kwargs) - return view(request).data + + items = view(request).data + + for item in items: + item.update(_parse_date_fields(item)) + + return items def create(item): diff --git a/django/website/transport/tests/item_list_tests.py b/django/website/transport/tests/item_list_tests.py index 479a26ee4cb3f4d09d21b290ec70cf044c756be0..bb9e1bc59b8682fca782579564e9282f728a2e0d 100644 --- a/django/website/transport/tests/item_list_tests.py +++ b/django/website/transport/tests/item_list_tests.py @@ -1,4 +1,6 @@ from __future__ import unicode_literals, absolute_import + +from datetime import datetime import pytest from data_layer.tests.factories import ItemFactory @@ -31,3 +33,32 @@ def test_list_items_filters_by_body(): assert len(items) == 1 [item] = items assert item['body'] == 'one' + + +@pytest.mark.django_db +def test_date_fields_are_converted_to_datetimes(): + stored_item = ItemFactory() + + retrieved_items = transport.items.list() + + [retrieved_item] = retrieved_items + + date_fields = ('timestamp', 'created') + + for date_field in date_fields: + stored_date = getattr(stored_item, date_field).replace( + microsecond=0 # MySQL discards microseconds + ) + + assert stored_date == retrieved_item[date_field] + + +@pytest.mark.django_db +def test_null_date_field_not_converted_to_datetime(): + ItemFactory(timestamp=None) + + retrieved_items = transport.items.list() + + [retrieved_item] = retrieved_items + + assert retrieved_item['timestamp'] is None diff --git a/django/website/users/templates/registration/login.html b/django/website/users/templates/registration/login.html index 91b052c168edbbe6019dd0145bc05c516b8f6527..a36506c78ee5745a9af5e7e196be465e3ffedaed 100644 --- a/django/website/users/templates/registration/login.html +++ b/django/website/users/templates/registration/login.html @@ -5,7 +5,7 @@ {% block maincontent %} <div class="col-md-4 col-md-offset-4"> - <div class="login-panel panel panel-default login-form"> + <div class="login-panel panel panel-default login-form modal-content"> <div class="panel-heading"> <h1 class="panel-title"><i class="fa fa-user fa-fw"></i> HID login</h1> </div>