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 = '