internal/web/templates/owner.html
100 lines · 5429 bytes
1{{define "title"}}{{.Owner}} · {{.Site}}{{end}}
2{{define "content"}}
3<section class="profilehead">
4<h1>{{.Owner}} <span class="chip chip-neutral">{{.Kind}}</span></h1>
5{{if .Profile.Description}}<p class="desc lede">{{.Profile.Description}}</p>{{end}}
6{{if .Profile.Website}}<p class="meta"><a href="{{.Profile.Website}}" rel="nofollow me">{{.Profile.Website}}</a></p>{{end}}
7{{if .Profile.Links}}<p class="meta">{{range $i, $l := .Profile.Links}}{{if $i}} · {{end}}<a href="{{$l.URL}}" rel="nofollow me">{{if $l.Label}}{{$l.Label}}{{else}}{{$l.URL}}{{end}}</a>{{end}}</p>{{end}}
8{{if .Orgs}}<p class="meta">member of {{range .Orgs}}<a class="memberchip" href="/{{.Username}}">{{.Username}}</a> {{end}}</p>{{end}}
9{{if .Members}}<p class="meta">members {{range .Members}}<a class="memberchip" href="/{{.Username}}">{{.Username}} <span class="role">{{.Role}}</span></a> {{end}}</p>{{end}}
10</section>
11{{if .AboutHTML}}<section class="readme"><div class="rendered">{{.AboutHTML}}</div></section>{{end}}
12<section class="activity">
13<h2>activity <span class="count">{{.ActivityTotal}} in the last year</span></h2>
14<div class="actgraph-scroll">
15<div class="actgraph">
16{{range .Activity}}<div class="actweek">{{range .}}<span class="actday{{if .Pad}} pad{{else}} l{{.Level}}{{end}}"{{if not .Pad}} title="{{.Count}} on {{.Date}}"{{end}}></span>{{end}}</div>{{end}}
17</div>
18</div>
19</section>
20<h2>repositories <span class="count">{{len .Repos}}</span></h2>
21<ul class="repolist">
22{{range .Repos}}{{template "reporow" .}}
23{{else}}<li class="empty">no visible repositories</li>{{end}}
24</ul>
25
26{{if .CanAdmin}}{{$org := .Owner}}
27<h2>people <span class="count">{{len .Members}}</span></h2>
28{{if .Notice}}<p class="error" role="alert">{{.Notice}}</p>{{end}}
29<div class="tablewrap"><table class="keys">
30<tr class="cols"><th scope="col">member</th><th scope="col">role</th><th scope="col"></th></tr>
31{{range .Members}}<tr>
32 <td><a href="/{{.Username}}">{{.Username}}</a></td>
33 <td>{{.Role}}</td>
34 <td class="act"><form method="post" action="/{{$org}}"><input type="hidden" name="field" value="member-remove"><input type="hidden" name="user" value="{{.Username}}"><button type="submit" class="linklike">Remove</button></form></td>
35</tr>
36{{end}}</table></div>
37<details class="editbox">
38 <summary>Add or change a member</summary>
39 <form method="post" action="/{{$org}}" class="setform">
40 <input type="hidden" name="field" value="member-add">
41 <label for="member">Username</label>
42 <input type="text" id="member" name="user" required>
43 <label class="none" for="memberrole">Role</label>
44 <select id="memberrole" name="role">
45 <option value="member">member</option>
46 <option value="admin">admin</option>
47 </select>
48 <button type="submit">Apply</button>
49 </form>
50</details>
51
52<h2>teams <span class="count">{{len .Teams}}</span></h2>
53<p class="meta">Teams scope repository access inside the organization: members
54of a team get its role on every repository it is granted.</p>
55{{range .Teams}}<details class="difffold" open>
56 <summary><span class="fpath">{{.Name}}</span>
57 <span class="fstat">{{len .Members}} member{{if ne (len .Members) 1}}s{{end}} · {{len .Grants}} repo{{if ne (len .Grants) 1}}s{{end}}</span>
58 </summary>
59 <div class="teambody">
60 <p class="meta">members: {{range .Members}}<a class="memberchip" href="/{{.}}">{{.}}</a> {{else}}<span class="none">none yet</span>{{end}}</p>
61 <p class="meta">repositories: {{range .Grants}}<span class="memberchip"><a href="/{{.RepoPath}}">{{.RepoPath}}</a> <span class="role">{{.Role}}</span></span> {{else}}<span class="none">none yet</span>{{end}}</p>
62 <form method="post" action="/{{$org}}" class="setform">
63 <input type="hidden" name="team" value="{{.Name}}">
64 <label class="none" for="tm-{{.Name}}">Members</label>
65 <input type="text" id="tm-{{.Name}}" name="user" placeholder="usernames, space-separated">
66 <button type="submit" name="field" value="team-add">Add</button>
67 <button type="submit" name="field" value="team-remove">Remove</button>
68 </form>
69 <form method="post" action="/{{$org}}" class="setform">
70 <input type="hidden" name="team" value="{{.Name}}">
71 <label class="none" for="tr-{{.Name}}">Repository</label>
72 <input type="text" id="tr-{{.Name}}" name="repo" placeholder="owner/name">
73 <label class="none" for="trr-{{.Name}}">Role</label>
74 <select id="trr-{{.Name}}" name="role">
75 <option value="read">read</option>
76 <option value="write">write</option>
77 <option value="admin">admin</option>
78 </select>
79 <button type="submit" name="field" value="team-grant">Grant</button>
80 <button type="submit" name="field" value="team-revoke">Revoke</button>
81 </form>
82 <form method="post" action="/{{$org}}" class="setform">
83 <input type="hidden" name="field" value="team-delete">
84 <input type="hidden" name="team" value="{{.Name}}">
85 <button type="submit" class="linklike">Delete this team</button>
86 </form>
87 </div>
88</details>
89{{else}}<p class="none">No teams yet.</p>{{end}}
90<details class="editbox">
91 <summary>Create a team</summary>
92 <form method="post" action="/{{$org}}" class="setform">
93 <input type="hidden" name="field" value="team-create">
94 <label for="newteam">Name</label>
95 <input type="text" id="newteam" name="team" required>
96 <button type="submit">Create</button>
97 </form>
98</details>
99{{end}}
100{{end}}