diff --git a/assets/js/common/utils.js b/assets/js/common/utils.js index 8e05d115..fb565a95 100644 --- a/assets/js/common/utils.js +++ b/assets/js/common/utils.js @@ -32,6 +32,7 @@ function createElem(nodeType, appendTo){ * @info {HTMLElement} id The ID of the new element * @info {HTMLElement} title The title of the new element * @info {HTMLElement} src The src attribute of the new element + * @info {HTMLElement} innerHTML Specify the html content of the newly created element * @return {HTMLElement} The newly created element */ function createElem2(infos){ @@ -62,6 +63,10 @@ function createElem2(infos){ if(infos.src) newElem.src = infos.src; + //Specify node content + if(infos.innerHTML) + newElem.innerHTML = infos.innerHTML; + //Return newly created element return newElem; } diff --git a/assets/js/components/conversations/chatWindows.js b/assets/js/components/conversations/chatWindows.js index 673c870a..c2faa8ee 100644 --- a/assets/js/components/conversations/chatWindows.js +++ b/assets/js/components/conversations/chatWindows.js @@ -21,8 +21,12 @@ ComunicWeb.components.conversations.chatWindows = { //First, create the generic conversation window var infosBox = ComunicWeb.components.conversations.windows.create(infos.target.children[0]); + //Save conversation ID infosBox.conversationID = infos.conversationID; + //Change box root class name + infosBox.rootElem.className += " direct-chat"; + //Adapt close button behaviour infosBox.closeFunction = function(){ @@ -35,6 +39,31 @@ ComunicWeb.components.conversations.chatWindows = { infosBox.closeButton.onclick = infosBox.closeFunction; + + //Debug + infosBox.boxBody.innerHTML = "
Hello world

"; + + //Add button to get conversation members + infosBox.membersButton = createElem("button"); + infosBox.closeButton.parentNode.insertBefore(infosBox.membersButton, infosBox.closeButton); + infosBox.membersButton.type = "button"; + infosBox.membersButton.className = "btn btn-box-tool"; + infosBox.membersButton.setAttribute("data-toggle", "tooltip"); + infosBox.membersButton.setAttribute("data-widget", "chat-pane-toggle"); + infosBox.membersButton.title = "Conversation members"; + + //Add button icon + var buttonIcon = createElem("i", infosBox.membersButton); + buttonIcon.className = "fa fa-users"; + + //Add conversation members pane + var membersPane = createElem("div", infosBox.boxBody); + membersPane.className = "direct-chat-contacts"; + + //Add conversation members list + infosBox.membersList = createElem("ul", membersPane); + infosBox.membersList.className = "contacts-list"; + //Return informations about the chat window return infosBox; @@ -60,7 +89,72 @@ ComunicWeb.components.conversations.chatWindows = { var conversationTitle = createElem("span", infos.boxTitle); conversationTitle.innerHTML = " " + newName; + //Success + return true; + }, + + /** + * Update conversation members list + * + * @param {Object} conversation Informations about the conversation + * @return {Boolean} True for a success + */ + updateMembersList: function(conversation){ + + //First, make sure conversation members pane is empty + emptyElem(conversation.box.membersList); + + //Then process each user + var i = 0; + for(i in conversation.infos.members){ + if(conversation.membersInfos['user-'+conversation.infos.members[i]]){ + var memberInfos = conversation.membersInfos['user-'+conversation.infos.members[i]]; + + //Display user informations + var userLi = createElem("li", conversation.box.membersList); + var userLink = createElem("a", userLi); + + //Add user account image + var userImage = createElem("img", userLink); + userImage.className = "contacts-list-img"; + userImage.src = memberInfos.accountImage; + + //Add member informations + var memberInfosList = createElem2({ + type: "div", + appendTo: userLink, + class: "contacts-list-info", + }); + + //Add user name + var memberName = createElem2({ + type: "span", + appendTo: memberInfosList, + class: "contacts-list-name", + innerHTML: memberInfos.firstName + " " + memberInfos.lastName, + }); + + //Check if members is a moderator or not of the conversation + var memberStatus = conversation.infos.ID_owner == memberInfos.userID ? "Moderator" : "Member"; + + //Add member status + var memberStatus = createElem2({ + type: "span", + appendTo: memberInfosList, + class: "contats-list-msg", + innerHTML: memberStatus + }); + } + } + + //Enable slimscrooll + $(conversation.box.membersList).slimscroll({ + height: "100%", + color: "#FFFFFF" + }); + //Success return true; } + } \ No newline at end of file diff --git a/assets/js/components/conversations/manager.js b/assets/js/components/conversations/manager.js index 60b7124b..27d95658 100644 --- a/assets/js/components/conversations/manager.js +++ b/assets/js/components/conversations/manager.js @@ -152,6 +152,7 @@ ComunicWeb.components.conversations.manager = { //Peform a request to informations about the conversation ComunicWeb.components.conversations.interface.getInfosOne(conversationID, function(informations){ + //In case of error if(informations.error){ //Display error notification @@ -159,11 +160,31 @@ ComunicWeb.components.conversations.manager = { return false; } - //Change the name of the conversation - ComunicWeb.components.conversations.utils.getName(informations, function(conversationName){ - ComunicWeb.components.conversations.chatWindows.changeName(conversationName, conversationWindow); - }); + //Get informations about the members of the conversation + ComunicWeb.user.userInfos.getMultipleUsersInfos(informations.members, function(membersInfos){ + //Quit in case of error + if(informations.error){ + //Display error notification + ComunicWeb.common.notificationSystem.showNotification("Couldn't get informations about the conversation members !", "danger"); + return false; + } + + //Create conversation informations root object + var conversationInfos = { + box: conversationWindow, + membersInfos: membersInfos, + infos: informations + }; + + //Change the name of the conversation + ComunicWeb.components.conversations.utils.getName(informations, function(conversationName){ + ComunicWeb.components.conversations.chatWindows.changeName(conversationName, conversationWindow); + }); + + //Update conversation members informations + ComunicWeb.components.conversations.chatWindows.updateMembersList(conversationInfos); + }); }); //Success