diff --git a/assets/js/common/functionsSchema.js b/assets/js/common/functionsSchema.js index 5e4b9093..1cc0b42b 100644 --- a/assets/js/common/functionsSchema.js +++ b/assets/js/common/functionsSchema.js @@ -539,6 +539,13 @@ var ComunicWeb = { //TODO : implement }, + /** + * Conversation chat window functions + */ + chatWindows: { + //TODO : implement + }, + /** * Interface between conversation UI and the API */ @@ -552,6 +559,13 @@ var ComunicWeb = { cachingOpened:{ //TODO : implement }, + + /** + * Conversation service file + */ + service:{ + //TODO : implement + } }, /** diff --git a/assets/js/components/conversations/cachingOpened.js b/assets/js/components/conversations/cachingOpened.js index 64bfcd23..f5f012d6 100644 --- a/assets/js/components/conversations/cachingOpened.js +++ b/assets/js/components/conversations/cachingOpened.js @@ -54,6 +54,21 @@ ComunicWeb.components.conversations.cachingOpened = { //Save the new values var conversationsString = conversations.join(";"); sessionStorage.setItem(this.__varName, conversationsString); + + //Success + return true; + }, + + /** + * Check is a conversation ID is open or not + * + * @param {Integer} conversationID The ID of the conversation to check + * @return {Boolean} Depends of the presence of the conversation + */ + isopen: function(conversationID){ + var conversations = this.getAll(); + + return conversations.includes(conversationID.toString()); }, /** diff --git a/assets/js/components/conversations/chatWindows.js b/assets/js/components/conversations/chatWindows.js new file mode 100644 index 00000000..1ee9bf1a --- /dev/null +++ b/assets/js/components/conversations/chatWindows.js @@ -0,0 +1,42 @@ +/** + * Conversation chat window functions + * + * @author Pierre HUBERT + */ + +ComunicWeb.components.conversations.chatWindows = { + /** + * Create a new chat window + * + * @param {Object} infos Informations required for the new chat window + * @info {HTMLElement} target The target of the new chat window + * @info {Integer} conversationID The ID of the target conversation + * @return {Object} Informations about the new chat window + */ + create: function(infos){ + + //Log action + ComunicWeb.debug.logMessage("Create a new chat window"); + + //First, create the generic conversation window + var infosBox = ComunicWeb.components.conversations.windows.create(infos.target.children[0]); + + infosBox.conversationID = infos.conversationID; + + //Adapt close button behaviour + infosBox.closeFunction = function(){ + + //Remove root element + infosBox.rootElem.remove(); + + //Remove the conversation from opened ones + ComunicWeb.components.conversations.cachingOpened.remove(infosBox.conversationID); + } + + infosBox.closeButton.onclick = infosBox.closeFunction; + + //Return informations about the chat window + return infosBox; + + }, +} \ No newline at end of file diff --git a/assets/js/components/conversations/manager.js b/assets/js/components/conversations/manager.js index 4b8b8d5a..1a5b38e7 100644 --- a/assets/js/components/conversations/manager.js +++ b/assets/js/components/conversations/manager.js @@ -5,6 +5,12 @@ */ ComunicWeb.components.conversations.manager = { + + /** + * @var {String} The ID of the conversation contener + */ + __conversationsContenerID: "conversationsElem", + /** * Display conversations manager * @@ -13,7 +19,7 @@ ComunicWeb.components.conversations.manager = { display: function(){ //Try to get conversation manager - var conversationsContainerElem = byId("conversationsElem"); + var conversationsContainerElem = byId(this.__conversationsContenerID); //Check if element exists or not if(conversationsContainerElem){ @@ -27,7 +33,7 @@ ComunicWeb.components.conversations.manager = { //Create conversations manager element var conversationsContainerElem = createElem("div"); - conversationsContainerElem.id = "conversationsElem"; + conversationsContainerElem.id = this.__conversationsContenerID; //Insert the element at the right place var pageTarget = byId("pageTarget"); @@ -100,11 +106,23 @@ ComunicWeb.components.conversations.manager = { return false; } + //Check if the conversation is already open or not + if(ComunicWeb.components.conversations.cachingOpened.isopen(conversationID)){ + ComunicWeb.debug.logMessage("The conversation " + conversationID + " is already opened !"); + return false; + } + //Log action ComunicWeb.debug.logMessage("Opening conversation " + conversationID); //Save conversation ID in session storage - + ComunicWeb.components.conversations.cachingOpened.add(conversationID); + + //Create a conversation windows + ComunicWeb.components.conversations.chatWindows.create({ + target: byId(this.__conversationsContenerID), + conversationID: conversationID + }); //Success return true; diff --git a/assets/js/components/conversations/service.js b/assets/js/components/conversations/service.js new file mode 100644 index 00000000..2c3100ad --- /dev/null +++ b/assets/js/components/conversations/service.js @@ -0,0 +1,11 @@ +/** + * Conversation service file + * + * Ensure that the content of the conversations is up to date + * + * @author Pierre HUBER + */ + +ComunicWeb.components.conversations.service = { + +} \ No newline at end of file diff --git a/assets/js/components/conversations/windows.js b/assets/js/components/conversations/windows.js index 3b9a634f..072a8d81 100644 --- a/assets/js/components/conversations/windows.js +++ b/assets/js/components/conversations/windows.js @@ -56,6 +56,7 @@ ComunicWeb.components.conversations.windows = { var boxElements ={ rootElem: conversationBox, closeFunction: closeBox, + closeButton: closeButton, boxTitle: boxTitle, boxTools: boxTools, boxBody: boxBody, diff --git a/corePage/config/dev.config.php b/corePage/config/dev.config.php index f8242b8c..de3ea8ce 100644 --- a/corePage/config/dev.config.php +++ b/corePage/config/dev.config.php @@ -10,7 +10,7 @@ $config['pathAssets'] = $config['siteURL']."assets/"; //CSS files to include $config['CSSfiles'] = array( - //CSS files + //CSS files - adminLTE distribution / bootstrap / plugins "%PATH_ASSETS%3rdparty/adminLTE/bootstrap/css/bootstrap.min.css", "%PATH_ASSETS%3rdparty/adminLTE/plugins/font-awesome/css/font-awesome.min.css", "%PATH_ASSETS%3rdparty/adminLTE/plugins/ionicons/css/ionicons.min.css", @@ -20,30 +20,52 @@ $config['CSSfiles'] = array( "%PATH_ASSETS%3rdparty/adminLTE/dist/css/AdminLTE.min.css", "%PATH_ASSETS%3rdparty/adminLTE/dist/css/skins/_all-skins.min.css", - //App stylesheets + //App stylesheets - common stylesheets "%PATH_ASSETS%css/common/global.css", "%PATH_ASSETS%css/common/page/waitSplashScreen.css", "%PATH_ASSETS%css/common/network/networkError.css", //Components stylesheets + //Menubar stylesheet "%PATH_ASSETS%css/components/menuBar.css", + + //Searchform stylesheet "%PATH_ASSETS%css/components/searchForm.css", + + //Friendbar stylesheet "%PATH_ASSETS%css/components/friends/friendsBar.css", + + //Conversations stylesheet "%PATH_ASSETS%css/components/conversations/manager.css", "%PATH_ASSETS%css/components/conversations/windows.css", "%PATH_ASSETS%css/components/conversations/list.css", + + //User selector stylesheet "%PATH_ASSETS%css/components/userSelect/userSelect.css", ); //JS files to include (at the end of the page) $config['JSfiles'] = array( //Framework inclusions + //Jquery "%PATH_ASSETS%3rdparty/adminLTE/plugins/jQuery/jquery-2.2.3.min.js", + + //Bootstrap "%PATH_ASSETS%3rdparty/adminLTE/bootstrap/js/bootstrap.min.js", + + //JQuery UI "%PATH_ASSETS%3rdparty/adminLTE/plugins/jquery-ui/jquery-ui.min.js", + + //iCheck "%PATH_ASSETS%3rdparty/adminLTE/plugins/iCheck/icheck.min.js", + + //Slimscroll "%PATH_ASSETS%3rdparty/adminLTE/plugins/slimScroll/jquery.slimscroll.min.js", + + //Select2 "%PATH_ASSETS%3rdparty/adminLTE/plugins/select2/select2.min.js", + + //adminLTE script "%PATH_ASSETS%3rdparty/adminLTE/dist/js/app.min.js", //Bootstrap notify @@ -55,10 +77,12 @@ $config['JSfiles'] = array( //Functions schema "%PATH_ASSETS%js/common/functionsSchema.js", - //App scripts + //Pages list + "%PATH_ASSETS%js/pagesList.js", + + //App scripts -- common scripts "%PATH_ASSETS%js/common/cacheManager.js", "%PATH_ASSETS%js/common/network.js", - "%PATH_ASSETS%js/pagesList.js", "%PATH_ASSETS%js/common/api.js", "%PATH_ASSETS%js/common/errors.js", "%PATH_ASSETS%js/common/messages.js", @@ -66,26 +90,41 @@ $config['JSfiles'] = array( "%PATH_ASSETS%js/common/url.js", "%PATH_ASSETS%js/common/jsFiles.js", "%PATH_ASSETS%js/common/debug.js", - "%PATH_ASSETS%js/langs/en.inc.js", "%PATH_ASSETS%js/common/page.js", "%PATH_ASSETS%js/common/notifications.js", "%PATH_ASSETS%js/common/formChecker.js", "%PATH_ASSETS%js/common/date.js", "%PATH_ASSETS%js/common/system.js", + //Default langage + "%PATH_ASSETS%js/langs/en.inc.js", + //Components + //Mail caching "%PATH_ASSETS%js/components/mailCaching.js", + + //Search form "%PATH_ASSETS%js/components/searchForm/searchForm.js", + + //Main menubar "%PATH_ASSETS%js/components/menuBar/common.js", "%PATH_ASSETS%js/components/menuBar/notAuthenticated.js", "%PATH_ASSETS%js/components/menuBar/authenticated.js", + + //Friends components "%PATH_ASSETS%js/components/friends/friendsList.js", "%PATH_ASSETS%js/components/friends/friendsBar.js", + + //Private conversations "%PATH_ASSETS%js/components/conversations/manager.js", "%PATH_ASSETS%js/components/conversations/list.js", "%PATH_ASSETS%js/components/conversations/windows.js", + "%PATH_ASSETS%js/components/conversations/chatWindows.js", "%PATH_ASSETS%js/components/conversations/interface.js", + "%PATH_ASSETS%js/components/conversations/service.js", "%PATH_ASSETS%js/components/conversations/cachingOpened.js", + + //User selector "%PATH_ASSETS%js/components/userSelect/userSelect.js", //User scripts @@ -94,9 +133,14 @@ $config['JSfiles'] = array( "%PATH_ASSETS%js/user/userInfos.js", //Pages scripts + //Home page "%PATH_ASSETS%js/pages/home/home.js", "%PATH_ASSETS%js/pages/home/landingPage.js", + + //Login page "%PATH_ASSETS%js/pages/login.js", + + //Logout page "%PATH_ASSETS%js/pages/logout.js", //Create shortcuts for common functions