From 89df9f0315d8b714953da3f4f205d59e17d1e657 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Fri, 6 Jul 2018 07:09:24 +0200 Subject: [PATCH] Send a request to the server to cancel membership request. --- assets/js/components/groups/interface.js | 245 ++++++++++-------- .../pages/groups/sections/membershipBlock.js | 69 ++++- 2 files changed, 187 insertions(+), 127 deletions(-) diff --git a/assets/js/components/groups/interface.js b/assets/js/components/groups/interface.js index 64a3db58..65234a6c 100644 --- a/assets/js/components/groups/interface.js +++ b/assets/js/components/groups/interface.js @@ -6,128 +6,143 @@ ComunicWeb.components.groups.interface = { - /** - * Create a group - * - * @param {String} name The name of the group to create - * @param {Function} callback - */ - create: function(name, callback){ + /** + * Create a group + * + * @param {String} name The name of the group to create + * @param {Function} callback + */ + create: function(name, callback){ - //Perform a request over the API - var apiURI = "groups/create"; - var params = { - name: name - }; - ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); - }, + //Perform a request over the API + var apiURI = "groups/create"; + var params = { + name: name + }; + ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); + }, - /** - * Get information about a group - * - * @param {Number} id The ID of the target group - * @param {Function} callback Callback - */ - getInfo: function(id, callback){ - //Perform the request over the API - var apiURI = "groups/get_info"; - var params = { - id: id - }; - ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); - }, + /** + * Get information about a group + * + * @param {Number} id The ID of the target group + * @param {Function} callback Callback + */ + getInfo: function(id, callback){ + //Perform the request over the API + var apiURI = "groups/get_info"; + var params = { + id: id + }; + ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); + }, - /** - * Get advanced information about a group - * - * @param {Number} id The ID of the target group - * @param {Function} callback Callback - */ - getAdvancedInfo: function(id, callback){ - //Perform the request over the API - var apiURI = "groups/get_advanced_info"; - var params = { - id: id - }; - ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); - }, + /** + * Get advanced information about a group + * + * @param {Number} id The ID of the target group + * @param {Function} callback Callback + */ + getAdvancedInfo: function(id, callback){ + //Perform the request over the API + var apiURI = "groups/get_advanced_info"; + var params = { + 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); - }, + /** + * 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); + }, - /** - * Set (update) the settings of a group - * - * @param {Number} id The ID of the target group - * @param {Object} settings The new settings to apply to - * the group - * @param {Function} callback - */ - setSettings: function(id, settings, callback){ - //Perform the request over the API - var apiURI = "groups/set_settings"; - settings.id = id; - ComunicWeb.common.api.makeAPIrequest(apiURI, settings, true, callback); - }, + /** + * Set (update) the settings of a group + * + * @param {Number} id The ID of the target group + * @param {Object} settings The new settings to apply to + * the group + * @param {Function} callback + */ + setSettings: function(id, settings, callback){ + //Perform the request over the API + var apiURI = "groups/set_settings"; + settings.id = id; + ComunicWeb.common.api.makeAPIrequest(apiURI, settings, true, callback); + }, - /** - * Upload a new group logo - * - * @param {Number} id The ID of the target group - * @param {FormData} data The form data that contains the - * new logo (parameter name : logo) - * @param {Function} callback - */ - uploadLogo: function(id, data, callback){ - //Perform the request over the API - var apiURI = "groups/upload_logo"; - data.append("id", id); - ComunicWeb.common.api.makeFormDatarequest(apiURI, data, true, callback); - }, + /** + * Upload a new group logo + * + * @param {Number} id The ID of the target group + * @param {FormData} data The form data that contains the + * new logo (parameter name : logo) + * @param {Function} callback + */ + uploadLogo: function(id, data, callback){ + //Perform the request over the API + var apiURI = "groups/upload_logo"; + data.append("id", id); + ComunicWeb.common.api.makeFormDatarequest(apiURI, data, true, callback); + }, - /** - * Delete user logo - * - * @param {Number} id The ID of the target group - * @param {Function} callback - */ - deleteLogo: function(id, callback){ - //Perform the request over the API - var apiURI = "groups/delete_logo"; - var params = { - id: id - }; - ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); - }, + /** + * Delete user logo + * + * @param {Number} id The ID of the target group + * @param {Function} callback + */ + deleteLogo: function(id, callback){ + //Perform the request over the API + var apiURI = "groups/delete_logo"; + var params = { + id: id + }; + ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); + }, - /** - * Respond to a group invitation - * - * @param {Number} id The ID of the target group - * @param {Boolean} accept Specify whether the invitation was - * accepted or not - * @param {Function} callback - */ - respondInvitation: function(id, accept, callback) { - //Perform the request over the API - var apiURI = "groups/respond_invitation"; - var params = { - id: id, - accept: accept - }; - ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); - }, + /** + * Respond to a group invitation + * + * @param {Number} id The ID of the target group + * @param {Boolean} accept Specify whether the invitation was + * accepted or not + * @param {Function} callback + */ + respondInvitation: function(id, accept, callback) { + //Perform the request over the API + var apiURI = "groups/respond_invitation"; + var params = { + id: id, + accept: accept + }; + ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); + }, + + /** + * Cancel a membership request + * + * @param {Number} id The ID of the target group + * @param {Function} callback + */ + cancelRequest: function(id, callback){ + //Perform the request over the API + var apiURI = "groups/cancel_request"; + var params = { + id: id + }; + ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback); + } }; \ No newline at end of file diff --git a/assets/js/pages/groups/sections/membershipBlock.js b/assets/js/pages/groups/sections/membershipBlock.js index ec9c1ab8..19395482 100644 --- a/assets/js/pages/groups/sections/membershipBlock.js +++ b/assets/js/pages/groups/sections/membershipBlock.js @@ -20,6 +20,24 @@ ComunicWeb.pages.groups.sections.membershipBlock = { type: "div" }); + /** + * Refresh current component information + */ + refresh_component = function(){ + emptyElem(container); + ComunicWeb.components.groups.interface.getInfo(info.id, function(result){ + + //Check for errors + if(result.error) + return notify("Could not refresh membership information!", "danger"); + + //Display the component again + ComunicWeb.pages.groups.sections.membershipBlock.display(result, container); + + }); + + } + //Check if the user is an administrator / moderator / member if(info.membership == "administrator") return createElem2({ @@ -75,6 +93,10 @@ ComunicWeb.pages.groups.sections.membershipBlock = { */ var respondInvitation = function(accept){ + //Hide the buttons + acceptInvitation.style.visibility = "hidden"; + rejectInvitation.style.visibility = "hidden"; + //Perform the request over the server ComunicWeb.components.groups.interface.respondInvitation(info.id, accept, function(result){ @@ -83,18 +105,7 @@ ComunicWeb.pages.groups.sections.membershipBlock = { notify("An error occurred while trying to respond to the invitation!", "danger"); //Refresh the component - emptyElem(container); - ComunicWeb.components.groups.interface.getInfo(info.id, function(result){ - - //Check for errors - if(result.error) - return notify("Could not refresh membership information!", "danger"); - - //Display the component again - ComunicWeb.pages.groups.sections.membershipBlock.display(result, container); - - }); - + refresh_component(); }); } @@ -118,6 +129,40 @@ ComunicWeb.pages.groups.sections.membershipBlock = { }); } + //Check if the user send a membership request + if(info.membership == "pending"){ + + var requestedContainer = createElem2({ + appendTo: container, + type: "span", + innerHTML: " Requested " + }); + add_space(container); + + //Add a link to cancel the request + var cancelLink = createElem2({ + appendTo: requestedContainer, + type: "span", + class: "a", + innerHTML: "Cancel" + }); + + cancelLink.addEventListener("click", function(e){ + cancelLink.style.visibility = "hidden"; + + //Cancel the request + ComunicWeb.components.groups.interface.cancelRequest(info.id, function(result){ + + if(result.error) + notify("An error occurred while trying to cancel membership request!", "danger"); + + refresh_component(); + + }); + + }) + } + } }; \ No newline at end of file