1diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go
2index d952fef3bc513240d3f602426e7572fa84033a9e..b4c7c5481ede247f1e2f67f7b9aa4c2ca6373863 100644
3--- a/pkg/handler/git/handler.go
4+++ b/pkg/handler/git/handler.go
5@@ -164,8 +164,6 @@ Ref: ref,
6 GitItemBase: &templates.GitItemTreePage{
7 CurrentPath: rest,
8 Tree: tree,
9- Ref: ref,
10- Name: name,
11 },
12 }
13 templates.WritePageTemplate(w, gitList)
14diff --git a/scss/main.scss b/scss/main.scss
15index b3ba6498c55ad5e4cc20a568fc62b9bb8000a829..26155a62c9dbd8ae233adcfac7a91cb519de1015 100644
16--- a/scss/main.scss
17+++ b/scss/main.scss
18@@ -23,20 +23,29 @@ @import "tree.scss";
19
20 // overwrite to reduce the ammount of css generated by loading all utilities
21 $utilities: (
22- "order": (
23- responsive: true,
24- property: order,
25- values: (
26- first: -1,
27- 0: 0,
28- 1: 1,
29- 2: 2,
30- 3: 3,
31- 4: 4,
32- 5: 5,
33- last: 6,
34- ),
35+ "order": (
36+ responsive: true,
37+ property: order,
38+ values: (
39+ first: -1,
40+ 0: 0,
41+ 1: 1,
42+ 2: 2,
43+ 3: 3,
44+ 4: 4,
45+ 5: 5,
46+ last: 6,
47 ),
48+ ),
49+ "float": (
50+ responsive: true,
51+ property: float,
52+ values: (
53+ start: left,
54+ end: right,
55+ none: none,
56+ )
57+ ),
58 );
59
60 @import "bootstrap/scss/utilities/_api.scss";
61diff --git a/templates/gititem.qtpl b/templates/gititem.qtpl
62index d6957820865ed335415da36d5fc0d240039d0350..a6a312d333e2e4942004073ed33494454f1eeeea 100644
63--- a/templates/gititem.qtpl
64+++ b/templates/gititem.qtpl
65@@ -1,7 +1,7 @@
66 {% interface
67 GitItemBase {
68 Nav(name, ref string)
69- GitContent()
70+ GitContent(name, ref string)
71 }
72 %}
73
74@@ -20,7 +20,7 @@
75 {% func (p *GitItemPage) Content() %}
76 {%= p.Nav(p.Name, p.Ref) %}
77 <div class="container">
78-{%= p.GitContent() %}
79+{%= p.GitContent(p.Name, p.Ref) %}
80 </div>
81 {% endfunc %}
82
83diff --git a/templates/gititem.qtpl.go b/templates/gititem.qtpl.go
84index a7ed65941e2355817c95d8429afe3a34d0a91fe9..7cfeeb452cbabce7c1677e04a308500d05e7125c 100644
85--- a/templates/gititem.qtpl.go
86+++ b/templates/gititem.qtpl.go
87@@ -26,11 +26,11 @@ StreamNav(qw422016 *qt422016.Writer, name, ref string)
88 //line gititem.qtpl:2
89 WriteNav(qq422016 qtio422016.Writer, name, ref string)
90 //line gititem.qtpl:2
91- GitContent() string
92+ GitContent(name, ref string) string
93 //line gititem.qtpl:2
94- StreamGitContent(qw422016 *qt422016.Writer)
95+ StreamGitContent(qw422016 *qt422016.Writer, name, ref string)
96 //line gititem.qtpl:2
97- WriteGitContent(qq422016 qtio422016.Writer)
98+ WriteGitContent(qq422016 qtio422016.Writer, name, ref string)
99 //line gititem.qtpl:2
100 }
101
102@@ -121,7 +121,7 @@ qw422016.N().S(`
103 <div class="container">
104 `)
105 //line gititem.qtpl:23
106- p.StreamGitContent(qw422016)
107+ p.StreamGitContent(qw422016, p.Name, p.Ref)
108 //line gititem.qtpl:23
109 qw422016.N().S(`
110 </div>
111diff --git a/templates/gititemabout.qtpl b/templates/gititemabout.qtpl
112index e0fa9c3f184837a96d3194d5baacdcdfd866a56b..abda2fb2476cf828c66e19736aea6e857feac0fd 100644
113--- a/templates/gititemabout.qtpl
114+++ b/templates/gititemabout.qtpl
115@@ -5,6 +5,6 @@ %}
116
117 {% func (g *GitItemAboutPage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Readme) %}{% endfunc %}
118
119-{% func (g *GitItemAboutPage) GitContent() %}
120+{% func (g *GitItemAboutPage) GitContent(name, ref string) %}
121 <h4>About</h4>
122 {% endfunc %}
123diff --git a/templates/gititemabout.qtpl.go b/templates/gititemabout.qtpl.go
124index 0827fbe114bd75cf7b2b8d8c7b67a29c5194ffb0..cd49d2fa25928890cb2a8e6ccda5d5057f1144e0 100644
125--- a/templates/gititemabout.qtpl.go
126+++ b/templates/gititemabout.qtpl.go
127@@ -55,7 +55,7 @@ //line gititemabout.qtpl:6
128 }
129
130 //line gititemabout.qtpl:8
131-func (g *GitItemAboutPage) StreamGitContent(qw422016 *qt422016.Writer) {
132+func (g *GitItemAboutPage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
133 //line gititemabout.qtpl:8
134 qw422016.N().S(`
135 <h4>About</h4>
136@@ -64,22 +64,22 @@ //line gititemabout.qtpl:10
137 }
138
139 //line gititemabout.qtpl:10
140-func (g *GitItemAboutPage) WriteGitContent(qq422016 qtio422016.Writer) {
141+func (g *GitItemAboutPage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
142 //line gititemabout.qtpl:10
143 qw422016 := qt422016.AcquireWriter(qq422016)
144 //line gititemabout.qtpl:10
145- g.StreamGitContent(qw422016)
146+ g.StreamGitContent(qw422016, name, ref)
147 //line gititemabout.qtpl:10
148 qt422016.ReleaseWriter(qw422016)
149 //line gititemabout.qtpl:10
150 }
151
152 //line gititemabout.qtpl:10
153-func (g *GitItemAboutPage) GitContent() string {
154+func (g *GitItemAboutPage) GitContent(name, ref string) string {
155 //line gititemabout.qtpl:10
156 qb422016 := qt422016.AcquireByteBuffer()
157 //line gititemabout.qtpl:10
158- g.WriteGitContent(qb422016)
159+ g.WriteGitContent(qb422016, name, ref)
160 //line gititemabout.qtpl:10
161 qs422016 := string(qb422016.B)
162 //line gititemabout.qtpl:10
163diff --git a/templates/gititemblob.qtpl b/templates/gititemblob.qtpl
164index 89d002d2521e4b56c31db6811d137186f830614e..f9bab3d53aa36fdc211bab7c9feea16b179b333f 100644
165--- a/templates/gititemblob.qtpl
166+++ b/templates/gititemblob.qtpl
167@@ -7,7 +7,7 @@ %}
168
169 {% func (g *GitItemBlobPage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Tree) %}{% endfunc %}
170
171-{% func (g *GitItemBlobPage) GitContent() %}
172+{% func (g *GitItemBlobPage) GitContent(name, ref string) %}
173 <div class="code-view">
174 {%z= g.Content %}
175 </div>
176diff --git a/templates/gititemblob.qtpl.go b/templates/gititemblob.qtpl.go
177index 6b4e1878145e79855875577f6edc748cd6b5ea1c..05e0667c856d5ff46a2222d8a4979da2de1ea4ef 100644
178--- a/templates/gititemblob.qtpl.go
179+++ b/templates/gititemblob.qtpl.go
180@@ -57,7 +57,7 @@ //line gititemblob.qtpl:8
181 }
182
183 //line gititemblob.qtpl:10
184-func (g *GitItemBlobPage) StreamGitContent(qw422016 *qt422016.Writer) {
185+func (g *GitItemBlobPage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
186 //line gititemblob.qtpl:10
187 qw422016.N().S(`
188 <div class="code-view">
189@@ -72,22 +72,22 @@ //line gititemblob.qtpl:14
190 }
191
192 //line gititemblob.qtpl:14
193-func (g *GitItemBlobPage) WriteGitContent(qq422016 qtio422016.Writer) {
194+func (g *GitItemBlobPage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
195 //line gititemblob.qtpl:14
196 qw422016 := qt422016.AcquireWriter(qq422016)
197 //line gititemblob.qtpl:14
198- g.StreamGitContent(qw422016)
199+ g.StreamGitContent(qw422016, name, ref)
200 //line gititemblob.qtpl:14
201 qt422016.ReleaseWriter(qw422016)
202 //line gititemblob.qtpl:14
203 }
204
205 //line gititemblob.qtpl:14
206-func (g *GitItemBlobPage) GitContent() string {
207+func (g *GitItemBlobPage) GitContent(name, ref string) string {
208 //line gititemblob.qtpl:14
209 qb422016 := qt422016.AcquireByteBuffer()
210 //line gititemblob.qtpl:14
211- g.WriteGitContent(qb422016)
212+ g.WriteGitContent(qb422016, name, ref)
213 //line gititemblob.qtpl:14
214 qs422016 := string(qb422016.B)
215 //line gititemblob.qtpl:14
216diff --git a/templates/gititemlog.qtpl b/templates/gititemlog.qtpl
217index ef473b73835002fc162ae4c115d4f4967c9f4d32..1af05ca2b19a2ef3bc21e3533ee7333425e21298 100644
218--- a/templates/gititemlog.qtpl
219+++ b/templates/gititemlog.qtpl
220@@ -8,7 +8,7 @@ %}
221
222 {% func (g *GitItemLogPage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Log) %}{% endfunc %}
223
224-{% func (g *GitItemLogPage) GitContent() %}
225+{% func (g *GitItemLogPage) GitContent(name, ref string) %}
226 <div class="logs">
227 {% for _, c := range g.Commits %}
228 <div class="row">
229diff --git a/templates/gititemlog.qtpl.go b/templates/gititemlog.qtpl.go
230index e3bac4102910c7b96b8da4235d43ac530b02726a..185b1538470f819fe06465b82a2d762fc279962a 100644
231--- a/templates/gititemlog.qtpl.go
232+++ b/templates/gititemlog.qtpl.go
233@@ -59,7 +59,7 @@ //line gititemlog.qtpl:9
234 }
235
236 //line gititemlog.qtpl:11
237-func (g *GitItemLogPage) StreamGitContent(qw422016 *qt422016.Writer) {
238+func (g *GitItemLogPage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
239 //line gititemlog.qtpl:11
240 qw422016.N().S(`
241 <div class="logs">
242@@ -106,22 +106,22 @@ //line gititemlog.qtpl:27
243 }
244
245 //line gititemlog.qtpl:27
246-func (g *GitItemLogPage) WriteGitContent(qq422016 qtio422016.Writer) {
247+func (g *GitItemLogPage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
248 //line gititemlog.qtpl:27
249 qw422016 := qt422016.AcquireWriter(qq422016)
250 //line gititemlog.qtpl:27
251- g.StreamGitContent(qw422016)
252+ g.StreamGitContent(qw422016, name, ref)
253 //line gititemlog.qtpl:27
254 qt422016.ReleaseWriter(qw422016)
255 //line gititemlog.qtpl:27
256 }
257
258 //line gititemlog.qtpl:27
259-func (g *GitItemLogPage) GitContent() string {
260+func (g *GitItemLogPage) GitContent(name, ref string) string {
261 //line gititemlog.qtpl:27
262 qb422016 := qt422016.AcquireByteBuffer()
263 //line gititemlog.qtpl:27
264- g.WriteGitContent(qb422016)
265+ g.WriteGitContent(qb422016, name, ref)
266 //line gititemlog.qtpl:27
267 qs422016 := string(qb422016.B)
268 //line gititemlog.qtpl:27
269diff --git a/templates/gititemrefs.qtpl b/templates/gititemrefs.qtpl
270index 56f6c2bf557e1afc0a2dc12a5f918f6f347353d2..47a69e32967bc8e90fd2595efa487ff71380d593 100644
271--- a/templates/gititemrefs.qtpl
272+++ b/templates/gititemrefs.qtpl
273@@ -10,13 +10,12 @@ %}
274
275 {% func (g *GitItemRefsPage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Refs) %}{% endfunc %}
276
277-{% func (g *GitItemRefsPage) GitContent() %}
278+{% func (g *GitItemRefsPage) GitContent(name, ref string) %}
279 <div class="row">
280- <div class="col-xxl">
281- <h4>Tags</h4>
282- <div class="logs">
283+ <div class="col-md-8">
284+ <div class="event-list">
285 {% for _, t := range g.Tags %}
286- <div class="row">
287+ <div class="row event">
288 <div class="col-xxl-2">
289 {%s TimeFormat(t.Tagger.When) %}
290 </div>
291@@ -30,13 +29,18 @@ </div>
292 {% endfor %}
293 </div>
294 </div>
295- <div class="col-xxl">
296- <h4>Branches</h4>
297- <div class="logs">
298+ <div class="col-md-4">
299+ <div class="event-list">
300 {% for _, b := range g.Branches %}
301- <div class="row">
302- <div class="col-xxl">
303+ <div class="row event">
304+ <div class="col-4">
305 {%s b.Name().Short() %}
306+ </div>
307+ <div class="col-8">
308+ <div class="float-end">
309+ <a href="/{%s name %}/tree/{%s b.Name().Short() %}">tree</a>
310+ <a href="/{%s name %}/log/{%s b.Name().Short() %}">log</a>
311+ </div>
312 </div>
313 </div>
314 {% endfor %}
315diff --git a/templates/gititemrefs.qtpl.go b/templates/gititemrefs.qtpl.go
316index d2a362e5bacc6b8e2fcf10bb9da486ef48fcecda..95dd31a0114a36ee774711c902dea4bf809bc2df 100644
317--- a/templates/gititemrefs.qtpl.go
318+++ b/templates/gititemrefs.qtpl.go
319@@ -63,99 +63,119 @@ //line gititemrefs.qtpl:11
320 }
321
322 //line gititemrefs.qtpl:13
323-func (g *GitItemRefsPage) StreamGitContent(qw422016 *qt422016.Writer) {
324+func (g *GitItemRefsPage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
325 //line gititemrefs.qtpl:13
326 qw422016.N().S(`
327 <div class="row">
328- <div class="col-xxl">
329- <h4>Tags</h4>
330- <div class="logs">
331+ <div class="col-md-8">
332+ <div class="event-list">
333 `)
334-//line gititemrefs.qtpl:18
335+//line gititemrefs.qtpl:17
336 for _, t := range g.Tags {
337-//line gititemrefs.qtpl:18
338+//line gititemrefs.qtpl:17
339 qw422016.N().S(`
340- <div class="row">
341+ <div class="row event">
342 <div class="col-xxl-2">
343 `)
344-//line gititemrefs.qtpl:21
345+//line gititemrefs.qtpl:20
346 qw422016.E().S(TimeFormat(t.Tagger.When))
347-//line gititemrefs.qtpl:21
348+//line gititemrefs.qtpl:20
349 qw422016.N().S(`
350 </div>
351 <div class="col-xxl-7">
352 <pre>`)
353-//line gititemrefs.qtpl:24
354+//line gititemrefs.qtpl:23
355 qw422016.E().S(t.Message)
356-//line gititemrefs.qtpl:24
357+//line gititemrefs.qtpl:23
358 qw422016.N().S(`</pre>
359 </div>
360 <div class="col-xxl-3">
361 <small>`)
362-//line gititemrefs.qtpl:27
363+//line gititemrefs.qtpl:26
364 qw422016.E().S(t.Tagger.Name)
365-//line gititemrefs.qtpl:27
366+//line gititemrefs.qtpl:26
367 qw422016.N().S(`</small>
368 </div>
369 </div>
370 `)
371-//line gititemrefs.qtpl:30
372+//line gititemrefs.qtpl:29
373 }
374-//line gititemrefs.qtpl:30
375+//line gititemrefs.qtpl:29
376 qw422016.N().S(`
377 </div>
378 </div>
379- <div class="col-xxl">
380- <h4>Branches</h4>
381- <div class="logs">
382+ <div class="col-md-4">
383+ <div class="event-list">
384 `)
385-//line gititemrefs.qtpl:36
386+//line gititemrefs.qtpl:34
387 for _, b := range g.Branches {
388-//line gititemrefs.qtpl:36
389+//line gititemrefs.qtpl:34
390 qw422016.N().S(`
391- <div class="row">
392- <div class="col-xxl">
393+ <div class="row event">
394+ <div class="col-4">
395 `)
396-//line gititemrefs.qtpl:39
397+//line gititemrefs.qtpl:37
398 qw422016.E().S(b.Name().Short())
399-//line gititemrefs.qtpl:39
400+//line gititemrefs.qtpl:37
401 qw422016.N().S(`
402 </div>
403+ <div class="col-8">
404+ <div class="float-end">
405+ <a href="/`)
406+//line gititemrefs.qtpl:41
407+ qw422016.E().S(name)
408+//line gititemrefs.qtpl:41
409+ qw422016.N().S(`/tree/`)
410+//line gititemrefs.qtpl:41
411+ qw422016.E().S(b.Name().Short())
412+//line gititemrefs.qtpl:41
413+ qw422016.N().S(`">tree</a>
414+ <a href="/`)
415+//line gititemrefs.qtpl:42
416+ qw422016.E().S(name)
417+//line gititemrefs.qtpl:42
418+ qw422016.N().S(`/log/`)
419+//line gititemrefs.qtpl:42
420+ qw422016.E().S(b.Name().Short())
421+//line gititemrefs.qtpl:42
422+ qw422016.N().S(`">log</a>
423+ </div>
424+ </div>
425 </div>
426 `)
427-//line gititemrefs.qtpl:42
428+//line gititemrefs.qtpl:46
429 }
430-//line gititemrefs.qtpl:42
431+//line gititemrefs.qtpl:46
432 qw422016.N().S(`
433 </div>
434 </div>
435 </div>
436 `)
437-//line gititemrefs.qtpl:46
438+//line gititemrefs.qtpl:50
439 }
440
441-//line gititemrefs.qtpl:46
442-func (g *GitItemRefsPage) WriteGitContent(qq422016 qtio422016.Writer) {
443-//line gititemrefs.qtpl:46
444+//line gititemrefs.qtpl:50
445+func (g *GitItemRefsPage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
446+//line gititemrefs.qtpl:50
447 qw422016 := qt422016.AcquireWriter(qq422016)
448-//line gititemrefs.qtpl:46
449- g.StreamGitContent(qw422016)
450-//line gititemrefs.qtpl:46
451+//line gititemrefs.qtpl:50
452+ g.StreamGitContent(qw422016, name, ref)
453+//line gititemrefs.qtpl:50
454 qt422016.ReleaseWriter(qw422016)
455-//line gititemrefs.qtpl:46
456+//line gititemrefs.qtpl:50
457 }
458
459-//line gititemrefs.qtpl:46
460-func (g *GitItemRefsPage) GitContent() string {
461-//line gititemrefs.qtpl:46
462+//line gititemrefs.qtpl:50
463+func (g *GitItemRefsPage) GitContent(name, ref string) string {
464+//line gititemrefs.qtpl:50
465 qb422016 := qt422016.AcquireByteBuffer()
466-//line gititemrefs.qtpl:46
467- g.WriteGitContent(qb422016)
468-//line gititemrefs.qtpl:46
469+//line gititemrefs.qtpl:50
470+ g.WriteGitContent(qb422016, name, ref)
471+//line gititemrefs.qtpl:50
472 qs422016 := string(qb422016.B)
473-//line gititemrefs.qtpl:46
474+//line gititemrefs.qtpl:50
475 qt422016.ReleaseByteBuffer(qb422016)
476-//line gititemrefs.qtpl:46
477+//line gititemrefs.qtpl:50
478 return qs422016
479-//line gititemrefs.qtpl:46
480+//line gititemrefs.qtpl:50
481 }
482diff --git a/templates/gititemsummary.qtpl b/templates/gititemsummary.qtpl
483index 5756ea51e1182941cb268f30836a0fc0902f324b..4cbf324c71e3d0d1d627e029553b682dd46feee5 100644
484--- a/templates/gititemsummary.qtpl
485+++ b/templates/gititemsummary.qtpl
486@@ -5,6 +5,6 @@ %}
487
488 {% func (g *GitItemSummaryPage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Summary) %}{% endfunc %}
489
490-{% func (g *GitItemSummaryPage) GitContent() %}
491+{% func (g *GitItemSummaryPage) GitContent(name, ref string) %}
492 <h4>Summary</h4>
493 {% endfunc %}
494diff --git a/templates/gititemsummary.qtpl.go b/templates/gititemsummary.qtpl.go
495index 99cb984846d93b0e576a56e13479174083e0d4f5..d8606a58c8b3d823a2ab6a293f0073fae603a7fa 100644
496--- a/templates/gititemsummary.qtpl.go
497+++ b/templates/gititemsummary.qtpl.go
498@@ -55,7 +55,7 @@ //line gititemsummary.qtpl:6
499 }
500
501 //line gititemsummary.qtpl:8
502-func (g *GitItemSummaryPage) StreamGitContent(qw422016 *qt422016.Writer) {
503+func (g *GitItemSummaryPage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
504 //line gititemsummary.qtpl:8
505 qw422016.N().S(`
506 <h4>Summary</h4>
507@@ -64,22 +64,22 @@ //line gititemsummary.qtpl:10
508 }
509
510 //line gititemsummary.qtpl:10
511-func (g *GitItemSummaryPage) WriteGitContent(qq422016 qtio422016.Writer) {
512+func (g *GitItemSummaryPage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
513 //line gititemsummary.qtpl:10
514 qw422016 := qt422016.AcquireWriter(qq422016)
515 //line gititemsummary.qtpl:10
516- g.StreamGitContent(qw422016)
517+ g.StreamGitContent(qw422016, name, ref)
518 //line gititemsummary.qtpl:10
519 qt422016.ReleaseWriter(qw422016)
520 //line gititemsummary.qtpl:10
521 }
522
523 //line gititemsummary.qtpl:10
524-func (g *GitItemSummaryPage) GitContent() string {
525+func (g *GitItemSummaryPage) GitContent(name, ref string) string {
526 //line gititemsummary.qtpl:10
527 qb422016 := qt422016.AcquireByteBuffer()
528 //line gititemsummary.qtpl:10
529- g.WriteGitContent(qb422016)
530+ g.WriteGitContent(qb422016, name, ref)
531 //line gititemsummary.qtpl:10
532 qs422016 := string(qb422016.B)
533 //line gititemsummary.qtpl:10
534diff --git a/templates/gititemtree.qtpl b/templates/gititemtree.qtpl
535index 68b98566d92fb065d6413d1236d0ee0deb6401cb..ffc063dff52d97495cdc7df57c686fa2e67b1e6a 100644
536--- a/templates/gititemtree.qtpl
537+++ b/templates/gititemtree.qtpl
538@@ -4,23 +4,19 @@ {% code
539 type GitItemTreePage struct {
540 CurrentPath string
541 Tree *object.Tree
542-
543- // TODO: remove this since it can be passed by GitCommit
544- Ref string
545- Name string
546 }
547 %}
548
549 {% func (g *GitItemTreePage) Nav(name, ref string) %}{%= GitItemNav(name, ref, Tree) %}{% endfunc %}
550
551-{% func (g *GitItemTreePage) GitContent() %}
552+{% func (g *GitItemTreePage) GitContent(name, ref string) %}
553 <div class="row">
554 <div class="col-md-12">
555 <div class="tree-list">
556 {% for _, e := range g.Tree.Entries %}
557 <div class="mode">{%s Ignore(e.Mode.ToOSFileMode()).String() %}</div>
558 {% if e.Mode.IsFile() %}
559- <div class="name blob"><a href="/{%s g.Name %}/blob/{%s g.Ref%}/{%s g.CurrentPath %}/{%s e.Name %}">{%s e.Name %}</a></div>
560+ <div class="name blob"><a href="/{%s name %}/blob/{%s ref%}/{%s g.CurrentPath %}/{%s e.Name %}">{%s e.Name %}</a></div>
561 {% else %}
562 <div class="name tree"><a href="./{%s g.CurrentPath %}/{%s e.Name %}">{%s e.Name %}</a></div>
563 {% endif %}
564diff --git a/templates/gititemtree.qtpl.go b/templates/gititemtree.qtpl.go
565index 546cb13e1253fa4c9183c0b804b35d0b12e2ac0f..0e9b09e05723a383d173474668cea00b3f680793 100644
566--- a/templates/gititemtree.qtpl.go
567+++ b/templates/gititemtree.qtpl.go
568@@ -24,152 +24,148 @@ //line gititemtree.qtpl:4
569 type GitItemTreePage struct {
570 CurrentPath string
571 Tree *object.Tree
572-
573- // TODO: remove this since it can be passed by GitCommit
574- Ref string
575- Name string
576 }
577
578-//line gititemtree.qtpl:14
579+//line gititemtree.qtpl:10
580 func (g *GitItemTreePage) StreamNav(qw422016 *qt422016.Writer, name, ref string) {
581-//line gititemtree.qtpl:14
582+//line gititemtree.qtpl:10
583 StreamGitItemNav(qw422016, name, ref, Tree)
584-//line gititemtree.qtpl:14
585+//line gititemtree.qtpl:10
586 }
587
588-//line gititemtree.qtpl:14
589+//line gititemtree.qtpl:10
590 func (g *GitItemTreePage) WriteNav(qq422016 qtio422016.Writer, name, ref string) {
591-//line gititemtree.qtpl:14
592+//line gititemtree.qtpl:10
593 qw422016 := qt422016.AcquireWriter(qq422016)
594-//line gititemtree.qtpl:14
595+//line gititemtree.qtpl:10
596 g.StreamNav(qw422016, name, ref)
597-//line gititemtree.qtpl:14
598+//line gititemtree.qtpl:10
599 qt422016.ReleaseWriter(qw422016)
600-//line gititemtree.qtpl:14
601+//line gititemtree.qtpl:10
602 }
603
604-//line gititemtree.qtpl:14
605+//line gititemtree.qtpl:10
606 func (g *GitItemTreePage) Nav(name, ref string) string {
607-//line gititemtree.qtpl:14
608+//line gititemtree.qtpl:10
609 qb422016 := qt422016.AcquireByteBuffer()
610-//line gititemtree.qtpl:14
611+//line gititemtree.qtpl:10
612 g.WriteNav(qb422016, name, ref)
613-//line gititemtree.qtpl:14
614+//line gititemtree.qtpl:10
615 qs422016 := string(qb422016.B)
616-//line gititemtree.qtpl:14
617+//line gititemtree.qtpl:10
618 qt422016.ReleaseByteBuffer(qb422016)
619-//line gititemtree.qtpl:14
620+//line gititemtree.qtpl:10
621 return qs422016
622-//line gititemtree.qtpl:14
623+//line gititemtree.qtpl:10
624 }
625
626-//line gititemtree.qtpl:16
627-func (g *GitItemTreePage) StreamGitContent(qw422016 *qt422016.Writer) {
628-//line gititemtree.qtpl:16
629+//line gititemtree.qtpl:12
630+func (g *GitItemTreePage) StreamGitContent(qw422016 *qt422016.Writer, name, ref string) {
631+//line gititemtree.qtpl:12
632 qw422016.N().S(`
633 <div class="row">
634 <div class="col-md-12">
635 <div class="tree-list">
636 `)
637-//line gititemtree.qtpl:20
638+//line gititemtree.qtpl:16
639 for _, e := range g.Tree.Entries {
640-//line gititemtree.qtpl:20
641+//line gititemtree.qtpl:16
642 qw422016.N().S(`
643 <div class="mode">`)
644-//line gititemtree.qtpl:21
645+//line gititemtree.qtpl:17
646 qw422016.E().S(Ignore(e.Mode.ToOSFileMode()).String())
647-//line gititemtree.qtpl:21
648+//line gititemtree.qtpl:17
649 qw422016.N().S(`</div>
650 `)
651-//line gititemtree.qtpl:22
652+//line gititemtree.qtpl:18
653 if e.Mode.IsFile() {
654-//line gititemtree.qtpl:22
655+//line gititemtree.qtpl:18
656 qw422016.N().S(`
657 <div class="name blob"><a href="/`)
658-//line gititemtree.qtpl:23
659- qw422016.E().S(g.Name)
660-//line gititemtree.qtpl:23
661+//line gititemtree.qtpl:19
662+ qw422016.E().S(name)
663+//line gititemtree.qtpl:19
664 qw422016.N().S(`/blob/`)
665-//line gititemtree.qtpl:23
666- qw422016.E().S(g.Ref)
667-//line gititemtree.qtpl:23
668+//line gititemtree.qtpl:19
669+ qw422016.E().S(ref)
670+//line gititemtree.qtpl:19
671 qw422016.N().S(`/`)
672-//line gititemtree.qtpl:23
673+//line gititemtree.qtpl:19
674 qw422016.E().S(g.CurrentPath)
675-//line gititemtree.qtpl:23
676+//line gititemtree.qtpl:19
677 qw422016.N().S(`/`)
678-//line gititemtree.qtpl:23
679+//line gititemtree.qtpl:19
680 qw422016.E().S(e.Name)
681-//line gititemtree.qtpl:23
682+//line gititemtree.qtpl:19
683 qw422016.N().S(`">`)
684-//line gititemtree.qtpl:23
685+//line gititemtree.qtpl:19
686 qw422016.E().S(e.Name)
687-//line gititemtree.qtpl:23
688+//line gititemtree.qtpl:19
689 qw422016.N().S(`</a></div>
690 `)
691-//line gititemtree.qtpl:24
692+//line gititemtree.qtpl:20
693 } else {
694-//line gititemtree.qtpl:24
695+//line gititemtree.qtpl:20
696 qw422016.N().S(`
697 <div class="name tree"><a href="./`)
698-//line gititemtree.qtpl:25
699+//line gititemtree.qtpl:21
700 qw422016.E().S(g.CurrentPath)
701-//line gititemtree.qtpl:25
702+//line gititemtree.qtpl:21
703 qw422016.N().S(`/`)
704-//line gititemtree.qtpl:25
705+//line gititemtree.qtpl:21
706 qw422016.E().S(e.Name)
707-//line gititemtree.qtpl:25
708+//line gititemtree.qtpl:21
709 qw422016.N().S(`">`)
710-//line gititemtree.qtpl:25
711+//line gititemtree.qtpl:21
712 qw422016.E().S(e.Name)
713-//line gititemtree.qtpl:25
714+//line gititemtree.qtpl:21
715 qw422016.N().S(`</a></div>
716 `)
717-//line gititemtree.qtpl:26
718+//line gititemtree.qtpl:22
719 }
720-//line gititemtree.qtpl:26
721+//line gititemtree.qtpl:22
722 qw422016.N().S(`
723 <div class="commit"></div>
724 <div class="date"></div>
725 <div class="size">`)
726-//line gititemtree.qtpl:29
727+//line gititemtree.qtpl:25
728 qw422016.N().DL(Ignore(g.Tree.Size(e.Name)))
729-//line gititemtree.qtpl:29
730+//line gititemtree.qtpl:25
731 qw422016.N().S(` KiB</div>
732 `)
733-//line gititemtree.qtpl:30
734+//line gititemtree.qtpl:26
735 }
736-//line gititemtree.qtpl:30
737+//line gititemtree.qtpl:26
738 qw422016.N().S(`
739 </div>
740 </div>
741 </div>
742 `)
743-//line gititemtree.qtpl:34
744+//line gititemtree.qtpl:30
745 }
746
747-//line gititemtree.qtpl:34
748-func (g *GitItemTreePage) WriteGitContent(qq422016 qtio422016.Writer) {
749-//line gititemtree.qtpl:34
750+//line gititemtree.qtpl:30
751+func (g *GitItemTreePage) WriteGitContent(qq422016 qtio422016.Writer, name, ref string) {
752+//line gititemtree.qtpl:30
753 qw422016 := qt422016.AcquireWriter(qq422016)
754-//line gititemtree.qtpl:34
755- g.StreamGitContent(qw422016)
756-//line gititemtree.qtpl:34
757+//line gititemtree.qtpl:30
758+ g.StreamGitContent(qw422016, name, ref)
759+//line gititemtree.qtpl:30
760 qt422016.ReleaseWriter(qw422016)
761-//line gititemtree.qtpl:34
762+//line gititemtree.qtpl:30
763 }
764
765-//line gititemtree.qtpl:34
766-func (g *GitItemTreePage) GitContent() string {
767-//line gititemtree.qtpl:34
768+//line gititemtree.qtpl:30
769+func (g *GitItemTreePage) GitContent(name, ref string) string {
770+//line gititemtree.qtpl:30
771 qb422016 := qt422016.AcquireByteBuffer()
772-//line gititemtree.qtpl:34
773- g.WriteGitContent(qb422016)
774-//line gititemtree.qtpl:34
775+//line gititemtree.qtpl:30
776+ g.WriteGitContent(qb422016, name, ref)
777+//line gititemtree.qtpl:30
778 qs422016 := string(qb422016.B)
779-//line gititemtree.qtpl:34
780+//line gititemtree.qtpl:30
781 qt422016.ReleaseByteBuffer(qb422016)
782-//line gititemtree.qtpl:34
783+//line gititemtree.qtpl:30
784 return qs422016
785-//line gititemtree.qtpl:34
786+//line gititemtree.qtpl:30
787 }