X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=src%2Ftemplate%2Ftemplate-helper.js;h=5850fc1256604c955fdf973931b0e93ed97d2734;hb=3ca7fccb306d0b23626befc3791ffa360b3db1e7;hp=23b0f12b37f84c6700fe9edd9f9b5851c014a225;hpb=43898cdd317a127bc45e8b3cb2f160df386760a1;p=websub-hub diff --git a/src/template/template-helper.js b/src/template/template-helper.js index 23b0f12..5850fc1 100644 --- a/src/template/template-helper.js +++ b/src/template/template-helper.js @@ -5,10 +5,10 @@ const { Message } = require('../enum'); /** * Render a topic as a row of details. - * @param {Object} topic - * @param {Object[]} subscribers - * @param {Boolean} detailsLink - * @returns {String} + * @param {object} topic topic + * @param {object[]} subscribers subscribers + * @param {boolean} detailsLink link to details + * @returns {string} html */ function renderTopicRow(topic, subscribers, detailsLink = true) { if (!topic) { @@ -38,7 +38,7 @@ function renderTopicRow(topic, subscribers, detailsLink = true) { /** * Render the header row for topic details. - * @returns {String} + * @returns {string} html */ function renderTopicRowHeader() { return ` @@ -63,8 +63,8 @@ function renderTopicRowHeader() { /** * Render a subscription as a row of details. - * @param {Object} subscription - * @returns {String} + * @param {object} subscription subscription + * @returns {string} html */ function renderSubscriptionRow(subscription) { if (!subscription) { @@ -91,7 +91,7 @@ function renderSubscriptionRow(subscription) { /** * Render a row of headers for subscription details. - * @returns {String} + * @returns {string} html */ function renderSubscriptionRowHeader() { return ` @@ -114,7 +114,8 @@ function renderSubscriptionRowHeader() { /** * Escape some xml things in strings. - * @param {String} string + * @param {string} string string to escape + * @returns {string} escaped */ function xmlEscape(string) { if (typeof string === 'number') { @@ -133,10 +134,33 @@ function xmlEscape(string) { }[c])); } + +/** + * Add common site links to navigation header. + * @param {number} pagePathLevel depth from root + * @param {object} ctx context + * @param {object} options options + */ +function navLinks(pagePathLevel, ctx, options) { + if (!options.navLinks) { + options.navLinks = []; + } + const rootPath = '../'.repeat(pagePathLevel); + + if (options.pageIdentifier !== 'admin') { + options.navLinks.push({ + text: 'Admin', + href: `${rootPath}admin/`, + }); + } +} + + module.exports = Object.assign(Object.create(TemplateHelper), { + navLinks, xmlEscape, renderTopicRowHeader, renderTopicRow, renderSubscriptionRowHeader, renderSubscriptionRow, -}); \ No newline at end of file +});