diff --git a/lang/en/pdfannotator.php b/lang/en/pdfannotator.php index b27d831edc5cb01919dd73bc2d6c6b3d3960dffc..e237efc5466269e64bf4d85e206dde1204b53c70 100644 --- a/lang/en/pdfannotator.php +++ b/lang/en/pdfannotator.php @@ -109,6 +109,7 @@ $string['error:getAnnotation'] = 'An error has occured while getting the annotat $string['error:getAnnotations'] = 'An error has occured while getting all annotations.'; $string['error:getComments'] = 'An error has occured while getting the comments.'; $string['error:getQuestions'] = 'An error has occured while getting the questions for this page.'; +$string['error:printComments'] = 'Error with data from server.'; $string['error:hideComment'] = "An error has occured while trying to hide the comment from participants' view."; $string['error:markasread'] = 'The item could not be marked as read.'; $string['error:markasunread'] = 'The item could not be marked as unread.'; diff --git a/locallib.php b/locallib.php index 71d344bf8be13a6bb14ac3059516b36e64d9589b..0bbd5bc3f4508fe535c6cbc0550fcca88f53799a 100644 --- a/locallib.php +++ b/locallib.php @@ -64,7 +64,7 @@ function pdfannotator_display_embed($pdfannotator, $cm, $course, $file, $page = // Load and execute the javascript files. $PAGE->requires->js(new moodle_url("/mod/pdfannotator/shared/pdf.js?ver=00002")); $PAGE->requires->js(new moodle_url("/mod/pdfannotator/shared/textclipper.js")); - $PAGE->requires->js(new moodle_url("/mod/pdfannotator/shared/index.js?ver=00033")); + $PAGE->requires->js(new moodle_url("/mod/pdfannotator/shared/index.js?ver=00034")); $PAGE->requires->js(new moodle_url("/mod/pdfannotator/shared/locallib.js?ver=00005")); // Pass parameters from PHP to JavaScript. @@ -167,7 +167,7 @@ function pdfannotator_extract_images($contentarr, $itemid, $context=null) { } function pdfannotator_split_content_image($content, $res, $itemid, $context=null) { - + global $CFG; // Gets all files in the comment with id itemid. $fs = get_file_storage(); $files = $fs->get_area_files($context->id, 'mod_pdfannotator', 'post', $itemid); @@ -226,6 +226,15 @@ function pdfannotator_split_content_image($content, $res, $itemid, $context=null $data['filename'] = $tempinfo['filename']; $data['filepath'] = $tempinfo['filepath']; $data['filesize'] = $tempinfo['filesize']; + $data['imagestorage'] = 'intern'; + } else if (!str_contains($CFG->wwwroot, $url[0])){ + $data['imagestorage'] = 'extern'; + $data['format'] = $format[0]; + $data['image'] = 'data:image/' . $format[0] . ";base64," . base64_encode(file_get_contents($url[0])); + // $data['image'] = $url[0]; + } else { + $data['success'] = "error"; + $data['message'] = "cannot load image"; } preg_match('/height=[0-9]+/', $imgstr, $height); diff --git a/shared/index.js b/shared/index.js index 8e3a88b1866fe4c3ab5b489cf597221605ddbe4d..b37df0b71b9ed01969f5d6962ee927b9b1c4abbe 100644 --- a/shared/index.js +++ b/shared/index.js @@ -597,6 +597,11 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to data: { "documentId": documentId, "action": 'getCommentsToPrint', sesskey: M.cfg.sesskey} }).then(function(data){ return JSON.parse(data); + }).catch(function(err) { + notification.addNotification({ + message: M.util.get_string('error:printComments','pdfannotator'), + type: "error" + }); }); } }, @@ -850,12 +855,17 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to } } function printImage(data) { - // var url = data['image']; - // var imageElement = document.createElement("img"); - // imageElement.src = url; - var url = data['image']; - var height = data['imageheight'] * 0.264583333333334; // Convert pixel into mm. - + var url; + var image; + // if (data['imagestorage'] === 'extern') { + // url = data['image']; + // image = document.createElement("img"); + // image.setAttribute('crossOrigin', 'anonymous'); + // image.src = url; + // } else { + image = data['image']; + var height = data['imageheight'] * 0.264583333333334; // Convert pixel into mm. + // } // Reduce height and witdh if its size more than a4height. while ( height > (a4height-(2*contentTopBottomMargin) )) { height = height - (height*0.1); @@ -868,7 +878,7 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to doc.addPage(); count = contentTopBottomMargin; } - doc.addImage(url, data['format'], contentRightMargin, count, width, height); // image data, format, offset to the left, offset to the top, width, height + doc.addImage(image, data['format'], contentRightMargin, count, width, height); // image data, format, offset to the left, offset to the top, width, height count += (5 + height); } /** @@ -1739,17 +1749,9 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to let newContent = editTextarea.value.trim(); let imgContents = editAreaEditable.querySelectorAll('img'); - let isEmptyContent = false; - if(editAreaEditable.innerText.replace('/\n/g', '').trim() === '') { - isEmptyContent = true; - } + let isEmptyContent = editAreaEditable.innerText.replace('/\n/g', '').trim() === ''; let defaultPTag = editAreaEditable.querySelector('p'); - if(defaultPTag) { - // No text and no images in default p tag of editor. - if (defaultPTag.innerText.replace('/\n/g', '').trim() === '' && imgContents.length === 0 && editAreaEditable.childNodes.length === 0) { - isEmptyContent = true; - } - } + isEmptyContent = (defaultPTag && defaultPTag.innerText.replace('/\n/g', '').trim() === '' && imgContents.length === 0) && editAreaEditable.childNodes.length === 0; if(isEmptyContent && imgContents.length === 0){ // Should be more than one character, otherwise it should not be saved. notification.addNotification({ @@ -1915,21 +1917,17 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to button1.style.display = 'inline'; var button2 = document.getElementById('questionsOnThisPage'); // to be found in index template button2.style.display = 'inline'; - let isEmptyContent = false; - + commentForm.onsubmit = function (e) { document.querySelector('#commentSubmit').disabled = true; var commentVisibility= read_visibility_of_checkbox(); var isquestion = 0; // this is a normal comment, so it is not a question var commentContentElements = document.querySelectorAll('#id_pdfannotator_contenteditable')[0]; var imgContents = commentContentElements.querySelectorAll('img'); + var innerContent = commentContentElements.innerText.replace('/\n/g', '').trim(); var temp = commentContentElements.querySelectorAll('p')[0]; - if(temp) { - if ((temp.innerText.replace('/\n/g', '').trim() === '' && imgContents.length === 0) && innerContent === '') { - isEmptyContent = true; - } - } + let isEmptyContent = (temp && temp.innerText.replace('/\n/g', '').trim() === '' && imgContents.length === 0) && innerContent === ''; if(isEmptyContent && imgContents.length === 0){ //should be more than one character, otherwise it should not be saved. notification.addNotification({ diff --git a/version.php b/version.php index b0dd6a6880ac0991ad11e46be8233be1ece9f3c2..3364f24d1ff45880b6b682ecc2d6ea4ad4df274a 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'mod_pdfannotator'; -$plugin->version = 2022110201; +$plugin->version = 2022110700; $plugin->release = 'PDF Annotator v1.4 release 11'; $plugin->requires = 2021051700; $plugin->maturity = MATURITY_STABLE;