/** * Comunic WebApp schema * * @author Pierre HUBERT */ /** * ComunicWeb main object */ var ComunicWeb = { /** * Configuration inclusion */ __config: ComunicConfig, /** * List of available pages */ pagesList:{}, /** * Common functions */ common:{ /** * Application system functions */ system:{ /** * Initializate the application */ init: function(openPage){}, /** * Restart the application */ restart: function(){}, /** * Reset the application */ reset: function(complete, openPage){}, }, /** * API functions */ api: { /** * Make an API request */ makeAPIrequest: function(apiURI, params, requireLoginTokens, nextAction){}, }, /** * Global cache management system */ cacheManager:{ //TODO : implement }, /** * Langs functions */ langs: { /** * Return current language */ getCurrentLanguage: function(){}, /** * Include and install specified language */ installLanguage: function(languageID){}, /** * Initializate languages */ initLanguages: function(){}, /** * Return a string in correct language */ getTranslatedText: function(stringName, stringParams){}, }, /** * Messages functions */ messages: { /** * Create and return a callout element */ createCalloutElem: function(calloutTitle, calloutMessage, calloutType){}, }, /** * Error functions */ error:{ /** * Submit an error */ submitError: function(errorLevel, errorMessage, errorCode, errorData){}, /** * Handle and show a fatal error */ fatalError: function(errorMessage, errorCode, errorData){}, /** * Handle a 404 not found error */ pageNotFound: function(additionnalData, targetElement){}, }, /** * URL functions */ url:{ /** * Return current URL opened on the website */ getCurrentWebsiteURL: function(){}, /** * Change the current website URI */ changeURI: function(newTitle, newURI){}, }, /** * Page functions */ page: { /** * Empty current page */ emptyPage: function(createWrapper){}, /** * Show a full wait splash screen * * @param {String} message A message to explain the reason of the splash screen (optionnal) */ showWaitSplashScreen: function(message){}, /** * Show a transparent wait splash screen */ showTransparentWaitSplashScreen: function(target){}, /** * Open a page */ openPage: function(pageURI, additionnalData){}, /** * Prepare a template load by specifying datas */ prepareLoadTemplate: function(){}, /** * Load, parse and show an HTML template */ getAndShowTemplate: function(targetElem, dataTemplate, templateURI, nextAction, cleanContener){}, /** * Convert a JSON object into html elements */ convertJSONobjectTOhtmlElement: function(parentNodeChilds, values){}, /** * Get and show a JSON template */ getAndShowJSONtemplate: function(targetElem, templateURI, additionalData, afterParsingJSONtemplate, cleanContener){}, }, /** * Functions to check data input in forms */ formChecker: { /** * Check an input */ checkInput: function(input, inFormGroup){}, }, /** * Notification system */ notificationSystem: { /** * Display a notification */ showNotification: function(message, notifType, notifDuration, notifTitle){}, }, /** * Network common requests */ network: { /** * @var {object} Cache contener */ cache: {}, /** * Make a get request */ getRequest: function(url, cache, GETnextAction){}, /** * Empty network cache */ emptyCache: function(){}, /** * Update the status of the network */ setStatus: function(success){}, }, /** * Operations on JS files */ jsFiles:{ /** * Include a Javascript file */ includeFile: function(fileURL){}, /** * Execute some source code contained in a variable */ executeJSsource: function(source){}, }, /** * The date library */ date:{ //TODO: implement }, }, /** * Debug functions */ debug:{ /** * @var {Object} Internal log variable */ __log: {}, /** * Display message on browser console */ logMessage: function(message){}, /** * Save a new log message */ saveLogMessage: function(message){}, /** * Get log content in a string */ getLogContent: function(){}, /** * Display Comunic Logo on the developper console */ displayComunicLogo: function(){}, }, /** * User functions */ user:{ /** * Login tokens storage controller */ loginTokens: { /** * Set User tokens */ setUserTokens: function(tokens, storageType){}, /** * Check if there is any login tokens available */ checkLoginTokens: function(){}, /** * Get login tokens */ getLoginTokens: function(){}, /** * Perform user logout */ deleteLoginTokens: function(){}, }, /** * Manage user login */ userLogin: { /** * @var {Boolean} Store user login state (true by default) */ __userLogin: true, /** * @var {Integer} Store the current user ID */ __userID: 0, /** * Tell if user is logged in or not */ getUserLoginState: function(){}, /** * Get user ID (if logged in) */ getUserID: function(){}, /** * Try to get and store current user ID */ getCurrentUserId: function(afterGetCurrentUserID){}, /** * Refresh the user login state */ refreshLoginState: function(afterLogin){}, /** * Try to login user */ loginUser: function(usermail, userpassword, permanentLogin, afterLogin){}, /** * Logout user */ logoutUser: function(afterLogout){}, }, /** * Get user infos */ userInfos: { /** * @var {String} User infos cache */ usersInfos: {}, /** * Get user informations */ getUserInfos: function(userID, afterGetUserInfos, forceRequest){}, /** * Get multiple users informations */ getMultipleUsersInfos: function(usersID, afterGetUserInfos, forceRequest){}, /** * Empty user informations cache * Remove all entries from user informations cache */ emptyUserInfosCache: function(){}, /** * Given a query, search for users and return the result */ search: function(query, afterSearch){}, /** * Given user IDs (in an array) the function return their names in a string */ getNames: function(usersID, afterNames){}, /** * Empty users cache */ emptyCache: function(){}, }, }, /** * Application components */ components: { /** * Menubar */ menuBar: { /** * Menu bar object - common methods */ common:{ /** * Display menu bar */ display: function(){}, /** * Initializate a menubar */ init: function(menuContainer){}, /** * Reset a specified menubar */ reset: function(menuBar){}, }, /** * Not authenticated menu bar components */ notAuthenticated: { /** * Add not-authenticated user specific elements */ addElements: function(container){}, }, /** * Menubar for authenticated users complements */ authenticated:{ /** * Add authenticated user specific elements */ addElements: function(container){}, /** * Add dropdown menu */ addDropdown: function(navbarElem){}, /** * Add user friends toggle button */ addFriendListButton: function(navbarElem){}, /** * Add user name element */ addUserName: function(navbarElem){}, /** * Add search form element */ addSearchForm: function(navbarElem){}, }, }, /** * Mails caching component */ mailCaching: { /** * @var Mail caching variable name */ __mailCachingVarName: "lastLoginMail", /** * Get current cached value */ get: function(){}, /** * Set a new mail value */ set: function(mail){}, }, /** * Search form component */ searchForm: { //TODO : implement }, /** * Friends list */ friends: { /** * Friends list caching system */ list:{ //TODO : implement }, /** * Friends bar */ bar:{ //TODO : implement }, }, /** * Conversations */ conversations:{ /** * Conversations manager */ manager:{ //TODO : implement }, /** * Conversations list windo */ list:{ //TODO : implement }, /** * Conversations windows manager */ windows:{ //TODO : implement }, /** * Conversation chat window functions */ chatWindows: { //TODO : implement }, /** * Interface between conversation UI and the API */ interface:{ //TODO : implement }, /** * Opened conversations caching system */ cachingOpened:{ //TODO : implement }, /** * Conversation service file */ service:{ //TODO : implement }, /** * Conversations utilities */ utils:{ //TODO : implement } }, /** * User selector */ userSelect:{ //TODO : implement }, /** * Emoji functions */ emoji:{ /** * Emoji parser system */ parser: { //TODO : implement }, /** * Emojies list */ list: { //TODO : implement }, }, /** * Modern textarea handler */ textarea: { }, }, /** * Pages controllers */ pages:{ /** * Home page */ home: { /** * Common homes functions */ home:{ /** * Open home page */ openHomePage: function(additionnalData, targetElement){}, }, /** * Landing home page */ landingPage:{ /** * Display home landing page */ display: function(targetElement){}, } }, /** * User page */ userPage: { /** * Main user page */ main: { /** * Open user page */ open: function(params, target){}, }, }, /** * Login controller */ login:{ /** * Open login page */ openLoginPage: function(additionnalData, targetElement){}, /** * Perform user login */ loginSubmit: function(){}, /** * Display login error message * * @return {Boolean} True for a success */ displayLoginError: function(){}, }, /** * Logout controller */ logout: { /** * Open logout page and perform logout */ openLogoutPage: function(additionnalData, targetElement){}, }, }, };