Started dashboard design

This commit is contained in:
Tobias Schulmann 2018-06-24 12:14:29 +12:00 committed by Tobias S
parent 1f04ec0cea
commit 5256aeeda3
7 changed files with 383 additions and 321 deletions

View file

@ -0,0 +1,2 @@
<input class="btn btn-primary" type="submit" value="Save" />
<a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>

View file

@ -1,5 +1,6 @@
{% load lca2018_tags %}
{% load bootstrap %}
{% load crispy_forms_tags %}
{% if form.non_field_errors %}
<div class="has-errors">
@ -9,7 +10,7 @@
{% endif %}
<blockquote>
Fields marked with <strong>*</strong> are required.
Fields marked with a<br/>* are required
</blockquote>
{{ form|bootstrap_horizontal }}
{% crispy form %}

View file

@ -11,363 +11,362 @@
{% block header_title %}linux.conf.au 2019{% endblock %}
{% block header_lead %}User Dashboard{% endblock %}
{% block main_class %}{% endblock %}
{% block content %}
{% available_categories as categories %}
{% if categories %}
{% available_categories as categories %}
<div class="container">
<h1 class="text-primary mb-5">Dashboard</h1>
</div>
{% if categories %}
{% if user.is_staff %}
<div class="container">
<div class="page-header">
<h2>Administration</h2>
{% if user.is_staff %}
<div class="container">
<h2>Administration</h2>
<div class="page-row">
<div class="col-xs-12">
<a class="btn btn-lg btn-info" role="button" href="{% url "reports_list" %}">Reports</a>
</div>
</div>
</div>
{% endif %}
<div class="container">
<div class="col-12">
<h2>{% trans "Attend" %} {% conference_name %}</h2>
</div>
<div class="page-row">
{% if not user.attendee.completed_registration %}
<div class="panel panel-default">
<div class="panel-heading">
<h4>Register</h4>
</div>
<div class="panel-body">
<p>To attend the conference, you must create an attendee profile and purchase your ticket</p>
<a class="btn btn-lg btn-success" role="button" href="{% url "guided_registration" %}">Get your ticket</a>
</div>
</div>
{% else %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Attendee Profile</h4>
</div>
<div class="page-row">
<div class="col-xs-12">
<a class="btn btn-lg btn-info" role="button" href="{% url "reports_list" %}">Reports</a>
</div>
<div class="panel-body">
<p>If you would like to change the details on your badge or your attendee statistics, you may edit your attendee profile up until the 15th January 2018</p>
<a class="btn btn-lg btn-primary pull-left" role="button" href="{% url "user_badge" %}">Preview my badge</a>
<a class="btn btn-lg btn-primary pull-right" role="button" href="{% url "attendee_edit" %}">Edit attendee profile</a>
</div>
</div>
{% endif %}
<div class="container">
<div class="col-12">
<h2>{% trans "Attend" %} {% conference_name %}</h2>
</div>
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Account Management</h4>
</div>
<div class="panel-body">
<p>If you would like to change your registered email address or password, you can use our self-service account management portal</p>
<a class="btn btn-lg btn-primary pull-right" role="button" href="https://login.linux.conf.au/manage/">Account Management</a>
</div>
</div>
<div class="page-row">
{% if not user.attendee.completed_registration %}
<div class="panel panel-default">
<div class="panel-heading">
<h4>Register</h4>
</div>
<div class="panel-body">
<p>To attend the conference, you must create an attendee profile and purchase your ticket</p>
<a class="btn btn-lg btn-success" role="button" href="{% url "guided_registration" %}">Get your ticket</a>
</div>
</div>
{% else %}
</div>
{% items_pending as pending %}
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Account</h4>
</div>
<div class="panel-body">
{% if pending %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-default">
<div class="panel panel-warning">
<div class="panel-heading">
<h4>Attendee Profile</h4>
<h5>Items pending payment</h5>
</div>
<div class="panel-body">
<p>If you would like to change the details on your badge or your attendee statistics, you may edit your attendee profile up until the 15th January 2018</p>
<a class="btn btn-lg btn-primary pull-left" role="button" href="{% url "user_badge" %}">Preview my badge</a>
<a class="btn btn-lg btn-primary pull-right" role="button" href="{% url "attendee_edit" %}">Edit attendee profile</a>
{% include "registrasion/_items_list.html" with items=pending %}
<div class="right">
<a class="btn btn-lg btn-success pull-right" role="button" href="{% url "checkout" %}">Check out and pay</a>
</div>
</div>
</div>
</div>
{% endif %}
{% items_purchased as purchased %}
{% if purchased %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-default">
<div class="panel panel-success">
<div class="panel-heading">
<h4>Account Management</h4>
<h5>Paid Items</h5>
</div>
<div class="panel-body">
<p>If you would like to change your registered email address or password, you can use our self-service account management portal</p>
<a class="btn btn-lg btn-primary pull-right" role="button" href="https://login.linux.conf.au/manage/">Account Management</a>
{% include "registrasion/_items_list.html" with items=purchased %}
</div>
</div>
</div>
{% items_pending as pending %}
{% endif %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-success">
<div class="panel-heading">
<h5>Add/Update Items</h5>
</div>
<div class="panel-body">
{% include "registrasion/_category_list.html" with categories=categories %}
</div>
</div>
</div>
{% invoices as invoices %}
{% if invoices %}
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="panel panel-info">
<div class="panel-heading">
<h5>Invoices</h5>
</div>
<div class="panel-body">
<ul>
{% for invoice in invoices %}
{% if invoice.is_void %}
<li class="void-invoice" style="display: none;">
{% else %}
<li>
{% endif %}
<a href="{% url "invoice" invoice.id %}" >Invoice {{ invoice.id }}</a>
- ${{ invoice.value }} ({{ invoice.get_status_display }})
</li>
{% endfor %}
</ul>
<button id="toggle-void-invoices" onclick="toggleVoidInvoices();">Show void invoices</button>
</div>
</div>
</div>
{% endif %}
{% available_credit as credit %}
{% if credit %}
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="panel panel-default">
<div class="panel panel-danger">
<div class="panel-heading">
<h4>Account</h4>
<h5>Credit</h5>
</div>
<div class="panel-body">
{% if pending %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-warning">
<div class="panel-heading">
<h5>Items pending payment</h5>
</div>
<div class="panel-body">
{% include "registrasion/_items_list.html" with items=pending %}
<div class="right">
<a class="btn btn-lg btn-success pull-right" role="button" href="{% url "checkout" %}">Check out and pay</a>
</div>
</div>
</div>
</div>
{% endif %}
{% items_purchased as purchased %}
{% if purchased %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-success">
<div class="panel-heading">
<h5>Paid Items</h5>
</div>
<div class="panel-body">
{% include "registrasion/_items_list.html" with items=purchased %}
</div>
</div>
</div>
{% endif %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-success">
<div class="panel-heading">
<h5>Add/Update Items</h5>
</div>
<div class="panel-body">
{% include "registrasion/_category_list.html" with categories=categories %}
</div>
</div>
</div>
{% invoices as invoices %}
{% if invoices %}
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="panel panel-info">
<div class="panel-heading">
<h5>Invoices</h5>
</div>
<div class="panel-body">
<ul>
{% for invoice in invoices %}
{% if invoice.is_void %}
<li class="void-invoice" style="display: none;">
{% else %}
<li>
{% endif %}
<a href="{% url "invoice" invoice.id %}" >Invoice {{ invoice.id }}</a>
- ${{ invoice.value }} ({{ invoice.get_status_display }})
</li>
{% endfor %}
</ul>
<button id="toggle-void-invoices" onclick="toggleVoidInvoices();">Show void invoices</button>
</div>
</div>
</div>
{% endif %}
{% available_credit as credit %}
{% if credit %}
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="panel panel-danger">
<div class="panel-heading">
<h5>Credit</h5>
</div>
<div class="panel-body">
<p>You have ${{ credit }} leftover from refunded invoices. This credit will be automatically applied to new invoices. Contact the conference organisers to for a refund to your original payment source.</p>
</div>
</div>
</div>
{% endif %}
<p>You have ${{ credit }} leftover from refunded invoices. This credit will be automatically applied to new invoices. Contact the conference organisers to for a refund to your original payment source.</p>
</div>
</div>
</div>
{% endif %}
</div>
</div>
{% endif %}
<div class="row">
<div class="col-12">
<h2>{% trans "Speaking and Miniconfs" %}</h2>
<div class="card">
<div class="card-header">
Speaker Profile
</div>
<div class="card-body">
<p class="card-text">
Your speaker profile is independent of your attendee profile and the details you provide here will be used during selection and to populate your speaker bio on the conference website.
</p>
{% if not user.speaker_profile %}
<p class="card-text">To create a speaking or miniconf proposal you must first create a speaker profile.</p>
<a href="{% url "speaker_create" %}" class="btn btn-primary">Create Profile</a>
{% else %}
<a class="btn btn-primary" role="button" href="{% url "speaker_edit" %}">Edit Profile</a>
{% endif %}
</div>
{% endif %}
</div>
</div>
</div>
{% if user.speaker_profile %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h5>New Proposal</h5>
</div>
<div class="panel-body">
<p>You may use the following form to create a speaking or miniconf proposal.</p>
<p>Once submitted you will be able to see the status of your proposals, as well manage the submission and co-speakers from this page</p>
<a class="btn btn-lg btn-primary pull-right" role="button" href="{% url "proposal_submit" %}">New Proposal</a>
</div>
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% endif %}
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="text-primary mb-5">{% trans "Speaking and Miniconfs" %}</h2>
</div>
</div>
<div class="row">
<div class="col-md-6 text-primary d-flex flex-column">
<h3 class="text-upper">Speaker Profile</h3>
{% if not user.speaker_profile %}
<p>
To create a speaking or miniconf proposal you must first create a speaker
profile.
</p>
{% endif %}
<p>
Your speaker profile is independent of your attendee profile and the
details you provide here will be used during selection and to populate
your speaker bio on the conference website.
</p>
<div class="mt-auto">
{% if not user.speaker_profile %}
<a href="{% url "speaker_create" %}" class="btn btn-primary btn-lg" role="button">Create Profile</a>
{% else %}
<a href="{% url "speaker_edit" %}" class="btn btn-primary btn-lg" role="button">Edit Profile</a>
{% endif %}
</div>
</div>
{% if user.speaker_profile %}
<div class="col-md-6 text-primary d-flex flex-column">
<h3 class="text-upper">New Proposal</h3>
<p>You may use the following form to create a speaking or miniconf proposal.</p>
<p>Once submitted you will be able to see the status of your proposals, as well manage the submission and co-speakers from this page</p>
<div class="mt-auto">
<a class="btn btn-lg btn-primary" role="button" href="{% url "proposal_submit" %}">New Proposal</a>
</div>
</div>
{% endif %}
</div>
</div>
{% if user.speaker_profile %}
{% if user.speaker_profile %}
{% if user.speaker_profile.proposals.exists %}
<div class="container">
<div class="page-header">
<h2>Your Proposals</h2>
</div>
<div class="page-row">
{% if user.speaker_profile.proposals.exists %}
<div class="container">
<div class="page-header">
<h2>Your Proposals</h2>
</div>
<div class="page-row">
{% if user.speaker_profile.proposals.exists %}
{% for proposal in user.speaker_profile.proposals.all %}
{% include "symposion/proposals/_proposal_row.html" %}
{% endfor %}
{% for proposal in user.speaker_profile.proposals.all %}
{% include "symposion/proposals/_proposal_row.html" %}
{% endfor %}
{% endif %}
</div>
</div>
{% endif %}
{% endif %}
{% if user.speaker_profile %}
{% associated_proposals as associated_proposals %}
{% pending_proposals as pending_proposals %}
{% if associated_proposals or pending_proposals %}
<div class="container">
<div class="page-header">
<h2>Copresenter Proposals</h2>
</div>
<div class="page-row">
{% for proposal in associated_proposals %}
{% include "symposion/proposals/_proposal_row.html" %}
{% endfor %}
{% for proposal in pending_proposals %}
{% include "symposion/proposals/_pending_proposal_row.html" %}
{% endfor %}
</div>
</div>
{% endif %}
{% endif %}
<div class="bg-primary text-secondary mt-5 pb-5">
<div class="container">
{% if review_sections %}
<div class="row">
<h2 class="col-12 my-5">{% trans "Reviews" %}</h2>
{% for section in review_sections %}
<div class="col-md-6">
<h3>{{ section }}</h3>
<ul class="list-unstyled">
<li><a href="{% url "review_section" section.section.slug %}">All</a></li>
<li><a href="{% url "user_reviewed" section.section.slug %}">Reviewed by you</a></li>
<li><a href="{% url "user_not_reviewed" section.section.slug %}">Not Reviewed by you</a></li>
</ul>
{% if section in manage_sections %}
<ul class="list-unstyled">
<li><a href="{% url "review_bulk_update" section.section.slug %}">Bulk Update</a></li>
<li><a href="{% url "result_notification" section.section.slug "accepted" %}">Send notifications</a></li>
<li><a href="{% url "review_status" section.section.slug %}">Voting Status</a></li>
<li><a href="{% url "review_admin" section.section.slug %}">Reviewer Stats</a></li>
</ul>
{% endif %}
</div>
</div>
{% endif %}
{% endif %}
{% if user.speaker_profile %}
{% associated_proposals as associated_proposals %}
{% pending_proposals as pending_proposals %}
{% if associated_proposals or pending_proposals %}
<div class="container">
<div class="page-header">
<h2>Copresenter Proposals</h2>
</div>
<div class="page-row">
{% for proposal in associated_proposals %}
{% include "symposion/proposals/_proposal_row.html" %}
{% endfor %}
{% for proposal in pending_proposals %}
{% include "symposion/proposals/_pending_proposal_row.html" %}
{% endfor %}
</div>
</div>
{% endif %}
{% endif %}
{% if review_sections %}
<div class="container">
<div class="page-header">
<h2>{% trans "Reviews" %}</h2>
</div>
<div class="page-row">
{% for section in review_sections %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h5>{{ section }}</h5>
</div>
<div class="panel-body">
<ul>
<li><a href="{% url "review_section" section.section.slug %}">All</a></li>
<li><a href="{% url "user_reviewed" section.section.slug %}">Reviewed by you</a></li>
<li><a href="{% url "user_not_reviewed" section.section.slug %}">Not Reviewed by you</a></li>
</ul>
{% if section in manage_sections %}
<ul>
<li><a href="{% url "review_bulk_update" section.section.slug %}">Bulk Update</a></li>
<li><a href="{% url "result_notification" section.section.slug "accepted" %}">Send notifications</a></li>
<li><a href="{% url "review_status" section.section.slug %}">Voting Status</a></li>
<li><a href="{% url "review_admin" section.section.slug %}">Reviewer Stats</a></li>
</ul>
{% endif %}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% available_teams as available_teams %}
{% if user.memberships.exists or available_teams %}
<div class="container">
<div class="page-header">
<h2>{% trans "Teams" %}</h2>
</div>
</div>
<div class="container">
<div class="page-row">
{% if user.memberships.exists %}
<div class="page-header">
<h3>Your Teams</h3>
</div>
{% endif %}
{% available_teams as available_teams %}
{% if user.memberships.exists or available_teams %}
<div class="container">
<div class="page-header">
<h2>{% trans "Teams" %}</h2>
</div>
</div>
<div class="container">
<div class="page-row">
{% if user.memberships.exists %}
<div class="page-header">
<h3>Your Teams</h3>
<div clas="page-row">
{% for membership in user.memberships.all %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h5>{{ membership.team.name }}</h5>
</div>
<div clas="page-row">
{% for membership in user.memberships.all %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h5>{{ membership.team.name }}</h5>
</div>
<div class="panel-body">
{% if membership.team.description %}<p>{{ membership.team.description }}</p>{% endif %}
<a class="btn btn-lg btn-primary" role="button" href="{% url "team_detail" membership.team.slug %}">Details</a>
<span class="{% if membership.state == 'invited' %} label-info{% endif %}">{{ membership.get_state_display }}</span>
{% if membership.state == "manager" or user.is_staff %}
{% if membership.team.applicants %}{{ membership.team.applicants.count }} applicant{{ membership.team.applicants.count|pluralize }}{% endif %}
{% endif %}
</div>
</div>
</div>
{% endfor %}
<div class="panel-body">
{% if membership.team.description %}<p>{{ membership.team.description }}</p>{% endif %}
<a class="btn btn-lg btn-primary" role="button" href="{% url "team_detail" membership.team.slug %}">Details</a>
<span class="{% if membership.state == 'invited' %} label-info{% endif %}">{{ membership.get_state_display }}</span>
{% if membership.state == "manager" or user.is_staff %}
{% if membership.team.applicants %}{{ membership.team.applicants.count }} applicant{{ membership.team.applicants.count|pluralize }}{% endif %}
{% endif %}
</div>
{% endif %}
</div>
</div>
<div class="container">
<div class="page-row">
{% if available_teams %}
<div class="page-header">
<h3>Available Teams</h3>
</div>
<div class="page-row">
{% for team in available_teams %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h5>{{ team }}</h5>
</div>
<div class="panel-body">
{% if team.description %}<p>{{ team.description }}</p>{% endif %}
<span class="label label-default">{{ team.get_access_display }}</span>
<a class="btn btn-lg btn-primary" role="button" href="{% url "team_detail" team.slug %}">Details</a>
</div>
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
<div class="container">
<div class="page-row">
{% if available_teams %}
<div class="page-header">
<h3>Available Teams</h3>
</div>
<div class="page-row">
{% for team in available_teams %}
<div class="col-xs-12 col-sm-6 col-lg-6">
<div class="panel panel-primary">
<div class="panel-heading">
<h5>{{ team }}</h5>
</div>
<div class="panel-body">
{% if team.description %}<p>{{ team.description }}</p>{% endif %}
<span class="label label-default">{{ team.get_access_display }}</span>
<a class="btn btn-lg btn-primary" role="button" href="{% url "team_detail" team.slug %}">Details</a>
</div>
</div>
</div>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% endif %}
{% endblock %} <!-- block content -->
{% block scripts_extra %}
<script type="text/javascript">
var _toggleVoidInvoices = function() {
var visible = false;
function toggleVoidInvoices() {
$btn = $("#toggle-void-invoices");
$invoices = $(".void-invoice")
if (visible) {
$invoices.hide();
btnText = "Show void invoices";
} else {
$invoices.show();
btnText = "Hide void invoices";
}
$btn.text(btnText);
visible = !visible;
return true;
<script type="text/javascript">
var _toggleVoidInvoices = function() {
var visible = false;
function toggleVoidInvoices() {
$btn = $("#toggle-void-invoices");
$invoices = $(".void-invoice")
if (visible) {
$invoices.hide();
btnText = "Show void invoices";
} else {
$invoices.show();
btnText = "Hide void invoices";
}
return toggleVoidInvoices;
$btn.text(btnText);
visible = !visible;
return true;
}
var toggleVoidInvoices = _toggleVoidInvoices();
_toggleVoidInvoices = undefined;
</script>
return toggleVoidInvoices;
}
var toggleVoidInvoices = _toggleVoidInvoices();
_toggleVoidInvoices = undefined;
</script>
{% endblock %}

View file

@ -52,7 +52,7 @@
{% endif %}
<h1 class="text-primary text-upper h2 mb-5">{% block page_title %}{% endblock %}</h1>
{% block body_base %}
{% block body %}

View file

@ -10,10 +10,7 @@
{% csrf_token %}
<fieldset>
{% include "_form_snippet.html" with form=speaker_form %}
<div class="btn-group">
<input class="btn btn-primary" type="submit" value="Save" />
<a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
</div>
{% include "_form_btns.html" %}
</fieldset>
</form>
{% endblock %}

View file

@ -10,10 +10,7 @@
{% csrf_token %}
<fieldset>
{% include "_form_snippet.html" with form=speaker_form %}
<div class="btn-group">
<input class="btn btn-primary" type="submit" value="Save" />
<a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
</div>
{% include "_form_btns.html" %}
</fieldset>
</form>
{% endblock %}

View file

@ -41,6 +41,10 @@ body {
}
}
.text-upper {
text-transform: uppercase;
}
.navbar-collapse {
margin-left: $padding-left-default;
}
@ -183,4 +187,66 @@ main.container-fluid {
width: 100%;
height: 480px;
filter: grayscale(100%);
}
}
.btn-lg {
padding: 0.8rem 4.5rem;
font-size: 1rem;
line-height: 1.5;
}
.btn {
padding: 0.4rem 2.25rem;
font-size: 1rem;
border-radius: 0;
text-transform: uppercase;
}
.jumbotron {
border-radius: 0;
background-color: rgba(204, 213, 197, 0.1);
border: 1px $primary solid;
color: $primary;
padding: 5rem 6rem ;
}
.col-form-label, .form-check-label {
font-weight: bold;
}
.form-text.text-muted {
color: $primary !important;
margin-bottom: 1rem;
}
fieldset {
blockquote {
font-size: 80%;
}
}
.form-control {
border-radius: 0;
border: 2px $primary solid;
&:focus {
border: 2px $primary solid;
}
}
label.form-check-label {
display: flex;
align-items: center
}
h3 {
text-transform: uppercase;
}
main {
a {
color: #f5843e;
font-weight: 600;
}
}