diff --git a/www/common/sframe-app-framework.js b/www/common/sframe-app-framework.js index e690bfb08..6e10b0a77 100644 --- a/www/common/sframe-app-framework.js +++ b/www/common/sframe-app-framework.js @@ -433,21 +433,37 @@ define([ var ext = (typeof(extension) === 'function') ? extension() : extension; var suggestion = title.suggestTitle('cryptpad-document'); ext = ext || '.txt'; - var types = [{ - tag: 'a', - attributes: { - 'data-value': ext, - 'href': '#' - }, - content: ext - }, { + var types = []; + if (Array.isArray(ext) && ext.length) { + ext.forEach(function (_ext) { + types.push({ + tag: 'a', + attributes: { + 'data-value': _ext, + 'href': '#' + }, + content: _ext + }); + }); + ext = ext[0]; + } else { + types.push({ + tag: 'a', + attributes: { + 'data-value': ext, + 'href': '#' + }, + content: ext + }); + } + types.push({ tag: 'a', attributes: { 'data-value': '', 'href': '#' }, content: ' ' - }]; + }); var dropdownConfig = { text: ext, // Button initial text caretDown: true, @@ -461,14 +477,15 @@ define([ Util.fixFileName(suggestion), function (filename) { if (!(typeof(filename) === 'string' && filename)) { return; } - filename = filename + $select.getValue(); + var ext = $select.getValue(); + filename = filename + ext; if (async) { fe(function (blob) { SaveAs(blob, filename); - }); + }, ext); return; } - var blob = fe(); + var blob = fe(null, ext); SaveAs(blob, filename); }, { typeInput: $select[0] diff --git a/www/pad/export.js b/www/pad/export.js index d1deef146..f1e3497c9 100644 --- a/www/pad/export.js +++ b/www/pad/export.js @@ -5,15 +5,17 @@ define([ '/bower_components/nthen/index.js', ], function ($, Util, Hyperjson, nThen) { var module = { - ext: '.html' + ext: '.html', // default + exts: ['.html', '.doc'] }; var exportMediaTags = function (inner, cb) { var $clone = $(inner).clone(); nThen(function (waitFor) { $(inner).find('media-tag').each(function (i, el) { - if (!$(el).data('blob') || !el.blob) { return; } - Util.blobToImage(el.blob || $(el).data('blob'), waitFor(function (imgSrc) { + var blob = Util.find(el, ['_mediaObject','_blob', 'content']); + if (!blob) { return; } + Util.blobToImage(blob, waitFor(function (imgSrc) { $clone.find('media-tag[src="' + $(el).attr('src') + '"] img') .attr('src', imgSrc); $clone.find('media-tag').parent() @@ -25,18 +27,31 @@ define([ }); }; + var cleanHtml = function (inner) { + return inner.innerHTML.replace(/]*class="cke_anchor"[^>]*data-cke-realelement="([^"]*)"[^>]*>/g, + function(match,realElt){ + //console.log("returning realElt \"" + unescape(realElt)+ "\"."); + return decodeURIComponent(realElt); + }); + }; module.getHTML = function (inner) { return ('\n' + '\n' + '
\n ' + - inner.innerHTML.replace(/]*class="cke_anchor"[^>]*data-cke-realelement="([^"]*)"[^>]*>/g, - function(match,realElt){ - //console.log("returning realElt \"" + unescape(realElt)+ "\"."); - return decodeURIComponent(realElt); }) + + cleanHtml(inner) + ' \n' ); }; - module.main = function (userDoc, cb) { + var exportDoc = function (inner) { + var preHtml = "