diff --git a/action.php b/action.php
index 2401d51a18fe7c2f9fdb6cf8fcbc087ff92e7212..0ee9b23c6a2635f74f50bcbfe7ea66f88fa702a2 100644
--- a/action.php
+++ b/action.php
@@ -343,24 +343,18 @@ if ($action === 'addComment') {
     $visibility = required_param('visibility', PARAM_ALPHA);
     $isquestion = required_param('isquestion', PARAM_INT);
 
-    $imgcounter = substr_count($extracted_content, '<img');
-    $maxFileCount = get_config('mod_pdfannotator', 'maxfiles');
-    if($imgcounter > $maxFileCount) {
-        echo json_encode(['status' => 'error', 'type' => "maxfile", 'maxFileCount' => $maxFileCount]);
-    } else {
-        // Insert the comment into the mdl_pdfannotator_comments table and get its record id.
-        $comment = pdfannotator_comment::create($documentid, $annotationid, $extracted_content, $visibility, $isquestion, $cm, $context);
+    // Insert the comment into the mdl_pdfannotator_comments table and get its record id.
+    $comment = pdfannotator_comment::create($documentid, $annotationid, $extracted_content, $visibility, $isquestion, $cm, $context);
 
-        // If successful, create a comment array and return it as json.
-        if ($comment) {
-            $myrenderer = $PAGE->get_renderer('mod_pdfannotator');
-            $templatable = new comment($comment, $cm, $context);
-            $data = $templatable->export_for_template($myrenderer);
+    // If successful, create a comment array and return it as json.
+    if ($comment) {
+        $myrenderer = $PAGE->get_renderer('mod_pdfannotator');
+        $templatable = new comment($comment, $cm, $context);
+        $data = $templatable->export_for_template($myrenderer);
 
-            echo json_encode($data);
-        } else {
-            echo json_encode(['status' => '-1']);
-        }
+        echo json_encode($data);
+    } else {
+        echo json_encode(['status' => '-1']);
     }
 
 }
@@ -442,18 +436,11 @@ if ($action === 'editComment') {
 
     $commentid = required_param('commentId', PARAM_INT);
     $content = required_param('content', PARAM_RAW);
-    $regex = ["/?time=[0-9]*|/", '"'];
+    $regex = "/?time=[0-9]*/";
     $extracted_content = str_replace($regex, "", $content);
 
-    $imgcounter = substr_count($extracted_content, "<img");
-    $maxFileCount = get_config('mod_pdfannotator', 'maxfiles');
-    if($imgcounter > $maxFileCount) {
-        echo json_encode(['status' => 'error:maxfile', 'maxFileCount' => $maxFileCount]);
-    } else {
-        $data = pdfannotator_comment::update($commentid, $extracted_content, $editanypost, $context);
-        echo json_encode($data);
-    }
-
+    $data = pdfannotator_comment::update($commentid, $extracted_content, $editanypost, $context);
+    echo json_encode($data);
 }
 
 /* * ****************************************** Vote for a comment ****************************************** */
diff --git a/constants.php b/constants.php
index 803c5a87859b86913d5450e7cdf97a06f0a37b49..b0ccee908dbc0545c4c008d5a1da550d14105708 100644
--- a/constants.php
+++ b/constants.php
@@ -39,3 +39,8 @@ define('LATEX_TO_PNG_GOOGLE_API', 1);
  * Prefix needed for encode64 images
  */
 define('IMAGE_PREFIX', 'data:image/png;base64,');
+
+/**
+ * Editor unlimited files variable
+ */
+define('PDFANNOTATOR_EDITOR_UNLIMITED_FILES', -1);
diff --git a/lang/en/pdfannotator.php b/lang/en/pdfannotator.php
index 48861ce99880c24654ae77cac9698fd6017d17e9..77a3609504c93366dea4af44c9bd6ef04d71eae1 100644
--- a/lang/en/pdfannotator.php
+++ b/lang/en/pdfannotator.php
@@ -113,8 +113,8 @@ $string['error:hideComment'] = "An error has occured while trying to hide the co
 $string['error:markasread'] = 'The item could not be marked as read.';
 $string['error:markasunread'] = 'The item could not be marked as unread.';
 $string['error:markcorrectanswer'] = 'An error has occured while marking the answer as correct.';
-$string['error:maximalfilenumber_created'] = 'Your comment cannot be created, because it exceeds the maximum number of files. You can attach at most {$a} file(s) to a single comment.';
-$string['error:maximalfilenumber_edited'] = 'Your comment cannot be edited, because it exceeds the maximum number of files. You can attach at most {$a} file(s) to a single comment.';
+$string['error:maximalsizeoffile_created'] = 'Your comment cannot be created, because it exceeds the maximum size of files. You can attach file(s) with at most {$a} to a single comment.';
+$string['error:maximalsizeoffile_edited'] = 'Your comment cannot be edited, because it exceeds the maximum size of files. You can attach file(s) with at most {$a} to a single comment.';
 $string['error:missingAnnotationtype'] = 'Annotationtype does not exists. Possibly the entry in table pdfannotator_annotationtypes is missing.';
 $string['error:openingPDF'] = 'An error occurred while opening the PDF file.';
 $string['error:openprintview'] = 'An error has occured while trying to open the pdf in Acrobat Reader.';
@@ -213,8 +213,6 @@ $string['markCorrect'] = 'Mark as correct';
 $string['markhidden'] = 'Hide';
 $string['markSolved'] = 'Close question';
 $string['markUnsolved'] = 'Reopen question';
-$string['maxfiles'] = 'Maximal number of file';
-$string['maxfiles_help'] = 'Maximal number of file per comment uploaded by users.';
 $string['maximumfilesize'] = 'Maximum file size';
 $string['maximumfilesize_help'] = 'Files uploaded by users may be up to this size.';
 $string['me'] = 'me';
diff --git a/lib.php b/lib.php
index 03542f7d05de2463d4ebf953f82e3fc9f6dabbed..6aca97734314093c19346eb45e89ae3c77f0ca4d 100644
--- a/lib.php
+++ b/lib.php
@@ -774,10 +774,23 @@ function mod_pdfannotator_output_fragment_edit_comment_form($args) {
     $context = context_module::instance($args['cmid']);
     $html = '';
 
-    $draftitemid = pdfannotator_data_preprocessing($context, 'editarea' . $args['commentid'], 'editor-editcomment-inputs' . $args['commentid'], 1);
+    $draftitemid = pdfannotator_data_preprocessing($context, 'editarea' . $args['commentid'], 'editor-editcomment-inputs' . $args['commentid'], 0);
     $comment = $DB->get_record('pdfannotator_comments', ['id' => $args['commentid']]);
     $html = pdfannotator_file_prepare_draft_area($draftitemid, $context->id, 'mod_pdfannotator', 'post',
     $args['commentid'], pdfannotator_get_editor_options($context), $comment->content);
 
     return $html;
 }
+
+function mod_pdfannotator_output_fragment_open_editor($args) {
+    global $DB;
+    $context = context_module::instance($args['cmid']);
+
+    $data = pdfannotator_data_preprocessing($context, 'id_pdfannotator_content', "editor-commentlist-inputs", 0);
+    file_prepare_draft_area($draftitemid, $context->id, 'mod_pdfannotator', 'post', 0, pdfannotator_get_editor_options($context));
+    
+    $out = html_writer::empty_tag('input', ['type' => 'hidden', 'class' => 'pdfannotator_' . $args['section'] . '_editoritemid', 'name' => 'input_value_editor', 'value' => $data['draftItemId']]);
+    $out .= html_writer::empty_tag('input', ['type' => 'hidden', 'class' => 'pdfannotator_' . $args['section'] . '_editorformat', 'name' => 'input_value_editor', 'value' => $data['editorFormat']]);
+
+    return $out;
+}
diff --git a/locallib.php b/locallib.php
index 2c5bc396bdf6f2c94ff737506e8f5dccb358b0a3..a178ad12824534767cf01928c32a24f719418231 100644
--- a/locallib.php
+++ b/locallib.php
@@ -31,6 +31,7 @@ require_once("$CFG->libdir/filelib.php");
 require_once("$CFG->libdir/resourcelib.php");
 require_once("$CFG->dirroot/mod/pdfannotator/lib.php");
 require_once($CFG->dirroot . '/repository/lib.php');
+require_once($CFG->dirroot . '/mod/pdfannotator/constants.php');
 
 /**
  * Display embedded pdfannotator file.
@@ -87,15 +88,18 @@ function pdfannotator_display_embed($pdfannotator, $cm, $course, $file, $page =
     $capabilities->usedrawing = has_capability('mod/pdfannotator:usedrawing', $context);
     $capabilities->useprint = has_capability('mod/pdfannotator:printdocument', $context);
     $capabilities->useprintcomments = has_capability('mod/pdfannotator:printcomments', $context);
+    // 3. Comment editor setting.
+    $editorsettings = new stdClass();
+    $editorsettings->active_editor = explode(',', get_config('core', 'texteditors'))[0];
 
-    $params = [$cm, $documentobject, $context->id, $USER->id, $capabilities, $toolbarsettings, $page, $annoid, $commid];
+    $params = [$cm, $documentobject, $context->id, $USER->id, $capabilities, $toolbarsettings, $page, $annoid, $commid, $editorsettings];
     $PAGE->requires->js_init_call('adjustPdfannotatorNavbar', null, true);
     $PAGE->requires->js_init_call('startIndex', $params, true);
     // The renderer renders the original index.php / takes the template and renders it.
     $myrenderer = $PAGE->get_renderer('mod_pdfannotator');
     echo $myrenderer->render_index(new index($pdfannotator, $capabilities, $file));
     $PAGE->requires->js_init_call('checkOnlyOneCheckbox', null, true);
-    pdfannotator_data_preprocessing($context, 'id_pdfannotator_content', "editor-commentlist-inputs");
+    //pdfannotator_data_preprocessing($context, 'id_pdfannotator_content', "editor-commentlist-inputs");
     $PAGE->requires->js_init_call('checkOnlyOneCheckbox', null, true);
 
     pdfannotator_print_intro($pdfannotator, $cm, $course);
@@ -107,7 +111,7 @@ function pdfannotator_display_embed($pdfannotator, $cm, $course, $file, $page =
 function pdfannotator_get_image_options_editor() {
     $image_options = new \stdClass();
     $image_options->maxbytes = get_config('mod_pdfannotator', 'maxbytes');
-    $image_options->maxfiles = get_config('mod_pdfannotator', 'maxfiles');
+    $image_options->maxfiles = PDFANNOTATOR_EDITOR_UNLIMITED_FILES;
     $image_options->autosave = false;
     $image_options->env = 'editor';
     $draftitemid = file_get_unused_draft_itemid();
@@ -120,7 +124,7 @@ function pdfannotator_get_editor_options($context) {
     $options = [
         'atto:toolbar' => get_config('mod_pdfannotator', 'attobuttons'),
         'maxbytes' => get_config('mod_pdfannotator', 'maxbytes'),
-        'maxfiles' => get_config('mod_pdfannotator', 'maxfiles'),
+        'maxfiles' => PDFANNOTATOR_EDITOR_UNLIMITED_FILES,
         'return_types' => 15,
         'enable_filemanagement' => true, 
         'removeorphaneddrafts' => false, 
@@ -237,10 +241,12 @@ function pdfannotator_data_preprocessing($context, $textarea, $classname, $draft
         // advimage plugin
         $image_options = (object)initialise_filepicker($args);
         $image_options->maxbytes = get_config('mod_pdfannotator', 'maxbytes');
-        $image_options->maxfiles = get_config('mod_pdfannotator', 'maxfiles');
+        $image_options->maxfiles = PDFANNOTATOR_EDITOR_UNLIMITED_FILES;
         $image_options->autosave = false;
         $image_options->env = 'editor';
-        $draftitemid = file_get_unused_draft_itemid();
+        if (!$draftitemid) {
+            $draftitemid = file_get_unused_draft_itemid();
+        }
         $image_options->itemid = $draftitemid;
         $editor->use_editor($textarea, $options, ['image' => $image_options]);
     }
@@ -248,11 +254,15 @@ function pdfannotator_data_preprocessing($context, $textarea, $classname, $draft
     // Add draftitemid and editorformat into input-tags.
     $editorformat = editors_get_preferred_format(FORMAT_HTML);
 
-    $PAGE->requires->js_init_call('inputDraftItemID', [$draftitemid, (int)$editorformat, $classname]);
+    //$PAGE->requires->js_init_call('inputDraftItemID', [$draftitemid, (int)$editorformat, $classname]);
     
-    return $draftitemid;
+    return ['draftItemId' => $draftitemid, 'editorFormat' => $editorformat, 'className' => $classname];
 }
 
+/**
+ * Same function as core, however we need to add files into the existing draft area!
+ * 
+ */
 function pdfannotator_file_prepare_draft_area(&$draftitemid, $contextid, $component, $filearea, $itemid, array $options=null, $text=null) {
     global $CFG, $USER, $CFG, $DB;
 
@@ -267,11 +277,7 @@ function pdfannotator_file_prepare_draft_area(&$draftitemid, $contextid, $compon
     $usercontext = \context_user::instance($USER->id);
     $fs = get_file_storage();
 
-    if (empty($draftitemid)) {
-        // create a new area and copy existing files into
-        $draftitemid = file_get_unused_draft_itemid();
-    }
-    $file_record = array('contextid'=>$usercontext->id, 'component'=>'user', 'filearea'=>'draft', 'itemid'=>$draftitemid);
+    $file_record = ['contextid'=>$usercontext->id, 'component'=>'user', 'filearea'=>'draft', 'itemid'=>$draftitemid];
     if (!is_null($itemid) and $files = $fs->get_area_files($contextid, $component, $filearea, $itemid)) {
         foreach ($files as $file) {
             if ($file->is_directory() and $file->get_filepath() === '/') {
@@ -364,7 +370,6 @@ function pdfannotator_get_annotationtype_name($typeid) {
 
 function pdfannotator_handle_latex($context, string $subject) {
     global $CFG;
-    require_once($CFG->dirroot . '/mod/pdfannotator/constants.php');
     $latexapi = get_config('mod_pdfannotator', 'latexapi');
 
     // Look for these formulae: $$ ... $$, \( ... \) and \[ ... \]
diff --git a/settings.php b/settings.php
index 8b8b668aa0a16a4589ac10c320f8aec88b82a3b5..3dec4a61b4a3a4cc1b887783d5355ce24524572f 100644
--- a/settings.php
+++ b/settings.php
@@ -87,8 +87,4 @@ screen = fullscreen';
         $settings->add($element);
     }
 
-    $settings->add(new admin_setting_configtext('mod_pdfannotator/maxfiles',
-                   new lang_string('maxfiles', 'pdfannotator'),
-                   new lang_string('maxfiles_help', 'pdfannotator'), 20, PARAM_INT));
-
 }
diff --git a/shared/index.js b/shared/index.js
index 032bd99fdaed27cff84262f0fa315353a96a2319..35e1124c8a384dcb5caf3a7e3772dd3aca60bcfe 100644
--- a/shared/index.js
+++ b/shared/index.js
@@ -39,7 +39,7 @@
 //SOFTWARE.
 //
 //R: The first parameter has to be Y, because it is a default YUI-object, because moodle gives this object first.
-function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _toolbarSettings, _page = 1,_annoid = null,_commid = null){ // 3. parameter war mal _fileid
+function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _toolbarSettings, _page = 1,_annoid = null,_commid = null, _editorSettings){ // 3. parameter war mal _fileid
 
     // Require amd modules.
    require(['jquery','core/templates','core/notification','mod_pdfannotator/jspdf', 'core/fragment'], function($,templates,notification,jsPDF, Fragment) {
@@ -283,12 +283,6 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                     }else if (data.status == -1){
                         notification.alert(M.util.get_string('error','pdfannotator'),M.util.get_string('missingAnnotation','pdfannotator'),'ok');
                         return false;
-                    } else if (data.status === "error" && data.type === "maxfile") {
-                        notification.addNotification({
-                            message: M.util.get_string('error:maximalfilenumber_created','pdfannotator', data.maxFileCount),
-                            type: "error"
-                        });
-                        return false;
                     } else {
                         notification.addNotification({
                             message: M.util.get_string('error:addComment','pdfannotator'),
@@ -1554,22 +1548,22 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
         
 	// Comment annotations
 	(function (window, document) {
-	  var commentList = document.querySelector('#comment-wrapper .comment-list-container'); // to be found in index.php
-	  var commentForm = document.querySelector('#comment-wrapper .comment-list-form'); // to be found in index.php
-          var commentText = commentForm.querySelector('#id_pdfannotator_content'); // Plain text editor.
-          // We will need this to reset the typed text for other editors.
-          var editorArea = commentForm.querySelector('#id_pdfannotator_contenteditable'); // Atto editor.
-          if (!editorArea) { // TinyMCE editor.
-              var iframe = document.getElementById("myarea_ifr");
-              if (iframe) {
-                  editorArea = iframe.contentWindow.document.getElementById("tinymce");
-              }
-          }
-          // Function checks whether the target annotation type allows comments
-	  function supportsComments(target) {
-	    var type = target.getAttribute('data-pdf-annotate-type');
-	    return ['point', 'highlight', 'area', 'strikeout'].indexOf(type) > -1;
-	  }
+        var commentList = document.querySelector('#comment-wrapper .comment-list-container'); // to be found in index.php
+        var commentForm = document.querySelector('#comment-wrapper .comment-list-form'); // to be found in index.php
+        var commentText = commentForm.querySelector('#id_pdfannotator_content'); // Plain text editor.
+        // We will need this to reset the typed text for other editors.
+        var editorArea = commentForm.querySelector('#id_pdfannotator_contenteditable'); // Atto editor.
+        if (!editorArea) { // TinyMCE editor.
+            var iframe = document.getElementById("myarea_ifr");
+            if (iframe) {
+                editorArea = iframe.contentWindow.document.getElementById("tinymce");
+            }
+        }
+        // Function checks whether the target annotation type allows comments
+        function supportsComments(target) {
+            var type = target.getAttribute('data-pdf-annotate-type');
+            return ['point', 'highlight', 'area', 'strikeout'].indexOf(type) > -1;
+        }
           
                    
           /*
@@ -1578,12 +1572,12 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
            * 
            * @return {Element}
            */
-	  function insertComments(comments, markCommentid = undefined) {
+        function insertComments(comments, markCommentid = undefined) {
             if(!comments) {
                 return false;
             }
             if(!comments.comments){
-               comments = {comments: [comments]};
+            comments = {comments: [comments]};
             }
 
             (function(templates, data) {
@@ -1595,8 +1589,8 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                             } else {
                                 templates.replaceNodeContents('.comment-list-container', html, js);
                             }                      
-                                                              
-                        }).then(function() {
+                                                            
+                        }).then(function(e) {
                             data.comments.forEach(function(comment) {
                                 createVoteHandler(comment);
                                 createEditFormHandler(comment);
@@ -1614,14 +1608,11 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                                 let element = document.querySelector(selector);
                                 renderMathJax(element);
                             });
-                        //    fixCommentForm();
-                            
-                            //$("#comment_"+comment.uuid+" chat-message-p:contains('"+pattern+"')").addClass('mark');
-                            //$("chat-message+:contains('text')").addClass('mark');
+
                             //if the target has the attribute markCommentid a specific comment should be marked with an red border
                             //after 3 sec the border should disappear
                             if(markCommentid !== undefined && markCommentid !== null){
-                              //  document.querySelector('#comment_'+markCommentid).style.cssText = "border:3px solid red !important";
+                            //  document.querySelector('#comment_'+markCommentid).style.cssText = "border:3px solid red !important";
                                 $('#comment_'+markCommentid).addClass('mark');
                                 markCommentid = undefined;
                                 setTimeout(function(){
@@ -1631,14 +1622,14 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                                 },3000);
                             }else{
                                 // Otherwise the inputfield of the form should be focused.
-                              commentText.focus();
+                            commentText.focus();
                             }                       
                             
                         }); // add a catch
                 }
             })(templates, comments);
             return true;
-	  }
+        }
           
           function createSolvedHandler(comment){
             var button = $('#comment_'+comment.uuid+' .comment-solve-a');
@@ -1789,7 +1780,7 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                     if (editForm.style.display === "none") {
                         editForm.style.display = "block";
                         text.innerHTML = "";
-
+                    
                     var isEmptyContent = false;
                     // Add an event handler to the form for submitting any changes to the database.
                     editForm.onsubmit = function (e) {
@@ -1799,6 +1790,22 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                         if(commentEditContentElements.innerText.replace('/\n/g', '').trim() === '') {
                             isEmptyContent = true;
                         }
+                        if(imgContents) {
+                            imgContents.forEach(img => {
+                                if(img.size > maxFile) {
+                                    setTimeout(function(){
+                                        notification.addNotification({
+                                            message: M.util.get_string('','pdfannotator'),
+                                            type: "error"
+                                          });
+                                        let notificationpanel = document.getElementById("user-notifications");
+                                        while (notificationpanel.hasChildNodes()) {
+                                            notificationpanel.removeChild(notificationpanel.firstChild);
+                                        }
+                                    }, 5000);
+                                }
+                            });
+                        }
                         var temp = commentEditContentElements.querySelectorAll('p')[0];
                         if(temp) {
                             if (temp.innerText.replace('/\n/g', '').trim() === '' && imgContents.length === 0) {
@@ -1828,16 +1835,12 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                                         newContent = data.newContent;
                                         text.innerHTML = newContent;
                                         comment.content = newContent;
+                                        editArea = newContent;
                                         renderMathJax(text);
                                         notification.addNotification({
                                             message: M.util.get_string('successfullyEdited', 'pdfannotator'),
                                             type: "success"
                                         });
-                                    } else if (data.status === "error:maxfile") {
-                                        notification.addNotification({
-                                            message: M.util.get_string('error:maximalfilenumber_edited','pdfannotator', data.maxFileCount),
-                                            type: "error"
-                                        });
                                     } else {
                                         notification.addNotification({
                                             message: M.util.get_string('error:editComment','pdfannotator'),
@@ -1869,29 +1872,14 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                         editForm.style.display = "none";
                         text.innerHTML = comment.displaycontent;
                         renderMathJax(text);
-                    }
+                    } 
                 }
                 // Create an element for click.
                 var editButton = $('#editButton'+comment.uuid);
                 // Add an event handler to the click element that opens a textarea and fills it with the current comment.
                 editButton.click(function(e) {
-                    if(!editorExists) {
-                        let args = {'commentid': comment.uuid, 'cmid': _cm.id};
-                        let fragmentPromise = Fragment.loadFragment('mod_pdfannotator', 'edit_comment_form', _contextId, args);
-                        fragmentPromise.done(function(html, js) {
-                            templates.runTemplateJS(js);
-                            return html;
-                        }).fail(notification.exception)
-                        .then(function(html) {
-                            var editareaEditable = document.querySelectorAll(`#editarea${comment.uuid}editable`)[0];
-                            editareaEditable.innerHTML = '';
-                            editareaEditable.innerHTML = html;
-                            editorExists = true;
-                            handleClickIfEditorExists();
-                        });
-                    } else {
-                        handleClickIfEditorExists();
-                    }
+                    UI.loadEditor('editcomment', 'edit', comment.uuid);
+                    handleClickIfEditorExists();
                 });               
           }
           
@@ -1988,9 +1976,9 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                 }
                 
                 $('#comment-wrapper h4')[0].innerHTML = title;
-	            commentList.innerHTML = '';
-	            commentForm.style.display = 'inherit';
-                  
+                commentList.innerHTML = '';
+                commentForm.style.display = 'inherit';
+                    
                 var button1 = document.getElementById('allQuestions'); // to be found in index template
                 button1.style.display = 'inline';
                 var button2 = document.getElementById('questionsOnThisPage'); // to be found in index template
@@ -2019,12 +2007,13 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                         document.querySelector('#commentSubmit').disabled = false;
                         return false;
                     }
-	                _2.default.getStoreAdapter().addComment(documentId, annotationId, commentContentElements.innerHTML, commentVisibility, isquestion)
+                    _2.default.getStoreAdapter().addComment(documentId, annotationId, commentContentElements.innerHTML, commentVisibility, isquestion)
                         .then(insertComments)
                         .then(function (success) {
                             if (!success) {
                                 return false;
                             }
+                            UI.loadEditor('content');
                             document.querySelector('#commentSubmit').disabled = false;
                             commentText.value = '';
                             if(editorArea) {
@@ -2033,19 +2022,21 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                             commentText.focus();
                         }).catch(function(err){
                             notification.addNotification({
-                              message: M.util.get_string('error:addComment','pdfannotator'),
-                              type: "error"
+                                message: M.util.get_string('error:addComment','pdfannotator'),
+                                type: "error"
                             });
                             console.error(M.util.get_string('error:addComment', 'pdfannotator'));
                         });
 
-	                return false; // Prevents page reload via POST to enable asynchronous loading
-	            };
-                  
+                    return false; // Prevents page reload via POST to enable asynchronous loading
+                };
+
+                //render comments   
                   //render comments   
-                  insertComments(comments, target.markCommentid);
-                  
-                }, function (err){
+                //render comments   
+                insertComments(comments, target.markCommentid);
+                
+            }, function (err){
                     commentList.innerHTML = '';
                     commentForm.style.display = 'none';
                     commentForm.onsubmit = null;
@@ -3995,7 +3986,7 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                 } else {
                     clickedElement = '';
                 }
-                if(clickedElement && editorNodes.querySelector(clickedElement)) {
+                if(clickedElement && editorNodes && editorNodes.querySelector(clickedElement)) {
                     return;
                 }
                 //If moodle Modal beeing clicked.
@@ -5094,7 +5085,8 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
             var _shortText = __webpack_require__(39);
             var _newAnnotations = __webpack_require__(40);
             var _ajaxloader=__webpack_require__(36);
-            exports.default={addEventListener:_event.addEventListener,removeEventListener:_event.removeEventListener,fireEvent:_event.fireEvent,disableEdit:_edit.disableEdit,enableEdit:_edit.enableEdit,disablePen:_pen.disablePen,enablePen:_pen.enablePen,setPen:_pen.setPen,disablePoint:_point.disablePoint,enablePoint:_point.enablePoint,disableRect:_rect.disableRect,enableRect:_rect.enableRect,disableText:_text.disableText,enableText:_text.enableText,setText:_text.setText,createPage:_page.createPage,renderPage:_page.renderPage,showLoader:_ajaxloader.showLoader,hideLoader:_ajaxloader.hideLoader,pickAnnotation:_pickAnno.pickAnnotation, renderQuestions:_questionsRenderer.renderQuestions, renderAllQuestions: _questionsRenderer.renderAllQuestions, shortenTextDynamic:_shortText.shortenTextDynamic, mathJaxAndShortenText:_shortText.mathJaxAndShortenText, loadNewAnnotations : _newAnnotations.load};
+            var _commentWrapper=__webpack_require__(35);
+            exports.default={addEventListener:_event.addEventListener,removeEventListener:_event.removeEventListener,fireEvent:_event.fireEvent,disableEdit:_edit.disableEdit,enableEdit:_edit.enableEdit,disablePen:_pen.disablePen,enablePen:_pen.enablePen,setPen:_pen.setPen,disablePoint:_point.disablePoint,enablePoint:_point.enablePoint,disableRect:_rect.disableRect,enableRect:_rect.enableRect,disableText:_text.disableText,enableText:_text.enableText,setText:_text.setText,createPage:_page.createPage,renderPage:_page.renderPage,showLoader:_ajaxloader.showLoader,hideLoader:_ajaxloader.hideLoader,pickAnnotation:_pickAnno.pickAnnotation, renderQuestions:_questionsRenderer.renderQuestions, renderAllQuestions: _questionsRenderer.renderAllQuestions, shortenTextDynamic:_shortText.shortenTextDynamic, mathJaxAndShortenText:_shortText.mathJaxAndShortenText, loadNewAnnotations : _newAnnotations.load, loadEditor: _commentWrapper.loadEditor};
             module.exports=exports['default'];
     /***/},
     /** 29 */
@@ -5808,6 +5800,7 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                 deleteUndefinedPin();
                 [textarea,data] = (0,_commentWrapper.openComment)(e,handleCancelClick,handleSubmitClick,handleToolbarClick,handleSubmitBlur,'pin');
                 renderPin();
+                _commentWrapper.loadEditor('content');
             }
             
             // Reset dragging to false.
@@ -5925,7 +5918,7 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
             }
             function initializeAnnotationTouchscreen(rect,svg,coordinates){
                 var clientX=(0,_utils.roundDigits)(coordinates.x,4);
-                var clientY=(0,_utils.roundDigits)(coordinates.y,4);
+                var clientY=(0,_utils.roundDigits)(coordinates.y,4);                
                 return Object.assign({type:'point'},(0,_utils.scaleDown)(svg,{x:clientX-((0,_utils.roundDigits)(rect.left,4)),y:clientY-((0,_utils.roundDigits)(rect.top,4))}));
             }
             /**
@@ -6186,10 +6179,12 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                     }
                     renderRect(_type,[{top:parseInt(overlay.style.top,10)+rect.top,left:parseInt(overlay.style.left,10)+rect.left,width:parseInt(overlay.style.width,10),height:parseInt(overlay.style.height,10)}],null);
                     
+                    _commentWrapper.loadEditor('content');
                     [textarea,data] = (0,_commentWrapper.openComment)(e,handleCancelClick,handleSubmitClick,handleToolbarClick,handleSubmitBlur,_type);
                 }else if((rectsSelection=getSelectionRects()) && _type!=='area'){
                     renderRect(_type,[].concat(_toConsumableArray(rectsSelection)).map(function(r){return{top:r.top,left:r.left,width:r.width,height:r.height};}),null);
                     
+                    _commentWrapper.loadEditor('content');
                     [textarea,data] = (0,_commentWrapper.openComment)(e,handleCancelClick,handleSubmitClick,handleToolbarClick,handleSubmitBlur,_type);
                 }else{
                     enableRect(_type);
@@ -6339,7 +6334,8 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                 }else if(type==='strikeout'){
                     color='rgb(0,84,159)';
                 }
-            }// Initialize the annotation
+            }
+            // Initialize the annotation
             annotation={type:type,color:color,rectangles:[].concat(_toConsumableArray(rects)).map(function(r){var offset=0;if(type==='strikeout'){offset=r.height/2;}return(0,_utils.scaleDown)(svg,{y:r.top+offset-rect.top,x:r.left-rect.left,width:r.width,height:r.height});}).filter(function(r){return r.width>0&&r.height>0&&r.x>-1&&r.y>-1;})};// Short circuit if no rectangles exist
             if(annotation.rectangles.length===0){
                 return;
@@ -6358,7 +6354,6 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
             }
             return annotation;
         }
-
         
         /**
         * Save a rect annotation
@@ -6401,7 +6396,8 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                                 document.querySelector('.toolbar').removeEventListener('click',handleToolbarClick);
                                 //simulate an click on cursor
                                 document.querySelector('button.cursor').click();
-                                (0,_commentWrapper.showCommentsAfterCreation)(annotation.uuid);
+                                (0,_commentWrapper.showCommentsAfterCreation)(annotation.uuid);                                
+                                //_commentWrapper.loadEditor('content');
                             })
                             .catch(function(){
                                 //if there is an error in addComment, the annotation should be deleted!
@@ -6776,6 +6772,7 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
             exports.closeComment = closeComment;
             exports.showCommentsAfterCreation = showCommentsAfterCreation;
             exports.openCommentTouchscreen = openCommentTouchscreen;
+            exports.loadEditor = loadEditor;
             var _PDFJSAnnotate=__webpack_require__(1);
             var _event=__webpack_require__(4);
             var _PDFJSAnnotate2=_interopRequireDefault(_PDFJSAnnotate);
@@ -6955,6 +6952,77 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
                 textarea.focus();
                 return [textarea,data];
             }
+
+            /**
+             * 
+             * @param {type} section is a part of class name of editor input: pdfannotator_${section}_editoritemid, pdfannotator_${section}_editorFormat. It could be
+             */
+            function loadEditor(section, action='add', uuid=0){
+                _ajaxloader.showLoader('.editor-loader-placeholder');
+                let addCommentEditor = document.querySelectorAll('#add_comment_editor_wrapper').length;
+                let editCommentEditor = document.querySelectorAll('#edit_comment_editor_wrapper').length;
+                // If one of the Moodle Editor is active, then remove it from DOM and reappend the textarea for editor needs and the input fields.
+                if(addCommentEditor > 0 && action === "add") {                    
+                    templates.render('mod_pdfannotator/add_comment_editor')
+                    .then(function(html, js) {
+                        let commentListForm = document.querySelectorAll('#comment-list-form')[0];
+                        commentListForm.appendChild(html);
+                        return html;
+                    })
+                    .catch(notification.exception)
+                    .then(function(html) {
+                        $('input').remove('[name="input_value_editor"]');
+                        let args = {'section': section, 'cmid': _cm.id};
+                        Fragment.loadFragment('mod_pdfannotator', 'open_editor', _contextId, args)
+                        .done(function(html, js) {
+                            _ajaxloader.hideLoader('.editor-loader-placeholder');              
+                            if (!html) {
+                                throw new TypeError("Invalid HMTL Input");
+                            }
+                            templates.replaceNode(document.getElementById('editor-commentlist-inputs'), html, js);
+                            return html;
+                        }.bind(this))
+                        .catch(notification.exception);
+                    });
+                } else if(editCommentEditor > 0 && action === "edit") {
+                    templates.render('mod_pdfannotator/edit_comment_editor')
+                    .then(function(html, js) {
+                        let editForm = document.querySelectorAll(`edit${uuid}`)[0];
+                        editForm.appendChild(html);
+                        return html;
+                    })
+                    .catch(notification.exception)
+                    .then(function() {
+                        $('input').remove('[name="input_value_editor"]');
+                        let args = {'section': section, 'cmid': _cm.id};
+                        Fragment.loadFragment('mod_pdfannotator', 'open_editor', _contextId, args)
+                        .done(function(html, js) {
+                            _ajaxloader.hideLoader('.editor-loader-placeholder');              
+                            if (!html) {
+                                throw new TypeError("Invalid HMTL Input");
+                            }
+                            templates.replaceNode(document.getElementById('editor-commentlist-inputs'), html, js);
+                            return html;
+                        }.bind(this))
+                        .catch(notification.exception);
+                    });
+                } else {
+                    // nothing to do.
+                }
+                
+                /* $('input').remove('[name="input_value_editor"]');
+                let args = {'section': section, 'cmid': _cm.id};
+                Fragment.loadFragment('mod_pdfannotator', 'open_editor', _contextId, args)
+                .done(function(html, js) {
+                    _ajaxloader.hideLoader('.editor-loader-placeholder');              
+                    if (!html) {
+                        throw new TypeError("Invalid HMTL Input");
+                    }
+                    templates.replaceNode(document.getElementById('editor-commentlist-inputs'), html, js);
+                    return html;
+                }.bind(this))
+                .catch(notification.exception) */
+            }
             
     /***/},
     /* 36 *//*OWN Module! To show and hide ajaxloader*/
@@ -6970,10 +7038,10 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
              * hides the loading animation
              * @returns {undefined}
              */
-            function hideLoader(){
+            function hideLoader(selector='.comment-list-container'){
                 let loader = document.querySelector('#ajaxLoaderCreation');
                 if(loader !== null){
-                    let commentContainer = document.querySelector('.comment-list-container');
+                    let commentContainer = document.querySelector(`${selector}`);
                     commentContainer.removeChild(loader);
                 }
             }
@@ -6982,8 +7050,8 @@ function startIndex(Y,_cm,_documentObject,_contextId, _userid,_capabilities, _to
              * Shows an loading animation in the comment wrapper
              * @returns {undefined}
              */
-            function showLoader(){
-                let commentContainer = document.querySelector('.comment-list-container');
+            function showLoader(selector='.comment-list-container'){
+                let commentContainer = document.querySelector(`${selector}`);
                 commentContainer.innerHTML = '';
                 let img = document.createElement('img');
                 img.id = "ajaxLoaderCreation";
diff --git a/shared/locallib.js b/shared/locallib.js
index 5c1a9de6e7077fc0aca90d816a5fd89a7c5a001a..bc75be5d828c5c69bad36dc53d8a87d0de36b83e 100644
--- a/shared/locallib.js
+++ b/shared/locallib.js
@@ -224,30 +224,4 @@ function checkOnlyOneCheckbox( Y ) {
             }
         });
     }
-}
-
-
-/**
- * Input draftitemid to the input-tag in comment_list_form.
- */
- function inputDraftItemID(Y, draftitemid, editorformat, classname) {
-    let elem = document.getElementsByClassName(classname);
-    for (let editorwrap of elem) {
-        let match = '';
-        if(classname.match('editcomment')) {
-            match = 'editcomment';
-        } else if (classname.match('commentlist')) {
-            match = 'content';
-        } else {
-            return false;
-        }
-        if(editorwrap.getElementsByClassName(`pdfannotator_${match}_editoritemid`).length === 0) {
-            let sibling1 = `<input class="pdfannotator_${match}_editoritemid" type="hidden" value=${draftitemid}>`
-            editorwrap.insertAdjacentHTML("afterend", sibling1);
-        }
-        if(editorwrap.getElementsByClassName('pdfannotator_${match}_editorformat').length === 0) {
-            let sibling2 = `<input class="pdfannotator_${match}_editorformat" id="menupdfannotator_${match}_editorformat" type="hidden" value=${editorformat}>`;
-            editorwrap.insertAdjacentHTML("afterend", sibling2);
-        }
-    };
 }
\ No newline at end of file
diff --git a/styles.css b/styles.css
index 8ab8c73fea5cb0b8e9ac525b24ef3ddefa1588c1..4195952ce0d3b38faaad08e4dfb4aee5d20d7e78 100644
--- a/styles.css
+++ b/styles.css
@@ -1248,4 +1248,8 @@ header, section, footer, aside, nav, main, article, figure {
 .path-mod-pdfannotator [contenteditable] {
     -webkit-user-select: text;
     user-select: text;
+}
+
+.path-mod-pdfannotator #id_pdfannotator_content {
+    display: none !important;
 }
\ No newline at end of file
diff --git a/templates/add_comment_editor.mustache b/templates/add_comment_editor.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..22a56a4f82fa3ee75727885aa340f528f55e6368
--- /dev/null
+++ b/templates/add_comment_editor.mustache
@@ -0,0 +1,5 @@
+<div id="add_comment_editor_wrapper"> {{! necessary for atto-editor }}
+    <textarea id="id_pdfannotator_content" placeholder="{{# str }} addAComment, pdfannotator {{/ str }}" cols="40" rows="3"></textarea>                 
+    <div id="editor-commentlist-inputs"></div>
+    <div class="editor-loader-placeholder"></div>
+</div>
\ No newline at end of file
diff --git a/templates/comment.mustache b/templates/comment.mustache
index d9fb718d1e9997c1bc74ce8870502d7e388fc3a2..ff781d1e3ba2bc5d98c82506555647e048116d8b 100644
--- a/templates/comment.mustache
+++ b/templates/comment.mustache
@@ -57,9 +57,10 @@
                 {{#displayhidden}}<span id="taghidden{{uuid}}" class="tag tag-info">{{# str }} hiddenforparticipants, pdfannotator {{/ str }}</span>{{/displayhidden}}
 
                 <form id="edit{{ uuid }}" class="edit-comment-form" style="display:none;">
-                    <div> {{! necessary for atto-editor }}
+                    <div id="editor_edit_wrapper"> {{! necessary for atto-editor }}
                         <textarea id="editarea{{ uuid }}" placeholder="" cols="40" rows="3">{{{ displaycontent }}}</textarea>
                         <div class="editor-editcomment-inputs{{ uuid }}"></div>
+                        <div class="editor-loader-placeholder"></div>
                     </div>
                     <input id="commentSubmit" class="owner btn btn-primary mb-1" type="submit" value="{{# str }} editButton, pdfannotator {{/ str }}">
                     <input id="commentCancel" class="owner btn btn-secondary mb-1" type="reset" value="{{# str }} cancelButton, pdfannotator {{/ str }}" >
diff --git a/templates/edit_comment_editor.mustache b/templates/edit_comment_editor.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..2abb33320d6f6c3023cf6b9eaefb276bda381d23
--- /dev/null
+++ b/templates/edit_comment_editor.mustache
@@ -0,0 +1,5 @@
+<div id="edit_comment_editor_wrapper"> {{! necessary for atto-editor }}
+    <textarea id="editarea{{ uuid }}" placeholder="" cols="40" rows="3">{{{ displaycontent }}}</textarea>
+    <div class="editor-editcomment-inputs{{ uuid }}"></div>
+    <div class="editor-loader-placeholder"></div>
+</div>
\ No newline at end of file
diff --git a/templates/index.mustache b/templates/index.mustache
index f43d627e1bc0a38f81ad2192e843e1a47ea2dc8f..658d8954bc5218b76a382c6586fa5bccfaaf00c0 100644
--- a/templates/index.mustache
+++ b/templates/index.mustache
@@ -129,9 +129,10 @@
 
                 </div>
                 <form id="comment-list-form" class="comment-list-form" style="display:none;">
-                    <div> {{! necessary for atto-editor }}
+                    <div id="editor_wrapper"> {{! necessary for atto-editor }}
                         <textarea id="id_pdfannotator_content" placeholder="{{# str }} addAComment, pdfannotator {{/ str }}" cols="40" rows="3"></textarea>                 
-                        <div class="editor-commentlist-inputs"></div>
+                        <div id="editor-commentlist-inputs"></div>
+                        <div class="editor-loader-placeholder"></div>
                     </div>
                     <div id="anonymousDiv" class="row-fluid row">
                         <input type="checkbox" name="visibility" value="anonymous" id="anonymousCheckbox" class="pdfannotator-radio" style="width:auto;"><label id="anonymousLabel" for="anonymousCheckbox">{{# str }} sendAnonymous, pdfannotator {{/ str }}</label>
diff --git a/version.php b/version.php
index 2182b1cb6c1b26c46e7d1655b3e4493aa39e7ea6..10465647309ce96f061d50f7f198cdb7e76d21f9 100644
--- a/version.php
+++ b/version.php
@@ -25,7 +25,7 @@
 defined('MOODLE_INTERNAL') || die();
 
 $plugin->component = 'mod_pdfannotator';
-$plugin->version   = 2022090600;
+$plugin->version   = 2022090800;
 $plugin->release  = 'PDF Annotator v1.4 release 11';
 $plugin->requires  = 2021051700;
 $plugin->maturity  = MATURITY_STABLE;