allow customizing html footer via config
authorJustin Wind <justin.wind+git@gmail.com>
Mon, 16 Aug 2021 20:29:39 +0000 (13:29 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Mon, 16 Aug 2021 21:52:01 +0000 (14:52 -0700)
CHANGELOG.md
config/default.js
src/template/admin-overview-html.js
src/template/admin-topic-details-html.js
src/template/root-html.js
src/template/template-helper.js

index 05ed31dd2cb52ca7cc1be1a74af526f0bf5117ff..759570c88e83f3580b5c4de523c588033b27192d 100644 (file)
@@ -8,6 +8,10 @@ Releases and notable changes to this project are documented here.
 
 - Prevent task processor from being re-invoked if it is already running.
 
+### Added
+
+- Allow more configuration of html page content.
+
 ## [v1.1.3] - 2021-08-13
 
 ### Fixed
index 1905315cec7a1b69eb0e962513923745ff05db64..70837b1c34aa3fa5bdec4d8804df22ed50576847 100644 (file)
@@ -44,6 +44,10 @@ const defaultOptions = {
 
   manager: {
     pageTitle: packageName, // title on html pages
+    footerEntries: [ // common footers on all html pages
+      '<a href="https://git.squeep.com/?p=websub-hub;a=tree">Development Repository</a> / <a href="https://github.com/thylacine/websub-hub/">GitHub mirror</a>',
+      '&copy;<time datetime="2021">&#8559;&#8559;&#8553;&#8553;&#8544;</time>',
+    ],
     strictSecrets: false, // If true, reject requests with secrets but not over https
     publicHub: true, // Accept publish requests as new topics.
     processImmediately: true, // If true, immediately attempt to process requests when accepted.
index b86f7af600e741e25805a89923f2a898d1127161..3d4f62c22e1c000e5e6714345f3e2184dc20ede7 100644 (file)
@@ -15,6 +15,7 @@ module.exports = (ctx, options) => {
   const pageTitle = `${options.manager.pageTitle} - Topics`;
   const headElements = [];
   const navLinks = [];
+  const footerEntries = options.manager.footerEntries;
   if (!ctx.topics) {
     ctx.topics = [];
   }
@@ -30,5 +31,5 @@ module.exports = (ctx, options) => {
     `        </tbody>
         </table>
       </section>`,
-  ]);
+  ], footerEntries);
 };
\ No newline at end of file
index 448de09efdb369a346deff79cffbaa5f307c11c7..df13f210f7af70c2686b3955ee3d744f4b2b43db 100644 (file)
@@ -21,6 +21,7 @@ module.exports = (ctx, options) => {
       text: '&uarr; All Topics',
     },
   ];
+  const footerEntries = options.manager.footerEntries;
   if (!ctx.subscriptions) {
     ctx.subscriptions = [];
   }
@@ -46,5 +47,5 @@ module.exports = (ctx, options) => {
     `          </tbody>
         </table>
       </section>`,
-  ]);
+  ], footerEntries);
 };
\ No newline at end of file
index d1939b84cd6bb690c07c0c65cd5cd7bbab6dd9c7..c68d52a33313810d581029eb2fabf456429a4a54 100644 (file)
@@ -120,12 +120,15 @@ module.exports = (ctx, options) => {
   const pageTitle = options.manager.pageTitle;
   const isPublicHub = options.manager.publicHub;
   const contactHTML = options.adminContactHTML;
+  const footerEntries = options.manager.footerEntries;
   const hubURL = options.dingus.selfBaseUrl || '<s>https://hub.example.com/</s>';
   const headElements = [];
   const navLinks = [];
-  return th.htmlTemplate(1, pageTitle, headElements, navLinks, [
+  const mainContent = [
     aboutSection(),
     usageSection(isPublicHub, hubURL),
     contactSection(contactHTML),
-  ]);
+  ];
+  return th.htmlTemplate(1, pageTitle, headElements, navLinks, mainContent, footerEntries,
+  );
 };
\ No newline at end of file
index d3962f99f263a07c485501236d0b1b3c3797848d..f36829d7bd1f9bd0eeb7adfe9daf956babce954f 100644 (file)
@@ -221,22 +221,16 @@ function htmlHeader(pageTitle, navLinks = []) {
 
 /**
  * Close the main section and finish off with boilerplate.
+ * @param {String[]} footerEntries
  * @returns {String}
  */
-function htmlFooter() {
+function htmlFooter(footerEntries = []) {
   return `    </main>
-    <footer>
-      <ol>
-        <li>
-          <a href="https://git.squeep.com/?p=websub-hub;a=tree">Development Repository</a> / <a href="https://github.com/thylacine/websub-hub/">GitHub mirror</a>
-        </li>
-        <li>
-          <a href="https://squeep.com/">A Squeep Infrastructure Component</a>
-        </li>
-        <li>
-          &copy;<time datetime="2021">&#8559;&#8559;&#8553;&#8553;&#8544;</time>
-        </li>
-      </ol>
+    <footer>` +
+    (footerEntries.length ? `
+      <ol>` + footerEntries.map((f) => `        <li>${f}</li>`).join('\n') + `
+      </ol>`
+      : '') + `
     </footer>`;
 }
 
@@ -248,14 +242,15 @@ function htmlFooter() {
  * @param {String[]} headElements
  * @param {Object[]} navLinks
  * @param {String[]} main
+ * @param {String[]} footerEntries
  * @returns {String}
  */
-function htmlTemplate(pagePathLevel, pageTitle, headElements = [], navLinks = [], main = []) {
+function htmlTemplate(pagePathLevel, pageTitle, headElements = [], navLinks = [], main = [], footerEntries = []) {
   return [
     htmlHead(pagePathLevel, pageTitle, headElements),
     htmlHeader(pageTitle, navLinks),
     ...main,
-    htmlFooter(),
+    htmlFooter(footerEntries),
     htmlTail(),
   ].join('\n');
 }