-
<% files.forEach(function(value, index) { %>
- @@ -65,7 +115,6 @@ <% }); %>
diff --git a/app/helpers/functions.mts b/app/helpers/functions.mts index 13907508..5c6e2000 100644 --- a/app/helpers/functions.mts +++ b/app/helpers/functions.mts @@ -186,6 +186,14 @@ const renderArchive = (html: string, paths: string[]) => { return html; } +const isMsOfficeViewerSupported = (file: string) => { + return path.extname(file).search(/^((?:.pptx)|(?:.docx)|(?:.xlsx)|(?:.ppt)|(?:.doc)|(?:.xls))$/ig) != -1; +} + +const isGoogleDocsViewerSupported = (file: string) => { + return isMsOfficeViewerSupported(file) || path.extname(file).search(/^((?:.pdf))$/ig) != -1; +} + export default { leftTrimFirstDirectory, trimSlashes, @@ -205,4 +213,6 @@ export default { inspect, md, moment, + isMsOfficeViewerSupported, + isGoogleDocsViewerSupported, }; \ No newline at end of file diff --git a/app/page/router.mts b/app/page/router.mts index 65dfb26c..bd072740 100644 --- a/app/page/router.mts +++ b/app/page/router.mts @@ -78,7 +78,7 @@ export default function () { } }); const renderData = { breadcrumbs, content, filePath, fullFilePath, paths, req, route, ...fmData }; - res.render("page", { h: helpers, ...renderData }); + res.render("page", { h: helpers, path, config, ...renderData }); }); }); @@ -122,7 +122,7 @@ export default function () { console.log(`Setting route for ${route}`); pageRouter.get(route, async (req, res) => { const html = fs.readFileSync(fullFilePath).toString(); - const renderData = { route, filePath, fullFilePath, req, paths, html }; + const renderData = { route, filePath, fullFilePath, req, paths, html, path, config }; res.render("archive", { h: helpers, ...renderData }); }); }); @@ -183,7 +183,7 @@ export default function () { } }); const renderData = { breadcrumbs, route, filePath, fullFilePath, req, paths, directory: path.join('public', directory), videoURL, subtitleURL, subtitleVTT, info }; - res.render("video-player", { h: helpers, ...renderData }); + res.render("video-player", { h: helpers, path, config, ...renderData }); } }); }); diff --git a/app/page/vercel-serve.mts b/app/page/vercel-serve.mts index 1308e953..98524f1c 100644 --- a/app/page/vercel-serve.mts +++ b/app/page/vercel-serve.mts @@ -81,15 +81,15 @@ export interface ServeHandlerOptions { * current working directory. * * For example, if serving a Jekyll app, it would look like this: - * { - * "public": "_site" - * } + * { + * "public": "_site" + * } * * Using absolute path: * - * { - * "public": "/path/to/your/_site" - * } + * { + * "public": "/path/to/your/_site" + * } * * NOTE: The path cannot contain globs or regular expressions. */ @@ -101,17 +101,17 @@ export interface ServeHandlerOptions { * with status code 301 to the same path, but with the extension dropped. * * You can disable the feature like follows: - * { - * "cleanUrls": false - * } + * { + * "cleanUrls": false + * } * * However, you can also restrict it to certain paths: - * { - * "cleanUrls": [ - * "/app/**", - * "/!components/**" - * ] - * } + * { + * "cleanUrls": [ + * "/app/**", + * "/!components/**" + * ] + * } * * NOTE: The paths can only contain globs that are matched using minimatch. */ @@ -121,19 +121,19 @@ export interface ServeHandlerOptions { * different one behind the curtains, this option is what you need. * * It's perfect for single page applications (SPAs), for example: - * { - * "rewrites": [ - * { "source": "app/**", "destination": "/index.html" }, - * { "source": "projects/edit", "destination": "/edit-project.html" } - * ] - * } + * { + * "rewrites": [ + * { "source": "app/**", "destination": "/index.html" }, + * { "source": "projects/edit", "destination": "/edit-project.html" } + * ] + * } * * You can also use so-called "routing segments" as follows: - * { - * "rewrites": [ - * { "source": "/projects/:id/edit", "destination": "/edit-project-:id.html" }, - * ] - * } + * { + * "rewrites": [ + * { "source": "/projects/:id/edit", "destination": "/edit-project-:id.html" }, + * ] + * } * * Now, if a visitor accesses /projects/123/edit, it will respond with the file /edit-project-123.html. * @@ -184,8 +184,9 @@ export const directoryTemplate = (vals: ServeDirectoryTemplateParameters) => { }); } return new Promise((resolve, reject) => { - ejs.renderFile(path.join(config.viewsPath, 'directory.ejs'), { breadcrumbs, h: helpers, ...vals }, (err, str) => { + ejs.renderFile(path.join(config.viewsPath, 'directory.ejs'), { h: helpers, path, config, breadcrumbs, ...vals }, (err, str) => { if (err) { + console.error(err); reject(err); } else { resolve(str); @@ -196,8 +197,9 @@ export const directoryTemplate = (vals: ServeDirectoryTemplateParameters) => { export const errorTemplate = (vals: ServeErrorTemplateParameters) => { return new Promise((resolve, reject) => { - ejs.renderFile(path.join(config.viewsPath, 'error.ejs'), { h: helpers, ...vals }, (err, str) => { + ejs.renderFile(path.join(config.viewsPath, 'error.ejs'), { h: helpers, path, config, ...vals }, (err, str) => { if (err) { + console.error(err); reject(err); } else { resolve(str); @@ -1012,4 +1014,4 @@ export default async (request: Request, response: ServerResponse, serveConfig: S response.writeHead(response.statusCode || 200, headers); stream.pipe(response); -}; +}; \ No newline at end of file diff --git a/app/views/directory.ejs b/app/views/directory.ejs index edfe52dd..adb96576 100644 --- a/app/views/directory.ejs +++ b/app/views/directory.ejs @@ -4,18 +4,13 @@