X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftemplate%2Ftemplate-helper.js;h=2da05dfb928007fa1f080bb35c7ab4770262d9f2;hb=e23bda592175ae5ed772f366069ccfd2f60e1f70;hp=3fd371035d0ab4989bcfbf771839f5d6431a5f11;hpb=8f63eeebd08491cdc82e12f178dc500f6d19d65c;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
+});