cacd4a11d055ef606d7d13c5c0a373eaef9e430c
[ndcode_site.git] / blog / index.html.jst
1 return async env => {
2   let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
3   let get_navigation = await _require('/_lib/get_navigation.jst')
4   let navbar = await _require('/_lib/navbar.jst')
5
6   await navbar(
7     env,
8     async _out => {},
9     async _out => {
10       await breadcrumbs(env, _out)
11
12       let transaction = await env.site.database.Transaction()
13       try {
14         let root = await transaction.get()
15         let p = await get_navigation(root, env.component_names)
16         let children = await p.get('children')
17         let menu = await p.get_json('menu')
18
19         ul.nav.flex-column {
20           for (let i = 0; i < menu.length; ++i) {
21             let name = menu[i]
22             let q = await children.get(name)
23
24             li.nav-item {
25               a.nav-link(href=`${name}/index.html`) {
26                 table.icon-and-text {
27                   tr {
28                     td {
29                       img(
30                         src=`${name}/${await q.get_json('thumbnail') || 'thumbnail.jpg'}`
31                       ) {}
32                     }
33                     td {
34                       span.h2{
35                         `${await q.get_json('title')}`
36                       }
37                       br {}
38                       span.h4{
39                         `${await q.get_json('description')}—by ${await q.get_json('author')}`
40                       }
41                     }
42                   }
43                 }
44               }
45             }
46           }
47         }
48       }
49       finally {
50         transaction.rollback()
51       }
52     },
53     async _out => {}
54   )
55 }