diff options
Diffstat (limited to 'core/js/js.js')
-rw-r--r-- | core/js/js.js | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/core/js/js.js b/core/js/js.js index 7ff010eca0a..a43df4014df 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -116,17 +116,30 @@ var OC={ /** * Generates the absolute url for the given relative url, which can contain parameters. + * Parameters will be URL encoded automatically. * @param {string} url * @param [params] params + * @param [options] options + * @param {bool} [options.escape=true] enable/disable auto escape of placeholders (by default enabled) * @return {string} Absolute URL for the given relative URL */ - generateUrl: function(url, params) { + generateUrl: function(url, params, options) { + var defaultOptions = { + escape: true + }, + allOptions = options || {}; + _.defaults(allOptions, defaultOptions); + var _build = function (text, vars) { var vars = vars || []; return text.replace(/{([^{}]*)}/g, function (a, b) { - var r = vars[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; + var r = (vars[b]); + if(allOptions.escape) { + return (typeof r === 'string' || typeof r === 'number') ? encodeURIComponent(r) : encodeURIComponent(a); + } else { + return (typeof r === 'string' || typeof r === 'number') ? r : a; + } } ); }; |