diff --git a/app/config.js b/app/config.js
index af794eae..c18121b3 100644
--- a/app/config.js
+++ b/app/config.js
@@ -3,12 +3,13 @@ console.log(`Configuring .env and expanding .env to include environment variable
const path = require('path');
const dotenv = require('dotenv');
const dotenvExpand = require('dotenv-expand');
+const process = require('process');
let env = dotenv.config();
dotenvExpand.expand(env);
const getAppHttpHost = () => env.APP_HTTP_HOST||'nm3clol-express-app';
-const getAppHttpPort = () => parseInt(env.APP_HTTP_PORT||env.PORT||3000);
+const getAppHttpPort = () => process.env.PORT||env.APP_HTTP_PORT||3000;
const getAppHttpUrl = () => {
return env.APP_HTTP_URL || `http://${getAppHttpHost() + ((getAppHttpPort() === 80) ? '' : ':' + getAppHttpPort())}`
};
@@ -30,20 +31,24 @@ const getSolrLawPort = () => parseInt(env.SOLR_LAW_PORT||getSolrDocsPort());
const getSolrLawCore = () => env.SOLR_LAW_CORE||'vacode_core';
module.exports = {
- config: {
- publicPath: getPublicPath(),
- pagesPath: getPagesPath(),
- staticPath: getStaticPath(),
+ config: {
+ appHttpHost: getAppHttpHost(),
+ appHttpPort: getAppHttpPort(),
+ appHttpUrl: getAppHttpUrl(),
+
siteName: getSiteName(),
siteWelcomeMessage: getSiteWelcomeMessage(),
siteHost: getSiteHost(),
siteUrl: getSiteUrl(),
- appHttpHost: getAppHttpHost(),
- appHttpPort: getAppHttpPort(),
- appHttpUrl: getAppHttpUrl(),
+
+ publicPath: getPublicPath(),
+ pagesPath: getPagesPath(),
+ staticPath: getStaticPath(),
+
solrDocsHost: getSolrDocsHost(),
solrDocsPort: getSolrDocsPort(),
solrDocsCore: getSolrDocsCore(),
+
solrLawHost: getSolrLawHost(),
solrLawPort: getSolrLawPort(),
solrLawCore: getSolrLawCore(),
diff --git a/app/server.js b/app/server.js
index d312343f..0ce91ea2 100644
--- a/app/server.js
+++ b/app/server.js
@@ -88,7 +88,7 @@ glob.globSync('**/*.md', {
const fmData = { fm: fm.data, excerpt: fm.excerpt };
const content = helpers.md.render(fm.content, fmData );
const renderData = { content, route, filePath, fullFilePath, req, paths, ...fmData };
- res.render("page", { h: helpers, ...renderData });
+ res.render("page", { h: helpers, require, ...renderData });
});
});
diff --git a/app/vercel-serve.js b/app/vercel-serve.js
index d59b25a8..9de0f09a 100644
--- a/app/vercel-serve.js
+++ b/app/vercel-serve.js
@@ -25,7 +25,7 @@ const helpers = require('../views/helpers/functions');
// const errorTemplate = require('./views/error');
const directoryTemplate = (vals) => {
return new Promise((resolve, reject) => {
- ejs.renderFile(path.join(__dirname, '..', 'views', 'directory.ejs'), { h: helpers, ...vals }, (err, str) => {
+ ejs.renderFile(path.join(__dirname, '..', 'views', 'directory.ejs'), { h: helpers, require, ...vals }, (err, str) => {
if (err) {
reject(err);
} else {
@@ -36,7 +36,7 @@ const directoryTemplate = (vals) => {
};
const errorTemplate = (vals) => {
return new Promise((resolve, reject) => {
- ejs.renderFile(path.join(__dirname, '..', 'views', 'error.ejs'), { h: helpers, ...vals }, (err, str) => {
+ ejs.renderFile(path.join(__dirname, '..', 'views', 'error.ejs'), { h: helpers, require, ...vals }, (err, str) => {
if (err) {
reject(err);
} else {
diff --git a/views/directory.ejs b/views/directory.ejs
index 4040eb7a..c613b8c9 100644
--- a/views/directory.ejs
+++ b/views/directory.ejs
@@ -22,7 +22,9 @@
<%= h.getSiteWelcomeMessage() %>
<% } else if (h.shouldOmitLinkOnLastBreadcrumb({paths, index})) { %>
- <%= h.trimSlashes({path: value.name}).replaceAll('_', ' ') %>
+ <%= h.trimSlashes(value.name).replaceAll('_', ' ') %>
+ <% } else if (index == 0) { %>
+ <%= h.getSiteName() %>
<% } else { %>
<%= h.getDirectoryName({directory: value.name}).replaceAll('_', ' ') %>
diff --git a/views/helpers/functions.js b/views/helpers/functions.js
index 753e0d43..d072da2b 100644
--- a/views/helpers/functions.js
+++ b/views/helpers/functions.js
@@ -1,7 +1,7 @@
const path = require('path');
const glob = require('glob');
const fs = require('fs');
-const config = require('../../app/config');
+const { config } = require('../../app/config');
const markdownit = require('markdown-it');
var markdownItAttrs = require('markdown-it-attrs');
const md = markdownit({
@@ -18,34 +18,50 @@ const md = markdownit({
);
const moment = require('moment-timezone').tz.setDefault("UTC");
-const getSiteName = config.getSiteName;
+const getSiteName = () => config.siteName;
-const trimSlashes = ({path}) => {
- return path.replace(/^[\/\\]|[\/\\]$/g, '');
+const trimSlashes = (dirPath) => {
+ return dirPath.replace(/^[\/\\]|[\/\\]$/g, '');
};
+
+const getLeftMostDirectory = (directory) => {
+ if (directory.indexOf(path.sep)) {
+ return directory.substring(0, directory.indexOf(path.sep));
+ }
+ return directory;
+}
+
+const leftTrimFirstDirectory = (directory) => {
+ if (directory.indexOf(path.sep)) {
+ return directory.substring(directory.indexOf(path.sep));
+ }
+ return directory;
+}
+
const getDirectoryName = ({directory}) => {
- directory = trimSlashes({path: directory});
- let title = trimSlashes({path: directory.replace("public", "")}).replaceAll(path.sep, path.posix.sep);
- return (directory=="public") ? getSiteName() : title;
+ directory = trimSlashes(directory);
+ const leftMostDirectory = getLeftMostDirectory(directory);
+ let title = trimSlashes(leftTrimFirstDirectory(directory)).replaceAll(path.sep, path.posix.sep);
+ return (trimSlashes(directory)==leftMostDirectory) ? getSiteName() : title;
};
const getDirectoryTitle = ({directory}) => {
- directory = trimSlashes({path: directory});
- let title = trimSlashes({path: directory.replace("public", "")})
+ const leftMostDirectory = getLeftMostDirectory(directory);
+ let title = trimSlashes(leftTrimFirstDirectory(directory))
.replaceAll(path.sep, path.posix.sep)
.replaceAll('_', ' ')
.split('/')
.reverse()
.join(' - ');
- return (directory=="public") ? getSiteName() : `${title} - ${getSiteName()}`;
+ return (trimSlashes(directory)==leftMostDirectory) ? getSiteName() : `${title} - ${getSiteName()}`;
};
-const getSiteWelcomeMessage = config.getSiteWelcomeMessage;
+const getSiteWelcomeMessage = () => config.siteWelcomeMessage;
const shouldShowDirectorySeparator = ({index}) => (index > 0);
const shouldShowSiteWelcomeMessage = ({paths}) => (paths.length == 1);
const shouldOmitLinkOnLastBreadcrumb = ({paths, index}) => (index == paths.length-1);
const resolveReadmeFile = ({directory}) => {
const resolveFile = (file) => {
- const pathToFile = path.join(__dirname, "..", "..", directory, file);
+ const pathToFile = path.join(config.publicPath, trimSlashes(leftTrimFirstDirectory(directory)), file);
return fs.existsSync(pathToFile) ? pathToFile : "";
};
return (
@@ -157,18 +173,19 @@ const renderArchive = (html, paths) => {
}
module.exports = {
- trimSlashes,
- getSiteName,
- getDirectoryName,
- getDirectoryTitle,
- getSiteWelcomeMessage,
- shouldShowDirectorySeparator,
- shouldShowSiteWelcomeMessage,
- shouldOmitLinkOnLastBreadcrumb,
- directoryContainsReadme,
- printReadme,
- stripWebVTT,
- renderArchive,
- md,
- moment,
+ leftTrimFirstDirectory,
+ trimSlashes,
+ getSiteName,
+ getDirectoryName,
+ getDirectoryTitle,
+ getSiteWelcomeMessage,
+ shouldShowDirectorySeparator,
+ shouldShowSiteWelcomeMessage,
+ shouldOmitLinkOnLastBreadcrumb,
+ directoryContainsReadme,
+ printReadme,
+ stripWebVTT,
+ renderArchive,
+ md,
+ moment,
};
\ No newline at end of file
diff --git a/views/page.ejs b/views/page.ejs
index add5b040..c9b4b96e 100644
--- a/views/page.ejs
+++ b/views/page.ejs
@@ -20,8 +20,10 @@
<% } %>
<% if (h.shouldOmitLinkOnLastBreadcrumb({paths, index})) { %>
<%= (typeof fm.title !== 'undefined') ? `${fm.title}` : value %>
- <% } else { %>
-
+ <% } else if (index == 0) { %>
+ <%= h.getSiteName() %>
+ <% } else { %>
+
<%= (value == 'public' ? h.getSiteName() : value) %>
<% } %>
diff --git a/views/video-player.ejs b/views/video-player.ejs
index 9c02d16f..28dbaa31 100644
--- a/views/video-player.ejs
+++ b/views/video-player.ejs
@@ -21,8 +21,10 @@
Welcome to <%= h.getDirectoryTitle({directory}) %>
<% } else if (h.shouldOmitLinkOnLastBreadcrumb({paths, index})) { %>
<%= h.trimSlashes({path: value.name}) %>
- <% } else { %>
-
+ <% } else if (index == 0) { %>
+ <%= h.getSiteName() %>
+ <% } else { %>
+
<%= h.getDirectoryName({directory: value.name}) %>
<% } %>
diff --git a/web.config b/web.config
index d02dbde9..59865d79 100644
--- a/web.config
+++ b/web.config
@@ -27,7 +27,7 @@
-
+