diff --git a/CliClient/app/app-gui.js b/CliClient/app/app-gui.js index ec166e7749..f11b43eaf8 100644 --- a/CliClient/app/app-gui.js +++ b/CliClient/app/app-gui.js @@ -1,5 +1,6 @@ const { Logger } = require('lib/logger.js'); const Folder = require('lib/models/Folder.js'); +const BaseItem = require('lib/models/BaseItem.js'); const Tag = require('lib/models/Tag.js'); const BaseModel = require('lib/BaseModel.js'); const Note = require('lib/models/Note.js'); @@ -9,6 +10,8 @@ const { reducer, defaultState } = require('lib/reducer.js'); const { splitCommandString } = require('lib/string-utils.js'); const { reg } = require('lib/registry.js'); const { _ } = require('lib/locale.js'); +const Entities = require('html-entities').AllHtmlEntities; +const htmlentities = (new Entities()).encode; const chalk = require('chalk'); const tk = require('terminal-kit'); @@ -638,12 +641,27 @@ class AppGui { return true; } - if (link.type === 'resource') { - const resourceId = link.id; - let resource = await Resource.load(resourceId); - if (!resource) throw new Error('No resource with ID ' + resourceId); // Should be nearly impossible - if (resource.mime) response.setHeader('Content-Type', resource.mime); - response.write(await Resource.content(resource)); + if (link.type === 'item') { + const itemId = link.id; + let item = await BaseItem.loadItemById(itemId); + if (!item) throw new Error('No item with ID ' + itemId); // Should be nearly impossible + + if (item.type_ === BaseModel.TYPE_RESOURCE) { + if (item.mime) response.setHeader('Content-Type', item.mime); + response.write(await Resource.content(item)); + } else if (item.type_ === BaseModel.TYPE_NOTE) { + const html = [` + + +
+ `]; + html.push('' + htmlentities(item.title) + '\n\n' + htmlentities(item.body) + ''); + html.push(''); + response.write(html.join('')); + } else { + throw new Error('Unsupported item type: ' + item.type_); + } + return true; } @@ -659,7 +677,7 @@ class AppGui { if (resourceIdRegex.test(url)) { noteLinks[index] = { - type: 'resource', + type: 'item', id: url.substr(2), }; } else if (hasProtocol(url, ['http', 'https', 'file', 'ftp'])) {