1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-12-12 13:30:26 +00:00
mycorrhiza/views/history.qtpl

106 lines
3.1 KiB
Plaintext
Raw Normal View History

2021-07-01 09:37:41 +00:00
{% import "fmt" %}
2021-02-20 16:50:25 +00:00
{% import "net/http" %}
2021-07-01 09:37:41 +00:00
{% import "time" %}
2021-02-20 16:50:25 +00:00
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
2021-02-20 16:50:25 +00:00
{% import "github.com/bouncepaw/mycorrhiza/util" %}
{% import "github.com/bouncepaw/mycorrhiza/user" %}
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
2021-02-20 16:50:25 +00:00
{% import "github.com/bouncepaw/mycorrhiza/history" %}
{% func PrimitiveDiffHTML(rq *http.Request, h *hyphae.Hypha, u *user.User, hash string) %}
{% code
text, err := history.PrimitiveDiffAtRevision(h.TextPath, hash)
if err != nil {
text = err.Error()
}
%}
{%= NavHTML(rq, h.Name, "history") %}
<div class="layout">
<main class="main-width">
<article>
<h1>Diff {%s util.BeautifulName(h.Name) %} at {%s hash %}</h1>
<pre class="codeblock"><code>{%s text %}</code></pre>
</article>
</main>
</div>
{% endfunc %}
2021-02-20 16:50:25 +00:00
{% func RecentChangesHTML(n int) %}
2021-01-26 05:41:57 +00:00
<div class="layout">
<main class="main-width recent-changes">
2020-09-26 18:19:17 +00:00
<h1>Recent Changes</h1>
<nav class="recent-changes__count">
See
2021-07-01 09:37:41 +00:00
{% for i, m := range []int{20, 50, 100} %}
{% if i > 0 %}
2020-09-26 18:19:17 +00:00
<span aria-hidden="true">|</span>
2021-07-01 09:37:41 +00:00
{% endif %}
{% if m == n %}
<b>{%d m %}</b>
{% else %}
2020-09-26 18:19:17 +00:00
<a href="/recent-changes/{%d m %}">{%d m %}</a>
2021-07-01 09:37:41 +00:00
{% endif %}
2020-09-26 18:19:17 +00:00
{% endfor %}
recent changes
</nav>
<p><img class="icon" width="20" height="20" src="/static/icon/feed.svg">Subscribe via <a href="/recent-changes-rss">RSS</a>, <a href="/recent-changes-atom">Atom</a> or <a href="/recent-changes-json">JSON feed</a>.</p>
2020-09-26 18:19:17 +00:00
{% comment %}
2021-03-06 09:44:20 +00:00
Here I am, willing to add some accessibility using ARIA. Turns out,
2020-09-26 18:19:17 +00:00
role="feed" is not supported in any screen reader as of September
2020. At least web search says so. Even JAWS doesn't support it!
How come? I'll add the role anyway. -- bouncepaw
{% endcomment %}
2021-07-01 09:37:41 +00:00
{% code
2021-02-20 16:50:25 +00:00
changes := history.RecentChanges(n)
2021-07-01 09:37:41 +00:00
var year, day int
var month time.Month
2021-02-20 16:50:25 +00:00
%}
2020-09-26 18:19:17 +00:00
<section class="recent-changes__list" role="feed">
{% if len(changes) == 0 %}
<p>Could not find any recent changes.</p>
{% else %}
{% for i, entry := range changes %}
2021-07-01 09:37:41 +00:00
{% code y, m, d := entry.Time.UTC().Date() %}
{% if d != day || m != month || y != year %}
<h2>{%s fmt.Sprintf("%04d-%02d-%02d", y, m, d) %}</h2>
{% code year, month, day = y, m, d %}
{% endif %}
2020-11-04 11:00:17 +00:00
<ul class="recent-changes__entry rc-entry" role="article"
2020-09-26 18:19:17 +00:00
aria-setsize="{%d n %}" aria-posinset="{%d i %}">
2021-02-20 16:50:25 +00:00
{%s= recentChangesEntry(entry) %}
2020-09-26 18:19:17 +00:00
</ul>
2021-07-01 09:37:41 +00:00
2020-09-26 18:19:17 +00:00
{% endfor %}
{% endif %}
</section>
</main>
2021-01-26 05:41:57 +00:00
</div>
2020-09-26 18:19:17 +00:00
{% endfunc %}
2021-02-20 16:50:25 +00:00
{% func recentChangesEntry(rev history.Revision) %}
2021-07-01 09:37:41 +00:00
<li class="rc-entry__time"><time>{%s rev.Time.UTC().Format("15:04 UTC") %}</time></li>
2021-02-20 16:50:25 +00:00
<li class="rc-entry__hash">{%s rev.Hash %}</li>
<li class="rc-entry__links">{%s= rev.HyphaeLinksHTML() %}</li>
<li class="rc-entry__msg">{%s rev.Message %} {% if rev.Username != "anon" %}<span class="rc-entry__author">by <a href="/hypha/{%s cfg.UserHypha %}/{%s rev.Username %}" rel="author">{%s rev.Username %}</a></span>{% endif %}</li>
2021-02-20 16:50:25 +00:00
{% endfunc %}
{% func HistoryHTML(rq *http.Request, hyphaName, list string) %}
{%= NavHTML(rq, hyphaName, "history") %}
<div class="layout">
<main class="main-width">
<article class="history">
<h1>History of {%s util.BeautifulName(hyphaName) %}</h1>
{%s= list %}
</article>
</main>
</div>
{% endfunc %}