Move navigation from _menu.json files in each navigation-parent directory to a naviga...
[ndcode_site.git] / blog / index.html.jst
index 3345d9f..cacd4a1 100644 (file)
@@ -1,6 +1,6 @@
 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(
@@ -9,21 +9,36 @@ return async env => {
     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')}`
+                      }
+                    }
                   }
                 }
               }
@@ -31,6 +46,9 @@ return async env => {
           }
         }
       }
+      finally {
+        transaction.rollback()
+      }
     },
     async _out => {}
   )