cerrado @ 2fcc394c53f995750b52ad06153041f61f0a0c55

feat: Add global reference to ref and name
  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 }