1diff --git a/scss/main.scss b/scss/main.scss
2index 26155a62c9dbd8ae233adcfac7a91cb519de1015..5500a383ec0e462a371173601b8a19e63e0820a0 100644
3--- a/scss/main.scss
4+++ b/scss/main.scss
5@@ -21,6 +21,10 @@ @import "bootstrap/scss/_navbar.scss";
6 @import "bootstrap/scss/_grid.scss";
7 @import "tree.scss";
8
9+// TODO remove once is not needed
10+$alert-border-radius: 0;
11+@import "bootstrap/scss/_alert.scss";
12+
13 // overwrite to reduce the ammount of css generated by loading all utilities
14 $utilities: (
15 "order": (
16@@ -46,6 +50,16 @@ end: right,
17 none: none,
18 )
19 ),
20+ "text-align": (
21+ responsive: true,
22+ property: text-align,
23+ class: text,
24+ values: (
25+ start: left,
26+ end: right,
27+ center: center,
28+ )
29+),
30 );
31
32 @import "bootstrap/scss/utilities/_api.scss";
33diff --git a/templates/base.qtpl b/templates/base.qtpl
34index ae9f7a6c50f072bfc14a2edf7c1af335f19e0a1b..9e2e6ac85aa996f80b31e8c4fc3170fe357dbcd0 100644
35--- a/templates/base.qtpl
36+++ b/templates/base.qtpl
37@@ -39,25 +39,23 @@ Page prints a page implementing Page interface.
38 {% func PageTemplate(p Page) %}
39 <!DOCTYPE html>
40 <html lang="en">
41- <head>
42- <meta charset="utf-8">
43- <link rel="icon" href="data:,">
44- <title>{%= p.Title() %}</title>
45- <link rel="stylesheet" href="/static/main{%s Slug%}.css">
46- <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
47- <meta name="viewport" content="width=device-width, initial-scale=1" />
48- </head>
49- <body>
50- {%= p.Navbar() %}
51- <div class="container">
52- {%= p.Content() %}
53- </div>
54- </body>
55- {%= p.Script() %}
56+ <head>
57+ <meta charset="utf-8">
58+ <link rel="icon" href="data:,">
59+ <title>{%= p.Title() %}</title>
60+ <link rel="stylesheet" href="/static/main{%s Slug%}.css">
61+ <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
62+ <meta name="viewport" content="width=device-width, initial-scale=1" />
63+ </head>
64+ <body>
65+ <div class="alert alert-warning text-center" role="alert">
66+ This project is under development, things may be broken or incomplete.
67+ </div>
68+ {%= p.Navbar() %}
69+ <div class="container">
70+ {%= p.Content() %}
71+ </div>
72+ </body>
73+ {%= p.Script() %}
74 </html>
75 {% endfunc %}
76-
77-{% code type BasePage struct {} %}
78-{% func (p *BasePage) Title() %}Empty{% endfunc %}
79-{% func (p *BasePage) Body() %}HelloWorld{% endfunc %}
80-{% func (p *BasePage) Script() %}{% endfunc %}
81diff --git a/templates/base.qtpl.go b/templates/base.qtpl.go
82index bc40252cea03af8df732d1a1b29d11716260bca4..b2356feb0c1d6dd3aa6cd1105c63a81005a9093f 100644
83--- a/templates/base.qtpl.go
84+++ b/templates/base.qtpl.go
85@@ -84,99 +84,66 @@ //line base.qtpl:39
86 qw422016.N().S(`
87 <!DOCTYPE html>
88 <html lang="en">
89- <head>
90- <meta charset="utf-8">
91- <link rel="icon" href="data:,">
92- <title>`)
93+ <head>
94+ <meta charset="utf-8">
95+ <link rel="icon" href="data:,">
96+ <title>`)
97 //line base.qtpl:45
98 p.StreamTitle(qw422016)
99 //line base.qtpl:45
100 qw422016.N().S(`</title>
101- <link rel="stylesheet" href="/static/main`)
102+ <link rel="stylesheet" href="/static/main`)
103 //line base.qtpl:46
104 qw422016.E().S(Slug)
105 //line base.qtpl:46
106 qw422016.N().S(`.css">
107- <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
108- <meta name="viewport" content="width=device-width, initial-scale=1" />
109- </head>
110- <body>
111- `)
112-//line base.qtpl:51
113+ <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
114+ <meta name="viewport" content="width=device-width, initial-scale=1" />
115+ </head>
116+ <body>
117+ <div class="alert alert-warning text-center" role="alert">
118+ This project is under development, things may be broken or incomplete.
119+ </div>
120+ `)
121+//line base.qtpl:54
122 p.StreamNavbar(qw422016)
123-//line base.qtpl:51
124+//line base.qtpl:54
125 qw422016.N().S(`
126- <div class="container">
127- `)
128-//line base.qtpl:53
129+ <div class="container">
130+ `)
131+//line base.qtpl:56
132 p.StreamContent(qw422016)
133-//line base.qtpl:53
134+//line base.qtpl:56
135 qw422016.N().S(`
136- </div>
137- </body>
138- `)
139-//line base.qtpl:56
140+ </div>
141+ </body>
142+ `)
143+//line base.qtpl:59
144 p.StreamScript(qw422016)
145-//line base.qtpl:56
146+//line base.qtpl:59
147 qw422016.N().S(`
148 </html>
149 `)
150-//line base.qtpl:58
151-}
152-
153-//line base.qtpl:58
154-func WritePageTemplate(qq422016 qtio422016.Writer, p Page) {
155-//line base.qtpl:58
156- qw422016 := qt422016.AcquireWriter(qq422016)
157-//line base.qtpl:58
158- StreamPageTemplate(qw422016, p)
159-//line base.qtpl:58
160- qt422016.ReleaseWriter(qw422016)
161-//line base.qtpl:58
162-}
163-
164-//line base.qtpl:58
165-func PageTemplate(p Page) string {
166-//line base.qtpl:58
167- qb422016 := qt422016.AcquireByteBuffer()
168-//line base.qtpl:58
169- WritePageTemplate(qb422016, p)
170-//line base.qtpl:58
171- qs422016 := string(qb422016.B)
172-//line base.qtpl:58
173- qt422016.ReleaseByteBuffer(qb422016)
174-//line base.qtpl:58
175- return qs422016
176-//line base.qtpl:58
177-}
178-
179-//line base.qtpl:60
180-type BasePage struct{}
181-
182-//line base.qtpl:61
183-func (p *BasePage) StreamTitle(qw422016 *qt422016.Writer) {
184-//line base.qtpl:61
185- qw422016.N().S(`Empty`)
186 //line base.qtpl:61
187 }
188
189 //line base.qtpl:61
190-func (p *BasePage) WriteTitle(qq422016 qtio422016.Writer) {
191+func WritePageTemplate(qq422016 qtio422016.Writer, p Page) {
192 //line base.qtpl:61
193 qw422016 := qt422016.AcquireWriter(qq422016)
194 //line base.qtpl:61
195- p.StreamTitle(qw422016)
196+ StreamPageTemplate(qw422016, p)
197 //line base.qtpl:61
198 qt422016.ReleaseWriter(qw422016)
199 //line base.qtpl:61
200 }
201
202 //line base.qtpl:61
203-func (p *BasePage) Title() string {
204+func PageTemplate(p Page) string {
205 //line base.qtpl:61
206 qb422016 := qt422016.AcquireByteBuffer()
207 //line base.qtpl:61
208- p.WriteTitle(qb422016)
209+ WritePageTemplate(qb422016, p)
210 //line base.qtpl:61
211 qs422016 := string(qb422016.B)
212 //line base.qtpl:61
213@@ -185,67 +152,3 @@ //line base.qtpl:61
214 return qs422016
215 //line base.qtpl:61
216 }
217-
218-//line base.qtpl:62
219-func (p *BasePage) StreamBody(qw422016 *qt422016.Writer) {
220-//line base.qtpl:62
221- qw422016.N().S(`HelloWorld`)
222-//line base.qtpl:62
223-}
224-
225-//line base.qtpl:62
226-func (p *BasePage) WriteBody(qq422016 qtio422016.Writer) {
227-//line base.qtpl:62
228- qw422016 := qt422016.AcquireWriter(qq422016)
229-//line base.qtpl:62
230- p.StreamBody(qw422016)
231-//line base.qtpl:62
232- qt422016.ReleaseWriter(qw422016)
233-//line base.qtpl:62
234-}
235-
236-//line base.qtpl:62
237-func (p *BasePage) Body() string {
238-//line base.qtpl:62
239- qb422016 := qt422016.AcquireByteBuffer()
240-//line base.qtpl:62
241- p.WriteBody(qb422016)
242-//line base.qtpl:62
243- qs422016 := string(qb422016.B)
244-//line base.qtpl:62
245- qt422016.ReleaseByteBuffer(qb422016)
246-//line base.qtpl:62
247- return qs422016
248-//line base.qtpl:62
249-}
250-
251-//line base.qtpl:63
252-func (p *BasePage) StreamScript(qw422016 *qt422016.Writer) {
253-//line base.qtpl:63
254-}
255-
256-//line base.qtpl:63
257-func (p *BasePage) WriteScript(qq422016 qtio422016.Writer) {
258-//line base.qtpl:63
259- qw422016 := qt422016.AcquireWriter(qq422016)
260-//line base.qtpl:63
261- p.StreamScript(qw422016)
262-//line base.qtpl:63
263- qt422016.ReleaseWriter(qw422016)
264-//line base.qtpl:63
265-}
266-
267-//line base.qtpl:63
268-func (p *BasePage) Script() string {
269-//line base.qtpl:63
270- qb422016 := qt422016.AcquireByteBuffer()
271-//line base.qtpl:63
272- p.WriteScript(qb422016)
273-//line base.qtpl:63
274- qs422016 := string(qb422016.B)
275-//line base.qtpl:63
276- qt422016.ReleaseByteBuffer(qb422016)
277-//line base.qtpl:63
278- return qs422016
279-//line base.qtpl:63
280-}