/** * 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){}, /** * Make an API request with a prepared form data object */ makeFormDatarequest: function(apiURI, data, requireLoginTokens, nextAction){}, //TODO : implement }, /** * Global cache management system */ cacheManager:{ //TODO : implement }, /** * Langs functions */ langs: { /** * Return current language */ current: function(){}, /** * Initializate languages */ initLanguages: function(){}, //TODO : implement /** * Return a string in correct language */ getTranslatedText: function(stringName, stringParams){}, }, /** * Messages functions */ messages: { /** * Create and return a callout element */ createCalloutElem: function(calloutTitle, calloutMessage, calloutType){}, /** * Create and return a callout element */ createLoadingCallout: function(target){}, /** * Create dialog skeleton */ createDialogSkeleton: function(info){}, /** * Create and display a confirmation dialog */ confirm: function(message, callback){}, /** * Prompt the user to input a string */ inputString: function(title, message, defaultValue, callback){}, /** * Prompt the user to enter his password */ promptPassword: function(info){}, }, /** * 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){}, /** * Handles and display SyntaxtError */ syntaxtError: function(error, additional){}, }, /** * 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){}, /** * Refresh the current page */ refresh_current_page: function(){}, /** * Safely trigger URL update */ update_uri: function(title, uri){}, /** * Inform of page location update */ location_updated: function(new_location){}, /** * Prepare a template load by specifying datas */ prepareLoadTemplate: function(){}, /** * Load, parse and show an HTML template */ getAndShowTemplate: function(targetElem, dataTemplate, templateURI, nextAction, cleanContainer){}, /** * Convert a JSON object into html elements */ convertJSONobjectTOhtmlElement: function(parentNodeChilds, values){}, /** * Get and show a JSON template */ getAndShowJSONtemplate: function(targetElem, templateURI, additionalData, afterParsingJSONtemplate, cleanContainer){}, }, /** * Page title management */ pageTitle: { /** * Set a new title to the page */ setTitle: function(title){}, /** * Set new number of notifications */ setNotificationsNumber: function(number){} }, /** * 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 container */ 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){}, //TODO : implement }, /** * 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){}, /** * Get advanced informations about a user */ getAdvancedInfos: function(userID, callback){}, /** * Get the user ID specified by its folder name */ getIDfromPath: function(path, callback){}, /** * Get the ID or the path of a user, depending of what is available */ getIDorPath: function(userInfos){}, /** * Empty users cache */ emptyCache: function(){}, }, }, /** * Application components */ components: { /** * Account component */ account: { /** * Interface */ interface: { //TODO : implement }, /** * Account export */ export: { /** * UI controller */ ui: { //TODO : implement }, /** * Worker */ worker: { //TODO: implement }, }, }, /** * 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){}, //TODO : implement }, }, /** * Sidebar */ sideBar: { /** * Main sidebar file */ main: { //TODO : implement } }, /** * Pages bottom */ bottom: { /** * Bottom links */ links: [ //TODO : implement ], /** * Main bottom script file */ main: { //TODO : implement }, }, /** * Language picker */ langPicker: { //TODO : implement }, /** * 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 */ search: { /** * Search form */ form: { //TODO : implement }, /** * Search interface */ interface: { //TODO : implement }, /** * Search results UI */ ui: { //TODO : implement }, /** * Search utilities */ utils: { //TODO : implement }, }, /** * Settings component */ settings: { /** * Settings interface */ interface: { //TODO : implement }, /** * Settings helper */ helper: { //TODO : implement }, }, /** * Friends list */ friends: { /** * Friends list caching system */ list:{ //TODO : implement }, /** * Friends bar */ bar:{ //TODO : implement }, /** * Friends list modal box */ listModal: { //TODO : implement }, /** * Friends user interface */ ui: { //TODO: implement }, /** * Friends interface */ interface: { //TODO : implement }, /** * Friends utilities */ utils: { //TODO : implement }, /** * Friends actions */ actions: { //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 }, /** * Unread conversations list dropdown */ unreadDropdown: { //TODO : implementd }, /** * Conversation message editor */ messageEditor: { //TODO : implement }, }, /** * User selector */ userSelect:{ //TODO : implement }, /** * Emoji functions */ emoji:{ /** * Emoji parser system */ parser: { //TODO : implement }, /** * Emojies list */ list: { //TODO : implement }, /** * Emojie picker */ picker: { //TODO : implement }, }, /** * Likes handling */ like:{ /** * Like buttons */ button: { //TODO : implement }, /** * Likes API interface */ interface: { //TODO : implement } }, /** * Posts components */ posts: { /** * Visibility levels */ visibilityLevels: { //TODO : implement }, /** * Posts communication interface */ interface: { //TODO : implement }, /** * Posts UI */ ui: { //TODO : implement }, /** * Posts creation form */ form: { //TODO : implement }, /** * Post editor */ edit: { //TODO : implement }, /** * Post actions */ actions: { //TODO : implement } }, /** * Comments component */ comments: { /** * Comments UI interface */ ui:{ //TODO : implement }, /** * Comment actions */ actions: { //TODO : implement }, /** * Comments interface */ interface: { //TODO : implement }, /** * Comments creation form */ form: { //TODO : implement }, /** * Comments editor */ editor: { //TODO : implement }, /** * Comments utilities */ utils: { //TODO : implement } }, /** * Modern textarea handler */ textarea: { }, /** * Comunic specific text parser */ textParser: { //TODO : implement }, /** * Countdown timer */ countdown: { //TODO : implement }, /** * Movies functions */ movies: { /** * Movies communication interface */ interface: { //TODO : implement }, /** * Movies picker */ picker:{ //TODO : implement }, }, /** * Notifications components */ notifications: { /** * Notifications menu dropdown */ dropdown:{ //TODO : implement }, /** * Notification refresh service */ service: { //TODO : implement }, /** * Notifications interface */ interface: { //TODO : implement }, /** * Notifications UI */ ui: { //TODO : implement }, /** * Notification song system */ song: { //TODO : implement }, /** * Notifications utilities */ utils: { //TODO : implement } }, /** * Groups component */ groups: { /** * API interface */ interface: { //TODO : implement }, /** * Groups utilities */ utils: { //TODO : implement }, /** * Groups information */ info: { //TODO : implement }, }, /** * Virtual directories component */ virtualDirectory: { /** * API interface */ interface: { //TODO : implement }, }, /** * Dark Theme component */ darkTheme: { //TODO : implement }, /** * Incognito mode component */ incognito: { /** * Keyboard catcher */ keyboard: { //TODO : implement }, /** * Incognito management */ management: { //TODO : implement }, /** * UI management */ ui: { //TODO : implement }, }, /** * Calls component */ calls: { /** * Calls configuration */ __config: undefined, /** * Calls interface */ interface: { //TODO : implement }, /** * Calls controller */ controller: { //TODO : implement }, /** * Call window */ callWindow: { //TODO : implement }, /** * Current calls list */ currentList: { //TODO : implement }, /** * User media getter */ userMedia: { //TODO : implement }, /** * Ring screen */ ringScreen: { //TODO : implement }, /** * Calls utilities */ utils: { //TODO : implement }, }, /** * Easter egg : pacman */ pacman: { //TODO : implement }, }, /** * 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){}, /** * Open user page specified by user ID */ openUserPage: function(id, params, target){}, /** * Display a user page */ displayUserPage: function(infos, params, target){}, }, /** * Page with access forbidden */ accessForbidden: { /** * Display the page for user with forbidden access */ display: function(id, params, target){}, /** * Show basic user informations */ showBasicInfos: function(userInfos, target){}, }, /** * Handle the rendering of the friendship status */ friendshipStatus: { /** * Display the friendship status */ display: function(userID, target){}, //TODO : implement }, /** * Display user profile informations */ profileInfos: { //TODO : implement }, /** * Display user posts */ posts: { //TODO : implement }, }, /** * Post page */ postPage: { /** * Post page main script */ main: { //TODO: implement }, }, /** * Latest posts page */ latestPosts: { /** * Main script */ main: { //TODO: implement }, }, /** * Conversations page */ conversations: { /** * Main script */ main: { //TODO : implement }, /** * Conversations list pane */ listPane: { //TODO : implement }, /** * Conversation pane */ conversation: { //TODO : implement }, /** * Conversation page utilities */ utils: { //TODO : implement }, }, /** * Groups page */ groups: { /** * Groups page main script */ main: { //TODO : implement }, /** * Groups pages */ pages: { /** * Main page */ main: { //TODO : implement }, /** * Create a group page */ create: { //TODO : implement }, /** * Main group page */ group: { //TODO : implement }, /** * Settings page */ settings: { //TODO : implement }, /** * Group members page */ members: { //TODO : implement }, /** * Access to group forbidden page */ forbidden: { //TODO : implemement }, }, /** * Groups sections */ sections: { /** * Header section */ header: { //TODO : implement }, /** * Membership block */ membershipBlock: { //TODO : implement }, /** * Posts sections */ posts: { //TODO : implement }, /** * Follow block */ followBlock: { //TODO : implement }, }, }, /** * User settings page */ settings: { /** * Main script */ main: { //TODO : implement }, /** * Navigation pane */ navigationPane: { //TODO : implement }, /** * Settings sections list */ sectionsList: { //TODO : implement }, /** * Settings sections script */ sections: { /** * General section */ general: { //TODO : implement }, /** * Language section */ language: { //TODO : implement }, /** * Security section */ security: { //TODO : implement }, /** * Password section */ password: { //TODO : implement }, /** * Account image section */ accountImage: { //TODO : implement }, /** * Privacy section */ privacy: { //TODO : implement }, }, }, /** * 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(){}, }, /** * Create account controller */ createAccount: { //TODO : implement }, /** * Account created controller */ accountCreated: { //TODO : implement }, /** * Password forgotten page */ passwordForgotten: { /** * Main script */ main: { //TODO : implement }, /** * Ask user email step */ promptEmail: { //TODO : implement }, /** * Ask user reset option */ promptOption: { //TODO : implement }, /** * Option : send a mail to the admin */ mailAdmin: { //TODO : implement }, /** * Option : prompt security questions */ promptSecurityQuestions: { //TODO : implement }, }, /** * Password reset page */ resetPassword: { /** * Main script */ main: { //TODO : implement }, }, /** * Logout controller */ logout: { /** * Open logout page and perform logout */ openLogoutPage: function(additionnalData, targetElement){}, }, /** * Virtual directory pages */ virtualDirectory: { /** * Main page */ page: { //TODO : implement }, }, /** * Search page */ search: { /** * Main page */ main: { //TODO : implement }, }, }, };