X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=src%2Ftemplate%2Ftemplate-helper.js;h=2da05dfb928007fa1f080bb35c7ab4770262d9f2;hb=b806715f9288323cce7b0ab437ee78b01d26c548;hp=3fd371035d0ab4989bcfbf771839f5d6431a5f11;hpb=e3bce15e1777f5d7b03b7ba15444ca4335ec9bde;p=websub-hub diff --git a/src/template/template-helper.js b/src/template/template-helper.js index 3fd3710..2da05df 100644 --- a/src/template/template-helper.js +++ b/src/template/template-helper.js @@ -1,13 +1,14 @@ 'use strict'; const { TemplateHelper } = require('@squeep/html-template-helper'); +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) { @@ -18,17 +19,17 @@ function renderTopicRow(topic, subscribers, detailsLink = true) { return ` ${detailsLink ? '' : ''}${topic.url}${detailsLink ? '' : ''} ${subscribers.length} - ${TemplateHelper.dateFormat(topic.created, 'End of Time', 'Beginning of Time', 'Unknown')} + ${TemplateHelper.dateFormat(topic.created, Message.EndOfTime, Message.BeginningOfTime, Message.Unknown)} ${TemplateHelper.secondsToPeriod(topic.leaseSecondsPreferred)} ${TemplateHelper.secondsToPeriod(topic.leaseSecondsMin)} ${TemplateHelper.secondsToPeriod(topic.leaseSecondsMax)} ${topic.publisherValidationUrl ? topic.publisherValidationUrl : 'None'} ${topic.isActive} ${topic.isDeleted} - ${TemplateHelper.dateFormat(topic.lastPublish, 'End of Time', 'Never', 'Never')} - ${TemplateHelper.dateFormat(topic.contentFetchNextAttempt, 'Next Publish', 'Pending', 'Next Publish')} + ${TemplateHelper.dateFormat(topic.lastPublish, Message.EndOfTime, Message.Never, Message.Never)} + ${TemplateHelper.dateFormat(topic.contentFetchNextAttempt, Message.NextPublish, Message.Pending, Message.NextPublish)} ${topic.contentFetchAttemptsSinceSuccess} - ${TemplateHelper.dateFormat(topic.contentUpdated, 'End of Time', 'Never', 'Never')} + ${TemplateHelper.dateFormat(topic.contentUpdated, Message.EndOfTime, Message.Never, Message.Never)} ${topic.contentType} ${topic.id} `; @@ -37,7 +38,7 @@ function renderTopicRow(topic, subscribers, detailsLink = true) { /** * Render the header row for topic details. - * @returns {String} + * @returns {string} html */ function renderTopicRowHeader() { return ` @@ -62,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) { @@ -72,17 +73,17 @@ function renderSubscriptionRow(subscription) { `; } return ` - ${subscription.callback} - ${TemplateHelper.dateFormat(subscription.created, 'End of Time', 'Beginning of Time', 'Unknown')} - ${TemplateHelper.dateFormat(subscription.verified, 'End of Time', 'Never', 'Never')} - ${TemplateHelper.dateFormat(subscription.expires, 'Never', 'Beginning of Time', 'Never')} + ${subscription.callback} + ${TemplateHelper.dateFormat(subscription.created, Message.EndOfTime, Message.BeginningOfTime, Message.Unknown)} + ${TemplateHelper.dateFormat(subscription.verified, Message.EndOfTime, Message.Never, Message.Never)} + ${TemplateHelper.dateFormat(subscription.expires, Message.Never, Message.BeginningOfTime, Message.Never)} ${!!subscription.secret} ${subscription.signatureAlgorithm} ${subscription.httpRemoteAddr} ${subscription.httpFrom} - ${TemplateHelper.dateFormat(subscription.contentDelivered, 'End of Time', 'Never', 'Never')} + ${TemplateHelper.dateFormat(subscription.contentDelivered, Message.EndOfTime, Message.Never, Message.Never)} ${subscription.deliveryAttemptsSinceSuccess} - ${TemplateHelper.dateFormat(subscription.deliveryNextAttempt, 'End of Time', 'Next Publish', 'Next Publish')} + ${TemplateHelper.dateFormat(subscription.deliveryNextAttempt, Message.EndOfTime, Message.NextPublish, Message.NextPublish)} ${subscription.id} `; } @@ -90,7 +91,7 @@ function renderSubscriptionRow(subscription) { /** * Render a row of headers for subscription details. - * @returns {String} + * @returns {string} html */ function renderSubscriptionRowHeader() { return ` @@ -113,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') { @@ -132,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 +});