diff --git a/app/assets/favicon-16x16.png b/app/assets/favicon-16x16.png
new file mode 100644
index 0000000..ded1b70
Binary files /dev/null and b/app/assets/favicon-16x16.png differ
diff --git a/app/assets/favicon-32x32.png b/app/assets/favicon-32x32.png
new file mode 100644
index 0000000..f72210c
Binary files /dev/null and b/app/assets/favicon-32x32.png differ
diff --git a/app/assets/favicon.ico b/app/assets/favicon.ico
index f3c5f63..dd179b8 100644
Binary files a/app/assets/favicon.ico and b/app/assets/favicon.ico differ
diff --git a/app/controllers/Export.controller.js b/app/controllers/Export.controller.js
index b2bf1ef..43c501c 100644
--- a/app/controllers/Export.controller.js
+++ b/app/controllers/Export.controller.js
@@ -11,7 +11,7 @@ const path = require('path');
*/
class Export extends Controller {
static get services() {
- return [...super.services, 'models']
+ return [...super.services, 'models', 'app']
}
/*
* Serve the main page.
@@ -40,11 +40,12 @@ class Export extends Controller {
const temp_dir = path.resolve(os.tmpdir(), uuid())
await fs.mkdir(temp_dir)
- this._markdown_recurse(page0, temp_dir)
+ await this._markdown_recurse(page0, temp_dir)
/* Archive directory */
const exec = require('child_process').exec;
- exec('zip -r ' + path.resolve(temp_dir, 'archive.zip') + ' ' + path.resolve(temp_dir), (error) => {
+ console.log('zip -9jpr ' + path.resolve(temp_dir, '../archive.zip') + ' ' + path.resolve(temp_dir) + '/')
+ exec('cd ' + path.resolve(temp_dir) + '; zip -r archive.zip *', (error) => {
if (error) {
console.error(`exec error: ${error}`);
return res.error(500);
@@ -56,16 +57,17 @@ class Export extends Controller {
}
async _markdown_recurse(root, temp_dir) { //recursive function for creating directory and generating markdown pages
- console.log('root', root)
+ const fs = require('fs').promises
const Page = this.models.get('api:Page')
const child = await Page.find({ UUID: { $in: root.ChildPageIds } })
-
for (const page of child) {
- const markdown = this._generate_markdown(page)
+ const markdown = await this._generate_markdown(page)
+ await fs.writeFile(path.resolve(temp_dir, page.Name.replace(/\s/g, '_')) + '.md', markdown)
if (page.ChildPageIds && page.ChildPageIds.length) {
const sub_temp_dir = path.resolve(temp_dir, page.Name.replace(/\s/g, '_'))
+ // console.log(sub_temp_dir)
await fs.mkdir(sub_temp_dir)
- this._markdown_recurse(page, sub_temp_dir)
+ await this._markdown_recurse(page, sub_temp_dir)
}
}
}
@@ -91,16 +93,19 @@ class Export extends Controller {
const html_name = page.Name.replace(/\s/g, '_') + '.html'
mapping[page.UUID] = html_name
}
- const sidebar_html = this._generate_sidebar(page0) //generates the sidebar contents
-
+ console.log(page0)
+ const sidebar_html = await this._generate_sidebar(mapping, page0) //generates the sidebar contents
+
const temp_dir = path.resolve(os.tmpdir(), uuid()) //make temporary directory
await fs.mkdir(temp_dir)
-
/* Generates html files from template */
- for(const page of pages) {
+ for (const page of pages) {
const fs = require('fs').promises
- const contents = await fs.readFile('../assets/export-template.html')
- const content_html = this._generate_html(page)
+ const contents = (await fs.readFile(path.resolve(this.app.directories.assets, 'export-template.html'))).toString('utf8')
+ console.log(page)
+ //console.log({contents})
+ const content_html = await this._generate_html(page)
+ //console.log({content_html, sidebar_html})
const page_html = contents.replace('%%SIDEBAR%%', sidebar_html).replace('%%CONTENTS%%', content_html)
await fs.writeFile(path.resolve(temp_dir, mapping[page.UUID]), page_html)
}
@@ -112,18 +117,21 @@ class Export extends Controller {
return res.error(500);
return;
}
-
return res.sendFile(`${path.resolve(temp_dir, 'archive.zip')}`)
})
}
- async _generate_sidebar(root) { //generate sidebar from mapping array and root
- if (root.ChildPageIds < 1) {
- return '' + root.Name + ''
+ async _generate_sidebar(mapping, upper_node) { //generate sidebar from mapping array and upper_node
+ const Page = this.models.get('api:Page')
+ console.log(upper_node)
+ console.log(upper_node.ChildPageIds == 'undefined')
+ if (upper_node.ChildPageIds == 'undefined') {
+ return '' + upper_node.Name + ''
} else {
let base = '