66 lines
3.0 KiB
HTML
66 lines
3.0 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Decision — MartinhalApprovalFlow{% endblock %}
|
|
{% block content %}
|
|
<div class="login-box card" style="max-width:560px">
|
|
{% if stage == 'notfound' %}
|
|
<h1>Link not valid</h1>
|
|
<p class="sub">This decision link doesn't match any request. It may have been mistyped or removed.</p>
|
|
|
|
{% elif stage == 'confirm' %}
|
|
{% if req.status != 'pending' %}
|
|
<h1>Already decided</h1>
|
|
<p class="sub">Request #{{ req.id }} was already
|
|
<span class="stamp {{ req.status }}">{{ req.status }}</span>
|
|
{% if req.decided_by %} by {{ req.decided_by }}{% endif %}.</p>
|
|
{% else %}
|
|
<h1>{% if action == 'approve' %}Approve{% else %}Deny{% endif %} this request?</h1>
|
|
<p class="sub">Workflow <b>{{ req.wf_name }}</b> · request #{{ req.id }} ·
|
|
approval step <b>{{ req.current_step + 1 }} of {{ chain | length }}</b></p>
|
|
<p><b>From:</b> {{ req.requester }}<br><b>Subject:</b> {{ req.subject }}</p>
|
|
<div class="pre">{{ req.body }}</div>
|
|
{% set atts = req.attachment | fromjson %}
|
|
{% if atts %}
|
|
<p class="muted">Attachments sent to you in the approval email:
|
|
{% for a in atts %}<span class="mono">{{ a.name }}</span>{% if not loop.last %}, {% endif %}{% endfor %}</p>
|
|
{% endif %}
|
|
<form method="post">
|
|
{% if error %}<div class="flash error">{{ error }}</div>{% endif %}
|
|
<label for="d">Your email <small>(recorded in the log and used to notify you)</small></label>
|
|
<input id="d" type="email" name="decided_by" value="{{ approver }}">
|
|
{% if action == 'deny' %}
|
|
<label for="rr">Reason for denial <small>(required — included in the notice everyone receives)</small></label>
|
|
<textarea id="rr" name="reason" required></textarea>
|
|
{% endif %}
|
|
<button type="submit" class="btn {{ 'approve' if action == 'approve' else 'deny' }}">
|
|
{% if action == 'approve' %}Approve request{% else %}Deny request{% endif %}
|
|
</button>
|
|
</form>
|
|
{% if action == 'approve' %}
|
|
{% if req.current_step + 1 < chain | length %}
|
|
<p class="muted">Approving sends the request to the next approver: <span class="mono">{{ chain[req.current_step + 1] }}</span>.</p>
|
|
{% else %}
|
|
<p class="muted">You are the last approver — approving completes the workflow and notifies everyone involved.</p>
|
|
{% endif %}
|
|
{% else %}
|
|
<p class="muted">Denying stops the workflow immediately and notifies everyone involved so far.</p>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% elif stage == 'done' %}
|
|
{% if status == 'ok' %}
|
|
<p style="text-align:center;margin:1.5rem 0">
|
|
{% if req.status == 'pending' %}
|
|
<span class="stamp big approved">step approved</span>
|
|
{% else %}
|
|
<span class="stamp big {{ req.status }}">{{ req.status }}</span>
|
|
{% endif %}
|
|
</p>
|
|
<h1 style="text-align:center">Request #{{ req.id }}</h1>
|
|
<p class="sub" style="text-align:center">{{ message }}</p>
|
|
{% else %}
|
|
<h1>{{ message }}</h1>
|
|
{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
{% endblock %}
|