diff --git a/content b/content index 2744e36..f500b5c 160000 --- a/content +++ b/content @@ -1 +1 @@ -Subproject commit 2744e36b95be401210a142eb2471220237cf0497 +Subproject commit f500b5cecccff7f232f95ffde5774dc4fd27805f diff --git a/public/css/projects.css b/public/css/projects.css index 8cdb184..3c77676 100644 --- a/public/css/projects.css +++ b/public/css/projects.css @@ -178,3 +178,9 @@ background: var(--accent-primary); color: white; } +.project-actions { + display: flex; + align-items: center; + gap: 1rem; + flex-wrap: wrap; +} diff --git a/src/middleware/baseContext.js b/src/middleware/baseContext.js index f06ae7d..7cf3640 100644 --- a/src/middleware/baseContext.js +++ b/src/middleware/baseContext.js @@ -70,6 +70,8 @@ formatMonth, baseUrl, isAuthenticated, + node_env_dev: meta.node_env == "development", + node_env_prod: meta.node_env != "development", ...getDefaultContext(req.query.view ?? "web"), ...overrides, }; diff --git a/src/routes/projects.js b/src/routes/projects.js index 6c0274e..5c5289c 100644 --- a/src/routes/projects.js +++ b/src/routes/projects.js @@ -22,10 +22,14 @@ router.use("/projects/website-presentation", presentation); html.register("/games/word-guesser", "word-guesser"); -markdown.register("/projects/lisp-interpreter", "projects/lisp_interpreter"); -markdown.register("/projects/pipeline-runner", "projects/pipeline_runner"); -markdown.register("/projects/telemetry", "projects/telemetry"); -markdown.register("/projects/xmonad", "projects/xmonad"); +function createProject(url, file) { + markdown.register(url, file, { project: true }); +} +createProject("/projects/lisp-interpreter", "projects/lisp_interpreter"); +createProject("/projects/pipeline-runner", "projects/pipeline_runner"); +createProject("/projects/telemetry", "projects/telemetry"); +createProject("/projects/xmonad", "projects/xmonad"); +createProject("/projects/word-guesser", "projects/word-guesser"); router.get("/projects", async (req, res, next) => { try { @@ -41,16 +45,20 @@ const fileContent = await fs.readFile(filePath, "utf-8"); const { data } = matter(fileContent); - projects.push({ - title: data.title, - status: data.published ? "Active" : "Archived", - status_class: data.published ? "active" : "archived", - description: data.description || "", - target_url: data.repository || `/${data.slug}`, - external: !!data.repository, - retrospective_url: `/${data.slug}`, - repository: data.repository, - }); + if (data.published || node_env === "development") { + projects.push({ + title: data.title, + status: data.published ? "Active" : "Archived", + status_class: data.published ? "active" : "archived", + description: data.description || "", + target_url: data.repository || `/${data.slug}`, + demo_url: data.demo_url, + demo_label: data.demo_label, + external: !!data.repository, + retrospective_url: `/${data.slug}`, + repository: data.repository, + }); + } } res.renderWithBaseContext("pages/projects", { projects }); diff --git a/src/utils/MarkdownRoutes.js b/src/utils/MarkdownRoutes.js index 5946a01..20fec17 100644 --- a/src/utils/MarkdownRoutes.js +++ b/src/utils/MarkdownRoutes.js @@ -11,7 +11,16 @@ super(); } - register(routePath, markdownFile = "page", handlebarsFile = "page") { + register(routePath, markdownFile = "page", params = "page") { + let extraParams = {}; + let handlebarsFile = params; + + if (typeof params !== "object" || params === null) { + // Legacy mode: params is just the markdown filename string + handlebarsFile = params; + } else { + ({ handlebarsFile = "page", ...extraParams } = params); + } this.router.get(routePath, async (req, res, next) => { try { const filePath = path.join( @@ -51,6 +60,7 @@ // title: frontmatter.title, ...frontmatter, content: htmlContent, + ...extraParams, }; res.renderWithBaseContext(`pages/${handlebarsFile}`, context); } catch (err) { diff --git a/src/views/pages/page.handlebars b/src/views/pages/page.handlebars index 107dd42..41490cf 100644 --- a/src/views/pages/page.handlebars +++ b/src/views/pages/page.handlebars @@ -16,8 +16,8 @@ {{/each}} {{/section}} -{{#if repository}} - {{> git_metadata }} +{{#if project}} + {{> project_metadata }} {{/if}} diff --git a/src/views/pages/projects.handlebars b/src/views/pages/projects.handlebars index f379259..e35287e 100644 --- a/src/views/pages/projects.handlebars +++ b/src/views/pages/projects.handlebars @@ -19,7 +19,9 @@ {{title}} {{/if}} - {{status}} + {{#if node_env_dev}} + {{status}} + {{/if}}
{{description}}
diff --git a/src/views/partials/git_metadata.handlebars b/src/views/partials/git_metadata.handlebars deleted file mode 100644 index 3f4f4f6..0000000 --- a/src/views/partials/git_metadata.handlebars +++ /dev/null @@ -1,44 +0,0 @@ - -{{#section "styles"}} - - {{#each extraStyles}} - - {{/each}} -{{/section}} - -