ComunicWeb/assets/js/pages/userPage/main.js

165 lines
3.5 KiB
JavaScript
Raw Permalink Normal View History

/**
* User page
*
* Display the profile of the user
*
* Main file
*
* @author Pierre HUBERT
*/
ComunicWeb.pages.userPage.main = {
/**
* Open user page
*
* @param {Object} params Parametres required to open the page
* @param {HTMLElement} target The target for the user page
*/
open: function(params, target){
//Check if a subfolder was specified or not
if(params.subfolder){
var user = params.subfolder;
//Check if there are also subfolder (which are then removed)
if(user.indexOf("/")){
user = user.split("/").shift();
}
} else {
var user = "me";
}
//Check if the user specified is an ID
if(user*1 == user){
this.openUserPage(user, params, target);
}
else {
//Check if we are opening user page
if(user === "me"){
if(signed_in()){
//Open current user page
openPage("user/"+userID());
}
else {
//Redirect to login page
openPage("login");
}
}
else {
//Search which page should be opened now
ComunicWeb.user.userInfos.getIDfromPath(user, function(id){
//The user was not found
if(id < 0){
ComunicWeb.common.error.pageNotFound(null, target);
}
else {
ComunicWeb.pages.userPage.main.openUserPage(id, params, target);
}
});
}
}
},
/**
* Open precise user page
*
* @param {Integer} id The ID of the user to open the page
* @param {Object} params Parametres required to open the page
* @param {HTMLElement} target Target of the user page
*/
openUserPage: function(id, params, target){
//Log action
log("Open user page : " + id);
//Fetch informations about the user
ComunicWeb.user.userInfos.getAdvancedInfos(id, function(response){
//Check for errors
if(response.error){
//Check if the page was not found
if(response.error.code == 404){
ComunicWeb.common.error.pageNotFound(params, target);
}
//Check if we are not allowed to get the informations
if(response.error.code == 401){
//Display access forbidden page
ComunicWeb.pages.userPage.accessForbidden.display(id, params, target);
}
}
else {
//Display user page
ComunicWeb.pages.userPage.main.displayUserPage(response, params, target);
}
});
},
/**
* Display a user page
*
* @param {Object} infos Informations about the user to display
2017-12-29 07:58:22 +00:00
* @param {Object} params Parameters required to open the page
* @param {HTMLElement} target Target of the user page
*/
displayUserPage: function(infos, params, target){
2017-12-23 13:52:01 +00:00
//Update page title
ComunicWeb.common.pageTitle.setTitle(infos.firstName + " " + infos.lastName);
2017-12-23 13:52:01 +00:00
//Create the section class content
var sectionContent = createElem2({
appendTo: target,
type: "section",
class: "content"
});
//Content row
var row = createElem2({
appendTo: sectionContent,
type: "div",
2018-03-25 07:43:39 +00:00
class: "row page-container"
2017-12-23 13:52:01 +00:00
});
//Create left column
var leftColumn = createElem2({
appendTo: row,
type: "div",
2019-05-18 15:57:49 +00:00
class: "col-md-4"
2017-12-23 13:52:01 +00:00
});
//Display profile informations
ComunicWeb.pages.userPage.profileInfos.display(infos, leftColumn);
2017-12-29 07:58:22 +00:00
//Create right column
const rightColumn = createElem2({
2017-12-29 07:58:22 +00:00
appendTo: row,
type: "div",
class: "col-md-8 user-page-right-column"
2017-12-29 07:58:22 +00:00
});
2018-01-04 17:51:49 +00:00
//Display post creation form if the user is allowed to do so
if(infos.can_post_texts == true)
ComunicWeb.components.posts.form.display("user", infos.userID, rightColumn);
2017-12-31 17:51:46 +00:00
//Display posts
2017-12-29 07:58:22 +00:00
ComunicWeb.pages.userPage.posts.display(infos, params, rightColumn);
}
}