diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 6485e9c64..011bb587b 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -936,7 +936,8 @@ define([ return button; }; - var createMdToolbar = function (common, editor) { + var createMdToolbar = function (common, editor, cfg) { + cfg = cfg || {}; var $toolbar = $('
', { 'class': 'cp-markdown-toolbar' }); @@ -1025,9 +1026,39 @@ define([ icon: 'fa-newspaper-o' } }; + + if (typeof(cfg.embed) === "function") { + actions.embed = { + icon: 'fa-picture-o', + action: function () { + var _cfg = { + types: ['file'], + where: ['root'] + }; + common.openFilePicker(_cfg, function (data) { + if (data.type !== 'file') { + console.log("Unexpected data type picked " + data.type); + return; + } + if (data.type !== 'file') { console.log('unhandled embed type ' + data.type); return; } + common.setPadAttribute('atime', +new Date(), null, data.href); + var privateDat = common.getMetadataMgr().getPrivateData(); + var origin = privateDat.fileHost || privateDat.origin; + var src = data.src = data.src.slice(0,1) === '/' ? origin + data.src : data.src; + cfg.embed($(''), data); + }); + + } + }; + } + var onClick = function () { var type = $(this).attr('data-type'); var texts = editor.getSelections(); + if (actions[type].action) { + return actions[type].action(); + } var newTexts = texts.map(function (str) { str = str || Messages.mdToolbar_defaultText; if (actions[type].apply) { @@ -1054,7 +1085,7 @@ define([ }).appendTo($toolbar); return $toolbar; }; - UIElements.createMarkdownToolbar = function (common, editor) { + UIElements.createMarkdownToolbar = function (common, editor, opts) { var readOnly = common.getMetadataMgr().getPrivateData().readOnly; if (readOnly) { return { @@ -1064,7 +1095,7 @@ define([ }; } - var $toolbar = createMdToolbar(common, editor); + var $toolbar = createMdToolbar(common, editor, opts); var cfg = { title: Messages.mdToolbar_button, element: $toolbar diff --git a/www/form/inner.js b/www/form/inner.js index 635c55219..b4407c0f6 100644 --- a/www/form/inner.js +++ b/www/form/inner.js @@ -646,11 +646,6 @@ define([ }).filter(Boolean); }; - var checkMt = function (framework) { - var cm = $('.CodeMirror').length; - if (!cm) { framework.setMediaTagEmbedder(); } - }; - var STATIC_TYPES = { md: { defaultOpts: { @@ -666,7 +661,7 @@ define([ var cursorGetter; return { tag: tag, - edit: function (cb, tmp, framework) { + edit: function (cb, tmp) { var t = h('textarea'); var block = h('div.cp-form-edit-options-block', [t]); var cm = SFCodeMirror.create("gfm", CMeditor, t); @@ -676,14 +671,6 @@ define([ editor.setOption('styleActiveLine', true); editor.setOption('readOnly', false); - editor.on('focus', function () { - framework.setMediaTagEmbedder(); - framework.setMediaTagEmbedder(function (mt) { - editor.focus(); - editor.replaceSelection($(mt)[0].outerHTML); - }); - }) - var text = opts.text; var cursor; if (tmp && tmp.content && tmp.old.text === text) { @@ -705,7 +692,12 @@ define([ editor.focus(); }); if (APP.common) { - var markdownTb = APP.common.createMarkdownToolbar(editor); + var markdownTb = APP.common.createMarkdownToolbar(editor, { + embed: function (mt) { + editor.focus(); + editor.replaceSelection($(mt)[0].outerHTML); + } + }); $(block).prepend(markdownTb.toolbar); $(markdownTb.toolbar).show(); cm.configureTheme(APP.common, function () {}); @@ -714,7 +706,6 @@ define([ var cancelBlock = h('button.btn.btn-secondary', Messages.cancel); $(cancelBlock).click(function () { cb(); - checkMt(framework); }); // Save changes var saveBlock = h('button.btn.btn-primary', [ @@ -730,7 +721,6 @@ define([ $(saveBlock).click(function () { $(saveBlock).attr('disabled', 'disabled'); cb(getContent()); - checkMt(framework); }); cursorGetter = function () { @@ -1698,7 +1688,6 @@ define([ $('.cp-form-block[data-id="'+uid+'"]').remove(); framework.localChange(); updateAddInline(); - checkMt(framework); }); // Values diff --git a/www/kanban/inner.js b/www/kanban/inner.js index 126ffd000..76a9fe1cc 100644 --- a/www/kanban/inner.js +++ b/www/kanban/inner.js @@ -241,7 +241,12 @@ define([ e.stopPropagation(); }); var common = framework._.sfCommon; - var markdownTb = common.createMarkdownToolbar(editor); + var markdownTb = common.createMarkdownToolbar(editor, { + embed: function (mt) { + editor.focus(); + editor.replaceSelection($(mt)[0].outerHTML); + } + }); $(text).before(markdownTb.toolbar); $(markdownTb.toolbar).show(); editor.refresh();