]> BookStack Code Mirror - bookstack/commitdiff
Fixed bad image base-urls and forced tinyMCE to use absolute
authorDan Brown <redacted>
Sat, 3 Sep 2016 18:24:58 +0000 (19:24 +0100)
committerDan Brown <redacted>
Sat, 3 Sep 2016 18:24:58 +0000 (19:24 +0100)
Also ensured image file existance is checked during base64 conversion
during exports.
Closes #171.

app/Services/ExportService.php
resources/assets/js/directives.js
resources/assets/js/pages/page-form.js

index 0497681e9ac695204ea7952af02b2ae5e81958fa..14084d320628a7f29e851f5b7a68f1b9a4b810da 100644 (file)
@@ -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);
index 1271b31123dc937ddfc07c220367b204799dc7fc..933bbf5ff5e96c0ad9631a39f72d5f558e880b49 100644 (file)
@@ -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');
index daf9639d7d83948602e919229fc0c3da566acd5b..6428ae9b57583cc97dfb41353714dcca74d706a2 100644 (file)
@@ -20,7 +20,8 @@ function editorPaste(e, editor) {
             }
 
             var id = "image-" + Math.random().toString(16).slice(2);
-            editor.execCommand('mceInsertContent', false, '<img src="/loading.gif" id="' + id + '">');
+            var loadingImage = window.baseUrl('/loading.gif');
+            editor.execCommand('mceInsertContent', false, '<img src="'+ loadingImage +'" id="' + id + '">');
 
             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,