Retrieve group settings on the API

This commit is contained in:
Pierre HUBERT 2018-07-04 06:05:14 +02:00
parent 30696174f2
commit 218e9b6fbe
8 changed files with 147 additions and 3 deletions

View File

@ -0,0 +1,16 @@
/**
* Group settings stylesheet
*
* @author Pierre HUBERT
*/
.group-settings-container {
float: none;
margin: auto;
margin-top: 40px;
}
.group-settings-container .title {
text-align: center;
margin-bottom: 15px;
}

View File

@ -1219,6 +1219,13 @@ var ComunicWeb = {
//TODO : implement
},
/**
* Settings page
*/
settings: {
//TODO : implement
},
},
/**

View File

@ -50,6 +50,21 @@ ComunicWeb.components.groups.interface = {
id: id
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Get the settings of a group
*
* @param {Number} id The ID of the target group
* @param {Function} callback
*/
getSettings: function(id, callback){
//Perform the request over the API
var apiURI = "groups/get_settings";
var params = {
id: id
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
}
};

View File

@ -54,9 +54,12 @@ ComunicWeb.pages.groups.main = {
}
//Check which page to open
if(page == "group"){
if(page == "group")
ComunicWeb.pages.groups.pages.group.open(groupID, target);
}
else if(page == "settings")
ComunicWeb.pages.groups.pages.settings.open(groupID, target);
//Unrecognized page
else

View File

@ -21,7 +21,7 @@ ComunicWeb.pages.groups.pages.group = {
if(result.error){
//Check the code of the error
if(result.error.code == 404){
if(result.error.code == 401){
need_auth;//TODO : implement
}

View File

@ -0,0 +1,87 @@
/**
* Page settings
*
* @author Pierre HUBERT
*/
ComunicWeb.pages.groups.pages.settings = {
/**
* Open group settings page
*
* @param {Number} id The ID of the settings page
* @param {HTMLElement} target The target of the page
*/
open: function(id, target){
//Create settings container
var settingsContainer = createElem2({
appendTo: target,
type: "div",
class: "group-settings-container col-md-6"
});
//Add title
createElem2({
appendTo: settingsContainer,
type: "h2",
class: "title",
innerHTML: "Group settings"
});
//Display loading message
var loadingMsg = ComunicWeb.common.messages.createCalloutElem(
"Loading",
"Please wait while we retrieve the settings of the page...",
"info");
settingsContainer.appendChild(loadingMsg);
//Get the settings of the page
ComunicWeb.components.groups.interface.getSettings(id, function(result){
//Remove loading message
loadingMsg.remove();
//Check for error
if(result.error){
//Check if the user is not authorized to access the page
if(result.error.code == 401){
//The user is not authorized to see this page
settingsContainer.appendChild(ComunicWeb.common.messages.createCalloutElem(
"Access forbidden",
"You are not authorized to access these information !",
"danger"
));
}
//Else the page was not found
else {
settingsContainer.remove();
ComunicWeb.common.error.pageNotFound({}, target);
}
}
else {
//Display settings pages
ComunicWeb.pages.groups.pages.settings.display(id, result, target);
}
});
},
/**
* Display page settings
*
* @param {Number} id The ID of the target page
* @param {Object} settings The settings of the page
* @param {HTMLElement} target The target of the page
*/
display: function(id, settings, target){
alert(settings);
},
}

View File

@ -71,6 +71,20 @@ ComunicWeb.pages.groups.sections.header = {
type: "div",
innerHTML: '<i class="fa fa-group"></i> '+ info.number_members+' members'
});
//If the user is an admin, add a link to configure the page
if(signed_in() && info.membership == "administrator"){
var settingsLink = createElem2({
appendTo: secondColumn,
type: "div",
class: "a",
innerHTML: " <i class='fa fa-gear'></i>Settings"
});
settingsLink.addEventListener("click", function(e){
openPage("groups/" + info.id + "/settings");
});
}
},
};

View File

@ -221,6 +221,7 @@ class Dev {
"css/pages/groups/pages/main.css",
"css/pages/groups/pages/create.css",
"css/pages/groups/pages/group.css",
"css/pages/groups/pages/settings.css",
//Groups sections
"css/pages/groups/sections/header.css",
@ -425,6 +426,7 @@ class Dev {
"js/pages/groups/pages/main.js",
"js/pages/groups/pages/create.js",
"js/pages/groups/pages/group.js",
"js/pages/groups/pages/settings.js",
//Groups sections
"js/pages/groups/sections/header.js",