/** * Comments form * * @author Pierre HUBERT */ ComunicWeb.components.comments.form = { /** * Display comments creation form * * @param {number} postID The ID of the target post * @param {HTMLElement} target The target for the form */ display: function(postID, target){ //Check if we are creating a new comment of or reseting an existing one if(target.className != "comment-creation-form"){ //Create form container var commentForm = createElem2({ appendTo: target, type: "form", class: "comment-creation-form" }); } else { //Reset current form emptyElem(target); var commentForm = target; } //Create input group var inputGroup = createElem2({ appendTo: commentForm, type: "div", class: "input-group input-group-sm" }); //Add text input var newCommentText = createElem2({ appendTo: inputGroup, type: "input", elemType: "text", class: "form-control", placeholder: lang("comments_form_input_placeholder"), name: "content" }); newCommentText.maxLength = 255; //Add button group var buttonsGroup = createElem2({ appendTo: inputGroup, type: "span", class: "input-group-btn" }); //Add emoji pick button var addEmojieLabel = createElem2({ appendTo: buttonsGroup, type: "label", class: "comment-emoji-select" }); var imageLabel = createElem2({ appendTo: addEmojieLabel, type: "a", class: "btn btn-flat", innerHTML: "" }); //Add a picker on the label ComunicWeb.components.emoji.picker.addPicker(newCommentText, addEmojieLabel); //Add image pick button var addImageLabel = createElem2({ appendTo: buttonsGroup, type: "label", class: "comment-image-select" }); var imageFile = createElem2({ appendTo: addImageLabel, type: "input", elemType: "file", name: "image" }); var imageButton = createElem2({ appendTo: addImageLabel, type: "a", class: "btn btn-flat", innerHTML: "" }); //Add send button var sendButton = createElem2({ appendTo: buttonsGroup, type: "button", class: "btn btn-default btn-flat", innerHTML: lang("comments_form_send") }); //Catch form when submitted commentForm.onsubmit = function(){ //Check for image var hasImage = imageFile.files.length > 0; //Check the comment if(!hasImage && newCommentText.value < 5){ ComunicWeb.common.notificationSystem.showNotification(lang("comments_form_err_invalid_comment"), "danger"); return false; } //Lock send button sendButton.disabled = true; //Prepare the request var formData = new FormData(); formData.append("content", newCommentText.value); //Check for image if(imageFile.files.length > 0) formData.append("image", imageFile.files[0], imageFile.files[0].name); //Send the request ComunicWeb.components.comments.interface.create(postID, formData, function(result){ //Unlock send button sendButton.disabled = false; //Check for errors if(result.error){ ComunicWeb.common.notificationSystem.showNotification(lang("comments_form_err_create_comment"), "danger"); return; } //Reset the creation form ComunicWeb.components.comments.form.display(postID, commentForm); }); return false; } }, }