return async env => {
let breadcrumbs = await _require('/_lib/breadcrumbs.jst')
- let menu = await env.site.get_menu('/blog/_menu.json')
+ let get_navigation = await _require('/_lib/get_navigation.jst')
let navbar = await _require('/_lib/navbar.jst')
await navbar(
async _out => {
await breadcrumbs(env, _out)
- ul.nav.flex-column {
- let entries = menu.entries
- for (let i = 0; i < entries.length; ++i) {
- let article = entries[i]
- li.nav-item {
- a.nav-link(href=`${article.dir}/index.html`) {
- table.icon-and-text {
- tr {
- td {
- img(src=`${article.dir}/${article.thumbnail || 'thumbnail.jpg'}`) {}
- }
- td {
- span.text-h2{`${article.name}`}
- br {}
- span.text-h4{`${article.description}—by ${article.author}`}
+ let transaction = await env.site.database.Transaction()
+ try {
+ let root = await transaction.get()
+ let p = await get_navigation(root, env.component_names)
+ let children = await p.get('children')
+ let menu = await p.get_json('menu')
+
+ ul.nav.flex-column {
+ for (let i = 0; i < menu.length; ++i) {
+ let name = menu[i]
+ let q = await children.get(name)
+
+ li.nav-item {
+ a.nav-link(href=`${name}/index.html`) {
+ table.icon-and-text {
+ tr {
+ td {
+ img(
+ src=`${name}/${await q.get_json('thumbnail') || 'thumbnail.jpg'}`
+ ) {}
+ }
+ td {
+ span.h2{
+ `${await q.get_json('title')}`
+ }
+ br {}
+ span.h4{
+ `${await q.get_json('description')}—by ${await q.get_json('author')}`
+ }
+ }
}
}
}
}
}
}
+ finally {
+ transaction.rollback()
+ }
},
async _out => {}
)