mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2024-12-12 05:20:26 +00:00
123 lines
3.6 KiB
Plaintext
123 lines
3.6 KiB
Plaintext
{% import "fmt" %}
|
|
{% import "net/http" %}
|
|
{% import "time" %}
|
|
|
|
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
|
|
{% import "github.com/bouncepaw/mycorrhiza/l18n" %}
|
|
{% import "github.com/bouncepaw/mycorrhiza/user" %}
|
|
{% import "github.com/bouncepaw/mycorrhiza/hyphae" %}
|
|
{% import "github.com/bouncepaw/mycorrhiza/history" %}
|
|
|
|
|
|
{% func PrimitiveDiff(rq *http.Request, h hyphae.ExistingHypha, u *user.User, hash string) %}
|
|
{% code
|
|
lc := l18n.FromRequest(rq)
|
|
text, err := history.PrimitiveDiffAtRevision(h.TextFilePath(), hash)
|
|
if err != nil {
|
|
text = err.Error()
|
|
}
|
|
%}
|
|
<div class="layout">
|
|
<main class="main-width">
|
|
<article>
|
|
<h1>{%s= lc.Get("ui.diff_title", &l18n.Replacements{"name": beautifulLink(h.CanonicalName()), "rev": hash}) %}</h1>
|
|
<pre class="codeblock"><code>{%s text %}</code></pre>
|
|
</article>
|
|
</main>
|
|
</div>
|
|
{% endfunc %}
|
|
|
|
{% func RecentChanges(n int, lc *l18n.Localizer) %}
|
|
<div class="layout">
|
|
<main class="main-width recent-changes">
|
|
<h1>{%s lc.Get("ui.recent_heading") %}</h1>
|
|
|
|
<nav class="recent-changes__count">
|
|
{%s lc.Get("ui.recent_count_pre") %}
|
|
{% for i, m := range []int{20, 50, 100} %}
|
|
{% if i > 0 %}
|
|
<span aria-hidden="true">|</span>
|
|
{% endif %}
|
|
{% if m == n %}
|
|
<b>{%d m %}</b>
|
|
{% else %}
|
|
<a href="/recent-changes/{%d m %}">{%d m %}</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{%s lc.Get("ui.recent_count_post") %}
|
|
</nav>
|
|
|
|
<p><img class="icon" width="20" height="20" src="/static/icon/feed.svg">{%s= lc.Get("ui.recent_subscribe", &l18n.Replacements{"rss": "<a href=\"/recent-changes-rss\">RSS</a>", "atom": "<a href=\"/recent-changes-atom\">Atom</a>", "json": fmt.Sprintf("<a href=\"/recent-changes-json\">%s</a>", lc.Get("ui.recent_subscribe_json"))}) %}</p>
|
|
|
|
{% comment %}
|
|
Here I am, willing to add some accessibility using ARIA. Turns out,
|
|
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 %}
|
|
|
|
{% code
|
|
changes := history.RecentChanges(n)
|
|
var year, day int
|
|
var month time.Month
|
|
%}
|
|
<section class="recent-changes__list" role="feed">
|
|
{% if len(changes) == 0 %}
|
|
<p>{%s lc.Get("ui.recent_empty") %}</p>
|
|
{% else %}
|
|
{% for i, entry := range changes %}
|
|
|
|
{% code y, m, d := entry.Time.UTC().Date() %}
|
|
{% if d != day || m != month || y != year %}
|
|
<h2 class="recent-changes__heading">
|
|
{%s fmt.Sprintf("%04d-%02d-%02d", y, m, d) %}
|
|
</h2>
|
|
{% code year, month, day = y, m, d %}
|
|
{% endif %}
|
|
|
|
<div class="recent-changes__entry" role="article"
|
|
aria-setsize="{%d n %}" aria-posinset="{%d i %}">
|
|
{%s= recentChanges(entry) %}
|
|
</div>
|
|
|
|
{% endfor %}
|
|
{% endif %}
|
|
</section>
|
|
</main>
|
|
</div>
|
|
{% endfunc %}
|
|
|
|
{% func recentChanges(rev history.Revision) %}
|
|
<div>
|
|
<time class="recent-changes__entry__time">
|
|
{%s rev.Time.UTC().Format("15:04 UTC") %}
|
|
</time>
|
|
<span class="recent-changes__entry__message">{%s rev.Hash %}</span>
|
|
|
|
{% if rev.Username != "anon" %}
|
|
<span class="recent-changes__entry__author">
|
|
— <a href="/hypha/{%s cfg.UserHypha %}/{%s rev.Username %}" rel="author">{%s rev.Username %}</a>
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
<div>
|
|
<span class="recent-changes__entry__links">
|
|
{%s= rev.HyphaeLinksHTML() %}
|
|
</span>
|
|
<span class="recent-changes__entry__message">
|
|
{%s rev.Message %}
|
|
</span>
|
|
</div>
|
|
{% endfunc %}
|
|
|
|
{% func History(rq *http.Request, hyphaName, list string, lc *l18n.Localizer) %}
|
|
<div class="layout">
|
|
<main class="main-width">
|
|
<article class="history">
|
|
<h1>{%s= fmt.Sprintf(lc.Get("ui.history_title"), beautifulLink(hyphaName)) %}</h1>
|
|
{%s= list %}
|
|
</article>
|
|
</main>
|
|
</div>
|
|
{% endfunc %}
|