/** * Friend user interface script * * @author Pierre HUBERT */ ComunicWeb.components.friends.ui = { /** * Display a single friend informations * * @param {HTMLElement} target The target to display the friend * @param {Object} friend Informations about the friendship * @param {Object} user Informations about the user */ show_personnal_friend: function(target, friend, user){ //Create friend container, if required if(target.className == "friend"){ var friendContainer = target; emptyElem(friendContainer); } else var friendContainer = createElem2({ appendTo: target, type: "div", class: "friend" }); //Get informations about the friend const friendID = friend.ID_friend; //Create user link const userLink = createElem2({ appendTo: friendContainer, type: "a" }); //Add user account image createElem2({ appendTo: userLink, type: "img", src: user.accountImage }); //Add users name createElem2({ appendTo: userLink, type: "div", class: "friends-name", innerHTML: userFullName(user) }); //Make the link button lives userLink.onclick = function(){ //Open user page openUserPage(userIDorPath(user)); //Close all modals $(".modal").modal("hide"); } //Create actions area var actionsOnFriendArea = createElem2({ appendTo: friendContainer, type: "div", class: "friends-actions" }); //Check if the friendship has been accepted or not if(friend.accepted == 0){ //Offer the user to accept or reject friendship request //Reject var rejectRequestBtn = createElem2({ appendTo: actionsOnFriendArea, type: "input", elemType: "button", class: "btn btn-danger", value: "Refuser" }); rejectRequestBtn.setAttribute("data-accept-request", "false"); add_space(actionsOnFriendArea); //Accept var acceptRequestBtn = createElem2({ appendTo: actionsOnFriendArea, type: "button", class: "btn btn-success", innerHTML: "Accepter" }); acceptRequestBtn.setAttribute("data-accept-request", "true"); add_space(actionsOnFriendArea); //Make the buttons lives var respond = function(){ //Check whether the request was accepted or not var accept = this.getAttribute("data-accept-request") == "true"; //Perform the request on the server ComunicWeb.components.friends.list.respondRequest(friendID, accept, function(r){ //Check for error if(r.error){ ComunicWeb.common.notificationSystem.showNotification("Could not respond to request !", "danger"); return; } if(!accept){ friendContainer.remove(); } else { //Update friendship informations ComunicWeb.components.friends.actions.refresh_single_personnal(friendID, friendContainer); } }); }; acceptRequestBtn.onclick = respond; rejectRequestBtn.onclick = respond; } else { //Display following state var followButton = createElem2({ appendTo: actionsOnFriendArea, type: "button", class: "btn btn-primary" }); if(friend.following == 0){ followButton.innerHTML = "Follow"; followButton.setAttribute("data-set-following", "true"); } else { followButton.innerHTML = " Following"; followButton.setAttribute("data-set-following", "false"); } add_space(actionsOnFriendArea); followButton.onclick = function(){ //Check if the request is to follow or not the user var follow = this.getAttribute("data-set-following") == "true"; //Lock button followButton.disabled = true; //Perform callback action ComunicWeb.components.friends.list.setFollowing(friendID, follow, function(r){ //Check for errors if(r.error){ ComunicWeb.common.notificationSystem.showNotification("Could not update follow state !", "danger"); } //Update friendship informations ComunicWeb.components.friends.actions.refresh_single_personnal(friendID, friendContainer); }); } //Check if the user can post text on user page var postTextsButton = createElem2({ appendTo: actionsOnFriendArea, type: "button", class: "btn btn-primary" }); if(friend.canPostTexts){ postTextsButton.innerHTML = " Post Texts"; postTextsButton.setAttribute("data-allow-post-texts", "false"); } else { postTextsButton.innerHTML = "Post Texts"; postTextsButton.setAttribute("data-allow-post-texts", "true"); } //Make the button lives postTextsButton.onclick = function(){ //Check out if we have to allow or disallow texts post var allow_post = this.getAttribute("data-allow-post-texts") == "true"; //Update the status ComunicWeb.components.friends.interface.set_can_post_texts(friendID, allow_post, function(r){ if(r.error) ComunicWeb.common.notificationSystem.showNotification("Could not update posts creation status !", "danger"); //Update friendship informations ComunicWeb.components.friends.actions.refresh_single_personnal(friendID, friendContainer); }); } } //Offer to delete friendship const deleteLink = createElem2({ appendTo: friendContainer, type: "a", innerHTML: "" }); //Make the delete button lives deleteLink.onclick = function(){ //Prompt user confirmation if(ComunicWeb.common.messages.confirm("Do you really want to delete this user from your friends list ?", function(confirm){ //Check if the user cancelled the operation if(!confirm) return; //Try to delete the friend from the list friendContainer.style.visibility = "hidden"; ComunicWeb.components.friends.interface.remove_friend(friendID, function(result){ //Make friend container visible friendContainer.style.visibility = "visible"; //Check for errors if(result.error){ ComunicWeb.common.notificationSystem.showNotification("Could not delete friend !", "danger"); return; } //Delete the element friendContainer.remove(); }); })); } } }