OXYGENHUB
# e5acd2a2ceb5 oxygenhub / templates / proposals.html
2.7 KiB · HTML · last changed Lists: filters, sort orders, pages, and counts on the tabs 1 month ago source blame history raw
1
{% extends "base.html" %}
2
{% import "repo_tabs.html" as m %}
3
{% block title %}Proposals · {{ repo.owner }}/{{ repo.name }}{% endblock %}
4
{% block bodyattrs %} data-repo="{{ repo.url }}"{% endblock %}
5
{% block tabs %}{% call m::tabs(repo, "proposals") %}{% endblock %}
6
{% block content %}
7
<div class="head"><h1>Proposals <small>changes offered for a bookmark; they never go stale</small></h1></div>
8
<div class="bar">
9
  <span class="modes">
10
    <a href="?state=open&amp;q={{ q }}"{% if filter == "open" %} class="on"{% endif %}>{{ counts.0 }} open</a>
11
    <a href="?state=landed&amp;q={{ q }}"{% if filter == "landed" %} class="on"{% endif %}>{{ counts.1 }} landed</a>
12
    <a href="?state=closed&amp;q={{ q }}"{% if filter == "closed" %} class="on"{% endif %}>{{ counts.2 }} closed</a>
13
  </span>
14
  {% if shell.user.is_some() %}<a class="go small" href="{{ repo.url }}/proposals/new">new proposal</a>{% endif %}
15
</div>
16
<div class="bar">
17
  <form class="find" method="get" action="{{ repo.url }}/proposals"><input type="search" name="q" value="{{ q }}" placeholder="Filter: text, author:bob, label:ui, target:main"><input type="hidden" name="state" value="{{ filter }}"><input type="hidden" name="sort" value="{{ sort }}"></form>
18
  <span class="modes small" aria-label="Sort">{% for (k, label) in crate::web::proposals::SORTS %}<a href="{{ pager.sorted(k) }}"{% if sort == *k %} class="on"{% endif %}>{{ label }}</a>{% endfor %}</span>
19
</div>
20
{% if rows.is_empty() %}
21
<p class="empty">No {{ filter }} proposals. Push a bookmark, then <a href="{{ repo.url }}/proposals/new">propose it</a> for {{ repo.default_bookmark }}.{% if bookmarks.len() > 1 %} Bookmarks here: {% for b in bookmarks %}<a href="{{ repo.url }}/proposals/new?source={{ b }}">{{ b }}</a>{% if !loop.last %}, {% endif %}{% endfor %}.{% endif %}</p>
22
{% else %}
23
<ul class="rows">
24
{% for p in rows %}
25
  <li>
26
    <div>
27
      <a class="name" href="{{ repo.url }}/proposal/{{ p.number }}"><span class="mute">#{{ p.number }}</span> <strong>{{ p.title }}</strong></a>
28
      {% if p.state == "draft" %}<span class="tag">draft</span>{% endif %}
29
      {% if p.conflicted %}<span class="tag bad">conflicts</span>{% endif %}
30
      {% for l in labels_of(p.id) %}<span class="label" style="--c: {{ l.colour }}">{{ l.name }}</span>{% endfor %}
31
      <p class="small">{{ p.author }} wants <span class="lbl lbl-bm">{{ p.source_bookmark }}</span> into <span class="lbl lbl-bm">{{ p.target }}</span> · {{ p.projected_changes().len()|plural("change", "changes") }}</p>
32
    </div>
33
    <div class="right small">updated <time title="{{ p.updated_ms|when_i }}">{{ p.updated_ms|ago_i }}</time></div>
34
  </li>
35
{% endfor %}
36
</ul>
37
{% include "pager.html" %}
38
{% endif %}
39
{% endblock %}