From 3e918ec1cf76adff741109b9c5ee4d8add4625f1 Mon Sep 17 00:00:00 2001 From: ClemDee Date: Mon, 29 Jul 2019 16:30:48 +0200 Subject: [PATCH] Fix issues of no file extension for pad export --- www/code/export.js | 2 +- www/common/modes.js | 24 ++++++++++++------------ www/common/sframe-app-framework.js | 4 ++-- www/common/sframe-common-codemirror.js | 3 ++- www/kanban/export.js | 4 +++- www/kanban/inner.js | 2 +- www/pad/export.js | 2 +- www/pad/inner.js | 2 +- www/poll/export.js | 4 +++- www/settings/make-backup.js | 2 +- www/slide/export.js | 2 +- www/whiteboard/export.js | 2 +- www/whiteboard/inner.js | 2 +- 13 files changed, 30 insertions(+), 25 deletions(-) diff --git a/www/code/export.js b/www/code/export.js index 23d689361..04616a192 100644 --- a/www/code/export.js +++ b/www/code/export.js @@ -8,7 +8,7 @@ define([ module.main = function (userDoc, cb) { var mode = userDoc.highlightMode || 'gfm'; var content = userDoc.content; - module.type = SFCodeMirror.getContentExtension(mode); + module.ext = SFCodeMirror.getContentExtension(mode); cb(SFCodeMirror.fileExporter(content)); }; diff --git a/www/common/modes.js b/www/common/modes.js index 668a00e1a..6d005da30 100644 --- a/www/common/modes.js +++ b/www/common/modes.js @@ -14,7 +14,7 @@ define([ "C text/x-c++src .cpp", "C-like clike .c", "Clojure clojure .clj", - "CMake cmake", /* no extension */ + "CMake cmake _", /* no extension */ "COBOL cobol .cbl", "CoffeeScript coffeescript .coffee", "Common_Lisp commonlisp .lisp", @@ -25,7 +25,7 @@ define([ "Dart dart .dart", "Diff diff .diff", "Django django .py", - "Dockerfile dockerfile", /* no extension */ + "Dockerfile dockerfile _", /* no extension */ "DTD dtd .dtd", "Dylan dylan .dylan", "EBNF ebnf .ebnf", @@ -47,7 +47,7 @@ define([ "Haskell-Literate haskell-literate .lhs", "Haxe haxe .hx", "HTML htmlmixed .html", - "HTTP http", /* no extension */ + "HTTP http _", /* no extension */ "IDL idl .idl", "JADE jade .jade", "Java text/x-java .java", @@ -61,7 +61,7 @@ define([ //"markdown markdown .md", "Mathematica mathematica .nb", "mIRC mirc .irc", - "ML mllike", /* no extension */ + "ML mllike _", /* no extension */ "Modelica modelica .mo", "MscGen mscgen .mscgen", "MUMPS mumps .m", @@ -93,9 +93,9 @@ define([ "Shell shell .sh", "Sieve sieve .sieve", "Slim slim .slim", - "Smalltalk smalltalk", /* no extension */ - "Smarty smarty", /* no extension */ - "Solr solr", /* no extension */ + "Smalltalk smalltalk _", /* no extension */ + "Smarty smarty _", /* no extension */ + "Solr solr _", /* no extension */ "Soy soy .soy", "SPARQL sparql .rq", "Spreadsheet spreadsheet .xls", @@ -107,7 +107,7 @@ define([ "Text text .txt", "Textile textile .textile", "TiddlyWiki tiddlywiki .tw", - "Tiki tiki", /* no extension */ + "Tiki tiki _", /* no extension */ "TOML toml .toml", "Tornado tornado .tornado", "troff troff .troff", @@ -125,22 +125,22 @@ define([ //"xwiki xwiki21", "XQuery xquery .xquery", "YAML yaml .yaml", - "YAML_Frontmatter yaml-frontmatter", /* no extension */ + "YAML_Frontmatter yaml-frontmatter _", /* no extension */ "Z80 z80 .z80" ].map(function (line) { var kv = line.split(/\s/); return { language: kv[0].replace(/_/g, ' '), mode: kv[1], - ext: kv[2], + ext: kv[2] === '_' ? '' : kv[2], }; }); Modes.extensionOf = function (mode) { - var ext = ''; + var ext; list.some(function (o) { if (o.mode !== mode) { return; } - ext = o.ext || ''; + ext = o.ext; return true; }); return ext; diff --git a/www/common/sframe-app-framework.js b/www/common/sframe-app-framework.js index af856d1d7..e2a0bd0a2 100644 --- a/www/common/sframe-app-framework.js +++ b/www/common/sframe-app-framework.js @@ -401,7 +401,7 @@ define([ var ext = (typeof(extension) === 'function') ? extension() : extension; var suggestion = title.suggestTitle('cryptpad-document'); UI.prompt(Messages.exportPrompt, - Util.fixFileName(suggestion) + '.' + ext, function (filename) + Util.fixFileName(suggestion) + ext, function (filename) { if (!(typeof(filename) === 'string' && filename)) { return; } if (async) { @@ -454,7 +454,7 @@ define([ return; } if (!mediaTagEmbedder) { console.log('mediaTagEmbedder missing'); return; } - if (data.type !== 'file') { console.log('unhandled embed type ' + data.type); return; } + if (data.type !== 'file') { console.log('unhandled embed type ' + data.type); return; } var privateDat = cpNfInner.metadataMgr.getPrivateData(); var origin = privateDat.fileHost || privateDat.origin; var src = data.src = origin + data.src; diff --git a/www/common/sframe-common-codemirror.js b/www/common/sframe-common-codemirror.js index 8a0e2de63..ca39717ad 100644 --- a/www/common/sframe-common-codemirror.js +++ b/www/common/sframe-common-codemirror.js @@ -39,7 +39,8 @@ define([ }; module.getContentExtension = function (mode) { - return (Modes.extensionOf(mode) || '.txt').slice(1); + var ext = Modes.extensionOf(mode); + return ext !== undefined ? ext : '.txt'; }; module.fileExporter = function (content) { return new Blob([ content ], { type: 'text/plain;charset=utf-8' }); diff --git a/www/kanban/export.js b/www/kanban/export.js index 2240031fe..9ee770ac7 100644 --- a/www/kanban/export.js +++ b/www/kanban/export.js @@ -2,7 +2,9 @@ // Pads from the code app will be exported using this format instead of plain text. define([ ], function () { - var module = {}; + var module = { + ext: '.json' + }; module.main = function (userDoc, cb) { var content = userDoc.content; diff --git a/www/kanban/inner.js b/www/kanban/inner.js index 29a4d9c88..609e5ac31 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -367,7 +367,7 @@ define([ }); } - framework.setFileExporter('json', function () { + framework.setFileExporter('.json', function () { return new Blob([JSON.stringify(kanban.getBoardsJSON(), 0, 2)], { type: 'application/json', }); diff --git a/www/pad/export.js b/www/pad/export.js index 263593a54..d1deef146 100644 --- a/www/pad/export.js +++ b/www/pad/export.js @@ -5,7 +5,7 @@ define([ '/bower_components/nthen/index.js', ], function ($, Util, Hyperjson, nThen) { var module = { - type: 'html' + ext: '.html' }; var exportMediaTags = function (inner, cb) { diff --git a/www/pad/inner.js b/www/pad/inner.js index 9b56e56bb..f201b8720 100644 --- a/www/pad/inner.js +++ b/www/pad/inner.js @@ -786,7 +786,7 @@ define([ }); }, true); - framework.setFileExporter(Exporter.type, function (cb) { + framework.setFileExporter(Exporter.ext, function (cb) { Exporter.main(inner, cb); }, true); diff --git a/www/poll/export.js b/www/poll/export.js index 2b915cced..e080ec9b4 100644 --- a/www/poll/export.js +++ b/www/poll/export.js @@ -3,7 +3,9 @@ define([ '/customize/messages.js', ], function (Messages) { - var module = {}; + var module = { + ext: '.csv' + }; var copyObject = function (obj) { return JSON.parse(JSON.stringify(obj)); diff --git a/www/settings/make-backup.js b/www/settings/make-backup.js index 3e2876598..674eaba68 100644 --- a/www/settings/make-backup.js +++ b/www/settings/make-backup.js @@ -34,7 +34,7 @@ define([ var path = '/' + type + '/export.js'; require([path], function (Exporter) { Exporter.main(json, function (data) { - result.ext = '.' + Exporter.type; + result.ext = Exporter.ext || ''; result.data = data; cb(result); }); diff --git a/www/slide/export.js b/www/slide/export.js index 814950306..4e76f041d 100644 --- a/www/slide/export.js +++ b/www/slide/export.js @@ -4,7 +4,7 @@ define([ '/common/sframe-common-codemirror.js', ], function (SFCodeMirror) { var module = { - type: 'md' + ext: '.md' }; module.main = function (userDoc, cb) { diff --git a/www/whiteboard/export.js b/www/whiteboard/export.js index e9f68e311..d3ea70f37 100644 --- a/www/whiteboard/export.js +++ b/www/whiteboard/export.js @@ -14,7 +14,7 @@ define([ var canvas = new Fabric.Canvas(canvas_node); var content = userDoc.content; canvas.loadFromJSON(content, function () { - module.type = 'svg'; + module.ext = '.svg'; cb(canvas.toSVG()); }); }; diff --git a/www/whiteboard/inner.js b/www/whiteboard/inner.js index 18a66a635..1c1e5c563 100644 --- a/www/whiteboard/inner.js +++ b/www/whiteboard/inner.js @@ -415,7 +415,7 @@ define([ setEditable(!locked); }); - framework.setFileExporter('png', function (cb) { + framework.setFileExporter('.png', function (cb) { $canvas[0].toBlob(function (blob) { cb(blob); });