ComunicWeb/assets/js/components/menuBar/authenticated.js

142 lines
4.1 KiB
JavaScript
Raw Normal View History

/**
* Menubar for authenticated users complements
*
* @author Pierre HUBERT
*/
ComunicWeb.components.menuBar.authenticated = {
/**
* Add authenticated user specific elements
*
* @param {HTMLElement} container The container element of the Menubar
*/
addElements: function(container){
//Create an auto-collapsed element
var navbarCollapse = createElem("div", container);
navbarCollapse.id = "navbar-collapse";
2017-05-26 09:38:37 +00:00
navbarCollapse.className = "navbar-collapse pull-left collapse";
//Create navbar elements list
2017-05-26 09:38:37 +00:00
var navbarCollapseElemList = createElem("ul", navbarCollapse);
navbarCollapseElemList.className = "nav navbar-nav";
//Add search form
this.addSearchForm(navbarCollapseElemList);
//Navbar right elements
var navbarRight = createElem("div", container);
navbarRight.className = "navbar-custom-menu";
var navbarRightElemList = createElem("ul", navbarRight);
navbarRightElemList.className = "nav navbar-nav";
2017-05-25 13:06:01 +00:00
//Add user name
2017-05-26 09:38:37 +00:00
this.addUserName(navbarRightElemList);
2017-05-25 13:06:01 +00:00
//Add dropdown menu
2017-05-26 09:38:37 +00:00
this.addDropdown(navbarRightElemList);
},
/**
* Add dropdown menu
*
* @param {HTMLElement} navbarElem The target navbarlist element
2017-05-25 13:06:01 +00:00
* @return {HTMLElement} The dropdown content element
*/
addDropdown: function(navbarElem){
//Create dropdown menu
var dropdown = createElem("li", navbarElem);
2017-05-26 09:38:37 +00:00
dropdown.className = "dropdown dropdown-user-menu-action";
//Add dropdown button
var dropdownButton = createElem("a", dropdown);
dropdownButton.className = "dropdown-toggle";
dropdownButton.setAttribute("data-toggle", "dropdown");
2017-05-25 12:06:37 +00:00
//Add dropdown button icon
var dropdownButtonIcon = createElem("i", dropdownButton);
dropdownButtonIcon.className = "fa fa-gear";
2017-05-25 13:06:01 +00:00
//Add space
2017-05-25 12:06:37 +00:00
dropdownButton.innerHTML += " ";
//Add dropdown button arrow
var dropdownButtonArrow = createElem("span", dropdownButton);
dropdownButtonArrow.className = "caret";
//Create dropdown menu content
var dropdownContent = createElem("ul", dropdown);
dropdownContent.className = "dropdown-menu"
dropdownContent.setAttribute("role", "menu");
//Add logout link
var logoutButton = createElem("li", dropdownContent);
var logoutButtonLink = createElem("a", logoutButton);
logoutButtonLink.innerHTML = "Logout";
2017-05-25 11:57:38 +00:00
logoutButton.onclick = function(){openPage("logout")};
2017-05-25 13:06:01 +00:00
//Return dropdown content element
return dropdownContent;
},
/**
* Add user name element
*
* @param {HTMLElement} navbarElem The target navbarlist element
* @return {HTMLElement} The user element
*/
addUserName: function(navbarElem){
//Create user element
var userelement = createElem("li", navbarElem);
userelement.className = "user-menu";
//Add user link element
var userlinkelement = createElem("a", userelement);
//Add user image
var userimage = createElem("img", userlinkelement);
userimage.className = "user-image";
userimage.src = ComunicWeb.__config.assetsURL + "img/defaultAvatar.png";
//Add user name
var userNameElem = createElem("span", userlinkelement);
2017-05-26 09:38:37 +00:00
userNameElem.className = "hidden-xs";
2017-05-25 13:06:01 +00:00
userNameElem.innerHTML = "Loading...";
//Make a request to get informations about the user
2017-05-25 13:25:39 +00:00
ComunicWeb.user.getUserInfos.getUserInfos("current", (function(userInfos){
//Change user name
userNameElem.innerHTML = userInfos.firstName + " "+ userInfos.lastName;
//Change avatar url
userimage.src = userInfos.accountImage;
}));
2017-05-25 13:06:01 +00:00
},
2017-05-26 09:38:37 +00:00
/**
* Add search form element
*
* @param {HTMLElement} navbarElem The target navbarlist element
* @return {HTMLElement} The user element
*/
addSearchForm: function(navbarElem){
//Create form element
var searchForm = createElem("form", navbarElem.parentNode);
searchForm.className = "navbar-form navbar-left";
searchForm.setAttribute("role", "search");
//Create form group
var formGroup = createElem("div", searchForm);
formGroup.className = "form-group";
//Create search input
var searchInput = createElem("input", formGroup);
searchInput.className = "form-control";
searchInput.placeholder = "Search...";
searchInput.type = "text";
searchInput.id = "navbar-search-input";
}
};