diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/clipart_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/clipart_block.njk new file mode 100644 index 00000000..e7a2945c --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/clipart_block.njk @@ -0,0 +1,34 @@ +{# Clipart block template for editing/previewing #} +

+ {% if state == "editing" %} + + {% else %} +
+ {% endif %} + {% if thisblock.title %} + + + + {% endif %} + + + + + + +
+ +

{{ thisblock.title }}

+
+
+
+ +
+
+ {% if state == "editing" and (not thisblock.caption or thisblock.caption.length == 0) %} + Choose this to change the image or add an optional caption. + {% elif thisblock.caption %} + {{ thisblock.caption }} + {% endif %} +
+

diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/clipart_publish_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/clipart_publish_block.njk new file mode 100644 index 00000000..7444a740 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/clipart_publish_block.njk @@ -0,0 +1,28 @@ +{# Clipart block template for publishing #} +

+ + {% if thisblock.title %} + + + + {% endif %} + + + + + + +
+ +

{{ thisblock.title }}

+
+
+
+ +
+
+ {% if thisblock.caption %} + {{ thisblock.caption }} + {% endif %} +
+

diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/heading_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/heading_block.njk new file mode 100644 index 00000000..52fcfebd --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/heading_block.njk @@ -0,0 +1,31 @@ +{# Heading block template #} +
+

+ {% if state == "editing" %} + + {% else %} +
+ {% endif %} + + + {% if headerimgL %} + + {% endif %} + + + +
+ + + + {% if thisblock.dividerBefore == "on" %} +


+ {% endif %} + <{{ thisblock.size }}>{{ thisblock.text }} + {% if thisblock.dividerAfter == "on" %} +


+ {% endif %} +
+
+

+
diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/link_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/link_block.njk new file mode 100644 index 00000000..36bf3095 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/link_block.njk @@ -0,0 +1,52 @@ +{# Link block template #} +
+ {% if state == "editing" %} + + {% else %} +
+ {% endif %} + + + + + + + + {% for item in thisblock.items %} + + {% if listcol1 %} + {% if loop.index0 % 2 == 0 %} + + + {% endfor %} + +
+ +

{{ thisblock.title }}

+
+
+ +
+ {% else %} + {% if listcol2 %} + + {% else %} + + {% endif %} + {% endif %} + {% else %} + + {% endif %} + +
+
diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/list_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/list_block.njk new file mode 100644 index 00000000..98f8bfb5 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/list_block.njk @@ -0,0 +1,44 @@ +{# List block template #} +
+ {% if state == "editing" %} + + {% else %} +
+ {% endif %} + + + + + + + + {% for item in thisblock.items %} + + {% if listcol1 %} + {% if loop.index0 % 2 == 0 %} + + + {% endfor %} + +
+ +

{{ thisblock.title }}

+
+
+ +
+ {% else %} + {% if listcol2 %} + + {% else %} + + {% endif %} + {% endif %} + {% else %} + + {% endif %} +
    +
  • {{ item }}
  • +
+
+
diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/snapshot_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/snapshot_block.njk new file mode 100644 index 00000000..a6af1464 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/snapshot_block.njk @@ -0,0 +1,46 @@ +{# Snapshot/Scrapbook block template for editing/previewing #} + + + {% if state == "editing" %} + + {% else %} +
+ {% endif %} + + + + + + {% endif %} + + + + + + + + + + +
+
+ {% if thisblock.title %} +
+ +

{{ thisblock.title }}

+
+
+
+ +
+
+ {% if state == "editing" and (not thisblock.caption or thisblock.caption.length == 0) %} + Choose this to change the image or add an optional caption. + {% elif thisblock.caption %} + {{ thisblock.caption }} + {% endif %} +
+
+
+

+

 

diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/snapshot_publish_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/snapshot_publish_block.njk new file mode 100644 index 00000000..57fbf231 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/snapshot_publish_block.njk @@ -0,0 +1,28 @@ +{# Snapshot block template for publishing #} +

+ + {% if thisblock.title %} + + + + {% endif %} + + + + + + +
+ +

{{ thisblock.title }}

+
+
+
+ +
+
+ {% if thisblock.caption %} + {{ thisblock.caption }} + {% endif %} +
+

diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/text_block.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/text_block.njk new file mode 100644 index 00000000..522bcf30 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/blocks/text_block.njk @@ -0,0 +1,25 @@ +{# Text block template #} +{% if state == "editing" %} + +{% else %} +
+{% endif %} + + + + + +
+ +

{{ thisblock.title }}

+
+ {% if thisblock.caption %} +

+ + {% if thisblock.style %}<{{ thisblock.style }}>{% endif %} + {{ thisblock.caption }} + {% if thisblock.style %}{% endif %} + +

+ {% endif %} +
diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/common_footer.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/common_footer.njk new file mode 100644 index 00000000..2d66944a --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/common_footer.njk @@ -0,0 +1,25 @@ + + +
+ + + + + + + + +
+ +Powered by {{ service_name }} +
+ + + + + + + + + +
\ No newline at end of file diff --git a/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/pagination_footer.njk b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/pagination_footer.njk new file mode 100644 index 00000000..61016362 --- /dev/null +++ b/zefie_wtvp_minisrv/includes/ServiceDeps/wtv-author/pagination_footer.njk @@ -0,0 +1,140 @@ +{# Pagination footer template for WTV Author pages #} +{% if state != "editing" %} + {% if page == 1 and pagedata.pagebreaks.length != 0 %} + + +
+ + + + + + + + + +
+ + + Powered by {{ service_name }} + + +
+ + + + + next page + + + + + + +
+ + + {% elif page != 1 and pagedata.pagebreaks.length + 1 == page %} + + +
+ + + + + + + previous page + + + + +
+ + + Powered by {{ service_name }} + + +
+ + + + + + + + + +
+ + + {% elif page != 1 and pagedata.pagebreaks.length + 1 > page %} + + +
+ + + + + + + previous page + + + + +
+ + + Powered by {{ service_name }} + + +
+ + + + + next page + + + + + + +
+ + + {% else %} + + +
+ + + + + + + + + +
+ + + Powered by {{ service_name }} + + +
+ + + + + + + + + +
+ + + {% endif %} +{% endif %} diff --git a/zefie_wtvp_minisrv/includes/classes/WTVAuthor.js b/zefie_wtvp_minisrv/includes/classes/WTVAuthor.js index 02e08846..1efa66f2 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVAuthor.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVAuthor.js @@ -31,12 +31,15 @@ class WTVAuthor { headerimgLwidth = null; afterblock1 = null; debug = require('debug')('WTVAuthor') + nunjucks = null; constructor(minisrv_config, wtvclient) { if (!minisrv_config) throw ("minisrv_config required"); if (!wtvclient) throw ("WTVClientSessionData required"); - var WTVShared = require('./WTVShared.js')['WTVShared']; - var WTVMime = require('./WTVMime.js'); + const WTVShared = require('./WTVShared.js')['WTVShared']; + const nunjucks = require('nunjucks'); + this.nunjucks = nunjucks; + const WTVMime = require('./WTVMime.js'); this.minisrv_config = minisrv_config; this.wtvshared = new WTVShared(minisrv_config); this.wtvmime = new WTVMime(minisrv_config); @@ -161,341 +164,128 @@ class WTVAuthor { } generateBlock(number, page, state) { - var block; - var pagedata = this.loadPage(page) - var thisblock = pagedata.blocks[number] - var type = thisblock.type - var numofblocks = pagedata.blocks.length - // Generate HTML for each type of block + const pagedata = this.loadPage(page); + const thisblock = pagedata.blocks[number]; + const type = thisblock.type; + const numofblocks = pagedata.blocks.length; + + // Configure nunjucks with custom filters + const env = this.nunjucks.configure({ autoescape: false }); + env.addFilter('base64_decode', function(str) { + return Buffer.from(str, 'base64').toString(); + }); + + const templateData = { + state: state, + page: page, + number: number, + thisblock: thisblock, + numofblocks: numofblocks, + headcol: this.headcol, + text_color: this.text, + headerimgL: this.headerimgL, + headerimgLwidth: this.headerimgLwidth, + headerimgLheight: this.headerimgLheight, + listcol1: this.listcol1, + listcol2: this.listcol2 + }; + + let templatePath; + let block = ""; + switch(type) { case "text": - if (state == "editing") { - block = `` - } else { - block = `
` - } - block += `
` - - block += "" + thisblock.title + "" - - if (thisblock.caption) - block += "

" - else - block += ">" - - if (thisblock.style) - block += "<" + thisblock.style + ">" - - block += thisblock.caption + "

" - - if (thisblock.style) - block += "" - - block += "
" + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/text_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); break; case "snapshot": case "scrapbook": if (state == "publishing") { - block = this.generatePublishImageBlock(number, page) - break; + block = this.generatePublishImageBlock(number, page); } else { - block = `` - if (state == "editing") { - block += `` - } else { - block += `
` - } - block += ` - - -` - block += ` - - - - - -
-
` - if (thisblock.title) - block += `
- -

-${thisblock.title} -

-
-
` - - block += `
- -
-
` - if (state == "editing" && thisblock.caption == null || state == "editing" && thisblock.caption.length == 0) - block += "Choose this to change the image or add an optional caption." - else if (thisblock.caption != null) - block += `${thisblock.caption}` -block += `
-

-

 

` - break; + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/snapshot_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); } + break; case "clipart": if (state == "publishing") { - block = this.generatePublishImageBlock(number, page) - break; + block = this.generatePublishImageBlock(number, page); } else { - block = `

` - if (state == "editing") - block += `` - else - block += `
` - if (thisblock.title) - block += ` - -` - block += `` - if (state == "editing") - block += ` - - - - -
- -

-${thisblock.title} -

-
-
` - else - block += "" - - block += `
- -
-
` - if (state == "editing" && thisblock.caption == null || state == "editing" && thisblock.caption.length == 0) - block += "Choose this to change the image or add an optional caption." - else if (thisblock.caption != null) - block += `${thisblock.caption}` -block += ` -
-

` - break; + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/clipart_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); } + break; case "heading": - - block = `
-

` - if (state == "editing") - block += `` - else - block += `
` - - block += `` - if (this.headerimgL) { - block += `` - } - block += ` - - - -
` - if (thisblock.dividerBefore == "on") - block += `

-
-

` - -block += `<${thisblock.size}>${thisblock.text}` -if (thisblock.dividerAfter == "on") - block += `

-
-

` - -block += `

-
` - break; + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/heading_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); + break; case "list": - - block = `
` - if (state == "editing") - block += `` - else - block += `
` - - block += `` - for (let i = 0; i < thisblock.items.length; i++) { - block += `` - if (this.listcol1 != null) { - if(i % 2 == 0) { - block += ` -` -} - -block += ` -
- -

-${thisblock.title} -

-
-
` - } else { - if (this.listcol2 != null) { - block += `` - } else { - block += `` - } - } - } else { - block += `` - } -block += `
    -
  • -${thisblock.items[i]} -
  • -
-
-
` - break; + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/list_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); + break; case "link": + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/link_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); + break; - block = `
` - if (state == "editing") - block += `` - else - block += `
` - - block += `` - for (let i = 0; i < thisblock.items.length; i++) { - block += `` - if (this.listcol1 != null) { - if(i % 2 == 0) { - block += ` -` -} - -block += `
- -

-${thisblock.title} -

-
-
` - } else { - if (this.listcol2 != null) { - block += `` - } else { - block += `` - } - } - } else { - block += `` - } -block += ` -
-
` - break; default: - block = "" - break; + block = ""; + break; } + return block; } // Separate function for generating image blocks when publishing because there is no possibly better way to do this generatePublishImageBlock(number, page) { - var block; - var destDir = this.getPublishDir(); - var pagedata = this.loadPage(page) - var thisblock = pagedata.blocks[number] - var type = thisblock.type - var numofblocks = pagedata.blocks.length - switch(type) { - - case "snapshot": - block = `

` - if (thisblock.title) - block += ` - -` - block += ` - - - - - -
- -

-${thisblock.title} -

-
-
` - - block += `
- -
-
` - if (thisblock.caption != null) - block += `${thisblock.caption}` -block += ` -
-

` -this.fs.writeFile(destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + '/media/captureA' + number + '.jpg', new Buffer.from(thisblock.photo, 'base64'), err => { - if (err) { - console.error(err); - } - // file written successfully + const destDir = this.getPublishDir(); + const pagedata = this.loadPage(page); + const thisblock = pagedata.blocks[number]; + const type = thisblock.type; + + // Configure nunjucks with custom filters + const env = this.nunjucks.configure({ autoescape: false }); + env.addFilter('base64_decode', function(str) { + return Buffer.from(str, 'base64').toString(); }); - break; + + const templateData = { + number: number, + thisblock: thisblock, + headcol: this.headcol + }; + + let block = ""; + let templatePath; + + switch(type) { + case "snapshot": + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/snapshot_publish_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); + + // Write the image file + this.fs.writeFile(destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + '/media/captureA' + number + '.jpg', new Buffer.from(thisblock.photo, 'base64'), err => { + if (err) { + console.error(err); + } + // file written successfully + }); + break; case "clipart": - this.fs.mkdirSync(destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + atob(thisblock.photo).slice(0, atob(thisblock.photo).lastIndexOf("/")), { recursive: true }) - this.fs.copyFile('includes/ServiceVault/wtv-author/' + atob(thisblock.photo), destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + atob(thisblock.photo), (err) => { - if (err) throw err; + // Create directory and copy file + this.fs.mkdirSync(destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + Buffer.from(thisblock.photo, 'base64').toString().slice(0, Buffer.from(thisblock.photo, 'base64').toString().lastIndexOf("/")), { recursive: true }); + this.fs.copyFile('includes/ServiceVault/wtv-author/' + Buffer.from(thisblock.photo, 'base64').toString(), destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + Buffer.from(thisblock.photo, 'base64').toString(), (err) => { + if (err) throw err; }); - block = `

` - if (thisblock.title) - block += ` - -` - block += ` - - - - -
- -

-${thisblock.title} -

-
-
- -
-
` - if (thisblock.caption != null) - block += `${thisblock.caption}` -block += ` -
-

` - break; + + templatePath = this.wtvshared.getServiceDep('wtv-author/blocks/clipart_publish_block.njk', true); + block = this.nunjucks.render(templatePath, templateData); + break; } return block; } @@ -542,146 +332,7 @@ block += ` } html += this.footerstart // Add the footer if we're not in edit mode - if (state != "editing") - if (page == 1 && pagedata.pagebreaks.length != 0) { - html += ` - -
- - - - - - - - -
- -Powered by ${this.minisrv_config.config.service_name} -
- - - - -next page - - - - - -
` - } else if (page != 1 && pagedata.pagebreaks.length + 1 == parseInt(page)) { - html += ` - -
- - - - - - -previous page - - -
- -Powered by ${this.minisrv_config.config.service_name} -
- - - - - - - - - -
` - } else if (page != 1 && pagedata.pagebreaks.length + 1 > parseInt(page)) { - html += ` - -
- - - - - - -previous page - - -
- -Powered by ${this.minisrv_config.config.service_name} -
- - - - -next page - - - - - -
` - } else { - html += ` - -
- - - - - - - - -
- -Powered by ${this.minisrv_config.config.service_name} -
- - - - - - - - - -
` - } + html += this.getPaginationFooter(state, pagedata, page, pagenum) html += this.footerend return html; } @@ -966,7 +617,7 @@ vspace=0 const page_file_out = page_file[pagenum] this.unpublishPage(pagenum); - if (typeof page_file_out === 'undefined') { + if (typeof page_file_out !== 'undefined') { this.fs.unlinkSync(this.pagestore_dir + page_file_out, { recursive: true }); } } @@ -985,34 +636,26 @@ vspace=0 // these totally couldn't have been made into one function nah that's impossible createTextBlock(pagenum, title, caption, size, style, position) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var newblock = { - "type": "text", - "title": title, - "caption": caption, - "size": size, - "style": style - } + const newblock = { + "type": "text", + "title": title, + "caption": caption, + "size": size, + "style": style + } - var blocks = pagedata.blocks + const blocks = pagedata.blocks blocks.splice(position, 0, newblock); this.editPage(pagedata, pagenum); return true; } editTextBlock(pagenum, title, caption, size, style, position, oldposition) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - - var newblock = { - "type": "text", - "title": title, - "caption": caption, - "size": size, - "style": style - } pagedata.blocks[oldposition].title = title pagedata.blocks[oldposition].caption = caption @@ -1027,18 +670,18 @@ vspace=0 } createPhotoBlock(pagenum, photo, type) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var base64photo = new Buffer.from(photo).toString('base64') + const base64photo = new Buffer.from(photo).toString('base64') - var newblock = { - "type": type, - "title": null, - "caption": null, - "photo": base64photo - } + const newblock = { + "type": type, + "title": null, + "caption": null, + "photo": base64photo + } - var blocks = pagedata.blocks + const blocks = pagedata.blocks blocks.push(newblock); this.editPage(pagedata, pagenum); return true; @@ -1046,13 +689,13 @@ vspace=0 editPhotoBlock(pagenum, oldposition, position, photo, type, title, caption) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var blocks = pagedata.blocks + const blocks = pagedata.blocks if (photo != null) { - var base64photo = new Buffer.from(photo).toString('base64') + const base64photo = new Buffer.from(photo).toString('base64') blocks[oldposition].photo = base64photo } @@ -1075,18 +718,18 @@ vspace=0 } createHeaderBlock(pagenum, text, size, dividerBefore, dividerAfter, position) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var newblock = { - "type": "heading", - "text": text, - "size": size, - "dividerBefore": dividerBefore, - "dividerAfter": dividerAfter - } + const newblock = { + "type": "heading", + "text": text, + "size": size, + "dividerBefore": dividerBefore, + "dividerAfter": dividerAfter + } - var blocks = pagedata.blocks + const blocks = pagedata.blocks blocks.splice(position, 0, newblock); this.editPage(pagedata, pagenum); return true; @@ -1094,16 +737,8 @@ vspace=0 editHeaderBlock(pagenum, text, size, dividerBefore, dividerAfter, position, oldposition) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - - var newblock = { - "type": "heading", - "text": text, - "size": size, - "dividerBefore": dividerBefore, - "dividerAfter": dividerAfter - } pagedata.blocks[oldposition].text = text pagedata.blocks[oldposition].size = size @@ -1118,16 +753,16 @@ vspace=0 } createListBlock(pagenum, title, items, position) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var newblock = { - "type": "list", - "title": title, - "items": items - } + const newblock = { + "type": "list", + "title": title, + "items": items + } - var blocks = pagedata.blocks + const blocks = pagedata.blocks blocks.splice(position, 0, newblock); this.editPage(pagedata, pagenum); return true; @@ -1135,14 +770,8 @@ vspace=0 editListBlock(pagenum, title, items, position, oldposition) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - - var newblock = { - "type": "list", - "title": title, - "items": items - } pagedata.blocks[oldposition].title = title pagedata.blocks[oldposition].items = items @@ -1155,33 +784,33 @@ vspace=0 } createLinkBlock(pagenum, title, listItems, linkItems, position) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var items = []; + const items = []; loop: for (let i = 0; i < linkItems.length; i++) { - var url = linkItems[i] - var name = listItems[i] - + const url = linkItems[i] + const name = listItems[i] + if (url == "http://") { continue loop; } else { - var subblock = { - "name": name, - "url": url + const subblock = { + "name": name, + "url": url } items.push(subblock) } } - var newblock = { - "type": "link", - "title": title, - "items": items - } + const newblock = { + "type": "link", + "title": title, + "items": items + } - var blocks = pagedata.blocks + const blocks = pagedata.blocks blocks.splice(position, 0, newblock); this.editPage(pagedata, pagenum); return true; @@ -1189,21 +818,21 @@ vspace=0 editLinkBlock(pagenum, title, listItems, linkItems, position, oldposition) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var items = []; + const items = []; loop: for (let i = 0; i < linkItems.length; i++) { - var url = linkItems[i] - var name = listItems[i] + const url = linkItems[i] + const name = listItems[i] if (url == "http://") { continue loop; } else { - var subblock = { - "name": name, - "url": url + const subblock = { + "name": name, + "url": url } items.push(subblock) } @@ -1220,14 +849,14 @@ vspace=0 } createBreakBlock(pagenum, position) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; - var newblock = { - "type": "break" - } + const newblock = { + "type": "break" + } - var blocks = pagedata.blocks + const blocks = pagedata.blocks blocks.splice(position, 0, newblock); this.editPage(pagedata, pagenum); this.generateBreakList(pagenum); @@ -1235,7 +864,7 @@ vspace=0 } editBreakBlock(pagenum, position, oldposition) { - var pagedata = this.loadPage(pagenum); + const pagedata = this.loadPage(pagenum); if (!pagedata) return false; if (oldposition != position) @@ -1247,10 +876,10 @@ vspace=0 } generateBreakList(pagenum) { - var pagedata = this.loadPage(pagenum) - var breaks = []; + const pagedata = this.loadPage(pagenum) + const breaks = []; for (let i = 0; i < pagedata.blocks.length; i++) { - var type = pagedata.blocks[i].type + const type = pagedata.blocks[i].type if (type == "break") breaks.push(i) } @@ -1259,31 +888,25 @@ vspace=0 } getCommonFooter() { - return ` - -
- - - - - - - - -
- -Powered by ${this.minisrv_config.config.service_name} -
- - - - - - - - - -
`; + const template = this.wtvshared.getServiceDep('wtv-author/common_footer.njk', true); + this.nunjucks.configure({ autoescape: true }); + return this.nunjucks.render(template, { + powered_by: this.getPoweredBy(), + service_name: this.minisrv_config.config.service_name + }); } + + getPaginationFooter(state, pagedata, page, pagenum) { + const template = this.wtvshared.getServiceDep('wtv-author/pagination_footer.njk', true); + this.nunjucks.configure({ autoescape: false }); + return this.nunjucks.render(template, { + state: state, + pagedata: pagedata, + page: parseInt(page), + pagenum: pagenum, + powered_by: this.getPoweredBy(), + service_name: this.minisrv_config.config.service_name + }); + } } module.exports = WTVAuthor; \ No newline at end of file