From bbd8fff021810b96031d778c2dcfbde6f49180f2 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 3 Sep 2016 19:24:58 +0100 Subject: [PATCH] Fixed bad image base-urls and forced tinyMCE to use absolute Also ensured image file existance is checked during base64 conversion during exports. Closes #171. --- app/Services/ExportService.php | 6 ++++-- resources/assets/js/directives.js | 6 +++--- resources/assets/js/pages/page-form.js | 7 +++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/Services/ExportService.php b/app/Services/ExportService.php index 0497681e9..14084d320 100644 --- a/app/Services/ExportService.php +++ b/app/Services/ExportService.php @@ -48,11 +48,13 @@ class ExportService foreach ($imageTagsOutput[0] as $index => $imgMatch) { $oldImgString = $imgMatch; $srcString = $imageTagsOutput[2][$index]; - if (strpos(trim($srcString), 'http') !== 0) { - $pathString = public_path($srcString); + $isLocal = strpos(trim($srcString), 'http') !== 0; + if ($isLocal) { + $pathString = public_path(trim($srcString, '/')); } else { $pathString = $srcString; } + if ($isLocal && !file_exists($pathString)) continue; $imageContent = file_get_contents($pathString); $imageEncoded = 'data:image/' . pathinfo($pathString, PATHINFO_EXTENSION) . ';base64,' . base64_encode($imageContent); $newImageString = str_replace($srcString, $imageEncoded, $oldImgString); diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js index 1271b3112..933bbf5ff 100644 --- a/resources/assets/js/directives.js +++ b/resources/assets/js/directives.js @@ -370,7 +370,7 @@ module.exports = function (ngApp, events) { window.ImageManager.showExternal(image => { let caretPos = currentCaretPos; let currentContent = input.val(); - let mdImageText = "![" + image.name + "](" + image.url + ")"; + let mdImageText = "![" + image.name + "](" + image.thumbs.display + ")"; input.val(currentContent.substring(0, caretPos) + mdImageText + currentContent.substring(caretPos)); input.change(); }); @@ -441,7 +441,7 @@ module.exports = function (ngApp, events) { let selectEnd = input[0].selectionEnd; let content = input[0].value; let selectText = content.substring(selectStart, selectEnd); - let placeholderImage = `/loading.gif#upload${id}`; + let placeholderImage = window.baseUrl(`/loading.gif#upload${id}`); let innerContent = ((selectEnd > selectStart) ? `![${selectText}]` : '![]') + `(${placeholderImage})`; input[0].value = content.substring(0, selectStart) + innerContent + content.substring(selectEnd); @@ -458,7 +458,7 @@ module.exports = function (ngApp, events) { let selectStart = input[0].selectionStart; if (xhr.status === 200 || xhr.status === 201) { var result = JSON.parse(xhr.responseText); - input[0].value = input[0].value.replace(placeholderImage, result.url); + input[0].value = input[0].value.replace(placeholderImage, result.thumbs.display); input.change(); } else { console.log('An error occurred uploading the image'); diff --git a/resources/assets/js/pages/page-form.js b/resources/assets/js/pages/page-form.js index daf9639d7..6428ae9b5 100644 --- a/resources/assets/js/pages/page-form.js +++ b/resources/assets/js/pages/page-form.js @@ -20,7 +20,8 @@ function editorPaste(e, editor) { } var id = "image-" + Math.random().toString(16).slice(2); - editor.execCommand('mceInsertContent', false, ''); + var loadingImage = window.baseUrl('/loading.gif'); + editor.execCommand('mceInsertContent', false, ''); var remoteFilename = "image-" + Date.now() + "." + ext; formData.append('file', file, remoteFilename); @@ -30,7 +31,7 @@ function editorPaste(e, editor) { xhr.onload = function () { if (xhr.status === 200 || xhr.status === 201) { var result = JSON.parse(xhr.responseText); - editor.dom.setAttrib(id, 'src', result.url); + editor.dom.setAttrib(id, 'src', result.thumbs.display); } else { console.log('An error occurred uploading the image'); console.log(xhr.responseText); @@ -63,6 +64,8 @@ var mceOptions = module.exports = { ], body_class: 'page-content', relative_urls: false, + remove_script_host: false, + document_base_url: window.baseUrl('/'), statusbar: false, menubar: false, paste_data_images: false,