OPML v2 export

This commit is contained in:
zadam 2019-02-16 23:58:42 +01:00
parent 6fd8e73150
commit a7fce33750
4 changed files with 24 additions and 6 deletions

View File

@ -39,6 +39,8 @@ async function showDialog(defaultType) {
throw new Error("Unrecognized type " + defaultType);
}
$("#opml-v2").prop("checked", true); // setting default
glob.activeDialog = $dialog;
$dialog.modal();

View File

@ -38,7 +38,7 @@ class ExportContext {
});
}
// must remaing static
// must remaing non-static
async reportError(message) {
await messagingService.sendMessageToAllClients({
type: 'export-error',

View File

@ -46,7 +46,7 @@ class ImportContext {
});
}
// must remaing static
// must remaing non-static
async reportError(message) {
await messagingService.sendMessageToAllClients({
type: 'import-error',

View File

@ -4,7 +4,11 @@ const repository = require("../repository");
const utils = require('../utils');
async function exportToOpml(exportContext, branch, version, res) {
console.log("EXPORTING VERSION ", version);
if (!['1.0', '2.0'].includes(version)) {
throw new Error("Unrecognized OPML version " + version);
}
const opmlVersion = parseInt(version);
const note = await branch.getNote();
@ -18,10 +22,21 @@ async function exportToOpml(exportContext, branch, version, res) {
const title = (branch.prefix ? (branch.prefix + ' - ') : '') + note.title;
const preparedTitle = prepareText(title);
const preparedContent = prepareText(await note.getContent());
if (opmlVersion === 1) {
const preparedTitle = escapeXmlAttribute(title);
const preparedContent = prepareText(await note.getContent());
res.write(`<outline title="${preparedTitle}" text="${preparedContent}">\n`);
res.write(`<outline title="${preparedTitle}" text="${preparedContent}">\n`);
}
else if (opmlVersion === 2) {
const preparedTitle = escapeXmlAttribute(title);
const preparedContent = escapeXmlAttribute(await note.getContent());
res.write(`<outline text="${preparedTitle}" _note="${preparedContent}">\n`);
}
else {
throw new Error("Unrecognized OPML version " + opmlVersion);
}
exportContext.increaseProgressCount();
@ -32,6 +47,7 @@ async function exportToOpml(exportContext, branch, version, res) {
res.write('</outline>');
}
const filename = (branch.prefix ? (branch.prefix + ' - ') : '') + note.title + ".opml";
res.setHeader('Content-Disposition', utils.getContentDisposition(filename));