diff --git a/assets/js/utils/url.js b/assets/js/utils/url.js new file mode 100644 index 00000000..0b11e0ad --- /dev/null +++ b/assets/js/utils/url.js @@ -0,0 +1,69 @@ +/* ---------------------------------------------------------------------------- + * Easy!Appointments - Open Source Web Scheduler + * + * @package EasyAppointments + * @author A.Tselegidis + * @copyright Copyright (c) 2013 - 2020, Alex Tselegidis + * @license http://opensource.org/licenses/GPL-3.0 - GPLv3 + * @link http://easyappointments.org + * @since v1.5.0 + * ---------------------------------------------------------------------------- */ + +window.App.Utils.Url = (function () { + /** + * Get complete URL of the provided URI segment. + * + * @param {String} uri + * + * @return {String} + */ + function baseUrl(uri) { + return `${App.Config.base_url}/${uri}`; + } + + /** + * Get the complete site URL (including the index.php) of the provided URI segment. + * + * @param {String} uri + * + * @returns {String} + */ + function siteUrl(uri) { + return `${App.Config.base_url}${App.Config.index_page ? '/' + App.Config.index_page : ''}/${uri}`; + } + + /** + * Retrieve a query parameter from the current request. + * + * @link http://www.netlobo.com/url_query_string_javascript.html + * + * @param {String} name Parameter name. + + * @return {String} Returns the parameter value. + */ + function queryParam(name) { + const url = location.href; + + const parsedUrl = url.substr(url.indexOf('?')).slice(1).split('&'); + + for (let index in parsedUrl) { + const parsedValue = parsedUrl[index].split('='); + + if (parsedValue.length === 1 && parsedValue[0] === name) { + return ''; + } + + if (parsedValue.length === 2 && parsedValue[0] === name) { + return decodeURIComponent(parsedValue[1]); + } + } + + return null; + } + + return { + baseUrl, + siteUrl, + queryParam + }; +})();