Fix issues of no file extension for pad export

This commit is contained in:
ClemDee 2019-07-29 16:30:48 +02:00
parent 3de9021397
commit 3e918ec1cf
13 changed files with 30 additions and 25 deletions

View File

@ -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));
};

View File

@ -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;

View File

@ -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;

View File

@ -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' });

View File

@ -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;

View File

@ -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',
});

View File

@ -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) {

View File

@ -786,7 +786,7 @@ define([
});
}, true);
framework.setFileExporter(Exporter.type, function (cb) {
framework.setFileExporter(Exporter.ext, function (cb) {
Exporter.main(inner, cb);
}, true);

View File

@ -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));

View File

@ -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);
});

View File

@ -4,7 +4,7 @@ define([
'/common/sframe-common-codemirror.js',
], function (SFCodeMirror) {
var module = {
type: 'md'
ext: '.md'
};
module.main = function (userDoc, cb) {

View File

@ -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());
});
};

View File

@ -415,7 +415,7 @@ define([
setEditable(!locked);
});
framework.setFileExporter('png', function (cb) {
framework.setFileExporter('.png', function (cb) {
$canvas[0].toBlob(function (blob) {
cb(blob);
});