diff --git a/assets/js/common/functionsSchema.js b/assets/js/common/functionsSchema.js index a3b9082e..8c12115f 100644 --- a/assets/js/common/functionsSchema.js +++ b/assets/js/common/functionsSchema.js @@ -556,6 +556,13 @@ var ComunicWeb = { //TODO : implement }, + /** + * Friends user interface + */ + ui: { + //TODO: implement + }, + /** * Friends interface */ diff --git a/assets/js/components/friends/listModal.js b/assets/js/components/friends/listModal.js index 3729a1dd..b239d318 100644 --- a/assets/js/components/friends/listModal.js +++ b/assets/js/components/friends/listModal.js @@ -255,97 +255,15 @@ ComunicWeb.components.friends.listModal = { //Display each friend list.forEach(friend => { - //Get informations about the friend - const friendID = friend.ID_friend; - - //Create friend contener - const friendContener = createElem2({ - appendTo: listTarget, - type: "div", - class: "friend" - }); - - //Create user link - const userLink = createElem2({ - appendTo: friendContener, - type: "a" - }); - - //Add user account image - createElem2({ - appendTo: userLink, - type: "img", - src: users["user-" + friendID].accountImage - }); - - //Add users name - createElem2({ - appendTo: userLink, - type: "div", - class: "friends-name", - innerHTML: userFullName(users["user-" + friendID]) - }); - - //Make the link button lives - userLink.onclick = function(){ - - //Open user page - openUserPage(userIDorPath(users["user-" + friendID])); - - //Close all modals - $(".modal").modal("hide"); - - } - - //Check if the friendship has been accepted or not - - //Display following state - - //Check if the user can post text on user page - - //Offer to delete friendship - const deleteLink = createElem2({ - appendTo: friendContener, - 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 - friendContener.style.visibility = "hidden"; - ComunicWeb.components.friends.interface.remove_friend(friendID, function(result){ - - //Make friend contener visible - friendContener.style.visibility = "visible"; - - //Check for errors - if(result.error){ - ComunicWeb.common.notificationSystem.showNotification("Could not delete friend !", "danger"); - return; - } - - //Delete the element - friendContener.remove(); - - }); - - })); - - } + //Display the friend + ComunicWeb.components.friends.ui.show_personnal_friend(listTarget, friend, users["user-"+friend.ID_friend]); }); }); - } + }, + + }; \ No newline at end of file diff --git a/assets/js/components/friends/ui.js b/assets/js/components/friends/ui.js new file mode 100644 index 00000000..98249a7e --- /dev/null +++ b/assets/js/components/friends/ui.js @@ -0,0 +1,174 @@ +/** + * 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 contener, if required + if(target.className == "friend"){ + var friendContener = target; + emptyElem(friendContener); + } + else + var friendContener = createElem2({ + appendTo: target, + type: "div", + class: "friend" + }); + + //Get informations about the friend + const friendID = friend.ID_friend; + + //Create user link + const userLink = createElem2({ + appendTo: friendContener, + 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"); + + } + + //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: friendContener, + type: "input", + elemType: "button", + class: "btn btn-danger", + value: "Refuser" + }); + rejectRequestBtn.setAttribute("data-accept-request", "false"); + + add_space(friendContener); + + //Accept + var acceptRequestBtn = createElem2({ + appendTo: friendContener, + type: "button", + class: "btn btn-success", + innerHTML: "Accepter" + }); + acceptRequestBtn.setAttribute("data-accept-request", "true"); + + add_space(friendContener); + + //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){ + friendContener.remove(); + } + else { + + //Display again the friend + friend.accepted = 1; + ComunicWeb.components.friends.ui.show_personnal_friend(friendContener, friend, user); + } + + }); + + }; + + acceptRequestBtn.onclick = respond; + rejectRequestBtn.onclick = respond; + } + + else { + + //Display following state + + //Check if the user can post text on user page + } + + + + //Offer to delete friendship + const deleteLink = createElem2({ + appendTo: friendContener, + 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 + friendContener.style.visibility = "hidden"; + ComunicWeb.components.friends.interface.remove_friend(friendID, function(result){ + + //Make friend contener visible + friendContener.style.visibility = "visible"; + + //Check for errors + if(result.error){ + ComunicWeb.common.notificationSystem.showNotification("Could not delete friend !", "danger"); + return; + } + + //Delete the element + friendContener.remove(); + + }); + + })); + } + + } + +} \ No newline at end of file diff --git a/system/config/dev.config.php b/system/config/dev.config.php index f66426da..0bbb62d3 100644 --- a/system/config/dev.config.php +++ b/system/config/dev.config.php @@ -214,6 +214,7 @@ class Dev { //Friends components "js/components/friends/friendsList.js", "js/components/friends/friendsBar.js", + "js/components/friends/ui.js", "js/components/friends/listModal.js", "js/components/friends/interface.js", "js/components/friends/utils.js",