Redesign tracker and ticket pages
This commit is contained in:
parent
f34d5bb1b0
commit
49236b378e
|
@ -24,3 +24,40 @@ select.form-control {
|
|||
margin-top: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.header-tabbed {
|
||||
border-bottom: 3px solid #ddd;
|
||||
margin-bottom: 1rem;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
flex-wrap: wrap;
|
||||
|
||||
h2 {
|
||||
margin: 0;
|
||||
|
||||
@include media-breakpoint-down(xs) {
|
||||
flex-grow: 1;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.nav {
|
||||
border: none;
|
||||
margin: 0;
|
||||
flex-grow: 1;
|
||||
padding-top: 0.5rem;
|
||||
|
||||
@include media-breakpoint-down(xs) {
|
||||
padding-top: 1rem;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button.nav-link {
|
||||
background: inherit;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,35 @@
|
|||
</title>
|
||||
{% endblock %}
|
||||
{% block body %}
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-12 header-tabbed">
|
||||
<h2>
|
||||
{{ format_tracker_name(tracker, full=True) }}/#{{ticket.scoped_id}}:
|
||||
{{ticket.title}}
|
||||
</h2>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for(".ticket_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id) }}"
|
||||
class="nav-link">view</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for(".ticket_edit_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id) }}"
|
||||
class="nav-link active">edit</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<form class="col-md-6" method="POST">
|
||||
<h3>Edit Ticket</h3>
|
||||
<div class="form-group">
|
||||
<label for="title">Title</label>
|
||||
<input
|
||||
|
@ -41,36 +66,11 @@
|
|||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id) }}" class="btn btn-default"
|
||||
>Cancel</a>
|
||||
<button type="submit" class="btn btn-default">Save changes</button>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
>Save changes <i class="fa fa-caret-right"></i></button>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<h3>Details</h3>
|
||||
<dl class="row">
|
||||
<dt class="col-md-3">Status</dt>
|
||||
<dd class="col-md-9">
|
||||
<strong class="text-success">
|
||||
{{ ticket.status.name.upper() }}
|
||||
{% if ticket.status == TicketStatus.resolved %}
|
||||
{{ ticket.resolution.name.upper() }}
|
||||
{% endif %}
|
||||
</strong>
|
||||
</dd>
|
||||
<dt class="col-md-3">Submitter</dt>
|
||||
<dd class="col-md-9">
|
||||
<a
|
||||
href="{{url_for("html.user_GET",
|
||||
username=ticket.submitter.username)}}"
|
||||
>~{{ ticket.submitter.username }}</a>
|
||||
</dd>
|
||||
<dt class="col-md-3">Submitted</dt>
|
||||
<dd class="col-md-9">{{ ticket.created | date }}</dd>
|
||||
<dt class="col-md-3">Updated</dt>
|
||||
<dd class="col-md-9">{{ ticket.updated | date }}</dd>
|
||||
<dt class="col-md-3">User Agent</dt>
|
||||
<dd class="col-md-9 ellipsis" title="{{ ticket.user_agent }}">
|
||||
{{ ticket.user_agent }}
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,34 +10,46 @@
|
|||
{% block body %}
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-12 header-tabbed">
|
||||
<h2>
|
||||
{{ format_tracker_name(tracker, full=True) }}/#{{ticket.scoped_id}}:
|
||||
{{ticket.title}}
|
||||
<span class="d-block d-md-inline">
|
||||
{{ format_tracker_name(
|
||||
tracker, full=True) }}/#{{ticket.scoped_id}}<span
|
||||
class="d-none d-md-inline"
|
||||
>:</span>
|
||||
</span>
|
||||
<span class="d-block d-md-inline">
|
||||
{{ticket.title}}
|
||||
</span>
|
||||
</h2>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for(".ticket_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id) }}"
|
||||
class="nav-link active">view</a>
|
||||
</li>
|
||||
{% if TicketAccess.edit in access %}
|
||||
<li class="nav-item">
|
||||
<a href="{{ url_for(".ticket_edit_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id) }}"
|
||||
class="nav-link">edit</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{% if TicketAccess.edit in access %}
|
||||
<a href="{{ url_for(".ticket_edit_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id) }}"
|
||||
class="btn btn-default pull-right">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if ticket.description %}
|
||||
<h3>Description</h3>
|
||||
{{ ticket.description | extended_md(baselevel=4) }}
|
||||
{% endif %}
|
||||
<h3>
|
||||
Details
|
||||
</h3>
|
||||
<dl class="row">
|
||||
<dl class="row" style="margin-top: 1rem">
|
||||
<dt class="col-md-3">Status</dt>
|
||||
<dd class="col-md-9">
|
||||
<strong class="text-success">
|
||||
|
@ -78,15 +90,19 @@
|
|||
{{ comment.text | md }}
|
||||
{% endfor %}
|
||||
{% if TicketAccess.comment in access %}
|
||||
<h3 style="margin-top: 1rem">Add comment</h3>
|
||||
<form method="POST" action="{{
|
||||
<form
|
||||
{% if any(ticket.comments) %}
|
||||
style="margin-top: 1rem"
|
||||
{% endif %}
|
||||
method="POST"
|
||||
action="{{
|
||||
url_for(".ticket_comment_POST",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name,
|
||||
ticket_id=ticket.scoped_id
|
||||
)
|
||||
}}">
|
||||
<div class="form-group">
|
||||
<div class="form-group" style="margin-bottom: 0.25rem">
|
||||
<textarea
|
||||
class="form-control {{ valid.cls("comment") }}"
|
||||
id="comment"
|
||||
|
|
|
@ -9,18 +9,56 @@
|
|||
{% block body %}
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-12 header-tabbed">
|
||||
<h2>
|
||||
{{ format_tracker_name(tracker) }}
|
||||
</h2>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {{ "active" if not search else "" }}"
|
||||
href="{{url_for(".tracker_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name
|
||||
)}}">open tickets</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {{
|
||||
"active" if search == "status:closed" or search == "status:resolved" else ""
|
||||
}}" href="?search=status:closed">closed tickets</a>
|
||||
</li>
|
||||
{% if search and search != "status:closed" and search != "status:resolved" %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="?search={{ search }}">search results</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if current_user and current_user.id == tracker.owner_id %}
|
||||
<small>
|
||||
<a href="{{url_for(".configure_GET",
|
||||
<li class="nav-item d-none d-sm-block">
|
||||
<a class="nav-link" href="{{url_for(".configure_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name)}}"
|
||||
>Configure</a>
|
||||
</small>
|
||||
>settings</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</h2>
|
||||
{% if current_user %}
|
||||
<li class="flex-grow-1 d-none d-sm-block"></li>
|
||||
<li class="nav-item d-none d-sm-block">
|
||||
<form method="POST" action="{{url_for("tracker." +
|
||||
("disable_notifications" if is_subscribed else "enable_notifications"),
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name)}}">
|
||||
<button class="nav-link active" type="submit">
|
||||
<i class="fa fa-envelope-o"></i>
|
||||
{% if is_subscribed %}
|
||||
Disable notifications
|
||||
{% else %}
|
||||
Enable notifications
|
||||
{% endif %}
|
||||
<i class="fa fa-caret-right"></i>
|
||||
</button>
|
||||
</form>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
@ -75,32 +113,13 @@
|
|||
{% endif %}> Submit another?
|
||||
</label>
|
||||
</form>
|
||||
<form method="POST" action="{{url_for("tracker." +
|
||||
("disable_notifications" if is_subscribed else "enable_notifications"),
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name)}}">
|
||||
<h3>Notifications</h3>
|
||||
{% if is_subscribed %}
|
||||
<p>You are receiving email notifications for this tracker.</p>
|
||||
{% else %}
|
||||
<p>You are not receiving email notifications for this tracker.</p>
|
||||
{% endif %}
|
||||
<button class="btn btn-default btn-block" type="submit">
|
||||
{% if is_subscribed %}
|
||||
Disable notifications
|
||||
{% else %}
|
||||
Enable notifications
|
||||
{% endif %}
|
||||
<i class="fa fa-caret-right"></i>
|
||||
</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<hr />
|
||||
<p>You need to <a href="{{ oauth_url }}">log in</a> to submit tickets.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<form>
|
||||
<form style="margin-bottom: 0.5rem">
|
||||
<input
|
||||
name="search"
|
||||
type="text"
|
||||
|
@ -108,35 +127,14 @@
|
|||
class="form-control"
|
||||
value="{{ search if search else "" }}" />
|
||||
</form>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item">
|
||||
<a
|
||||
class="nav-link {{ "active" if not search else "" }}"
|
||||
href="{{url_for(".tracker_GET",
|
||||
owner=tracker.owner.canonical_name(),
|
||||
name=tracker.name
|
||||
)}}">open tickets</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a
|
||||
class="nav-link {{
|
||||
"active" if search == "status:closed" or search == "status:resolved" else ""
|
||||
}}" href="?search=status:closed">closed tickets</a>
|
||||
</li>
|
||||
{% if search and search != "status:closed" and search != "status:resolved" %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="?search={{ search }}">search results</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% if len(tickets) %}
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 1px"></th>
|
||||
<th>Title</th>
|
||||
<th>Updated</th>
|
||||
<th>Submitter</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th style="width: 4rem; white-space: nowrap;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
Loading…
Reference in New Issue