moksha/public/javascript/moksha.js | 69 ++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 15 deletions(-)
New commits: commit 74ed4bfe01c9ea4856fb59ec23b811fb87d611cf Merge: f73bd6f... 7e92ad3... Author: John (J5) Palmieri johnp@redhat.com Date: Mon Apr 13 12:54:31 2009 -0400
Merge branch 'master' of git+ssh://johnp@git.fedorahosted.org/git/moksha
commit f73bd6f72934eae71436027269dff4ea7bd8dcfa Author: John (J5) Palmieri johnp@redhat.com Date: Mon Apr 13 12:53:30 2009 -0400
add a url method for rewriting url's with a base path and csrf
diff --git a/moksha/public/javascript/moksha.js b/moksha/public/javascript/moksha.js index 935b135..4fcee4c 100644 --- a/moksha/public/javascript/moksha.js +++ b/moksha/public/javascript/moksha.js @@ -138,18 +138,23 @@ moksha = { * Take a url and attach the csrf hash if available ********************************************************************/ csrf_rewrite_url: function(url, params) { - var ourl = moksha.parseUri(url); + var purl = moksha.parseUri(url);
+ moksha.csrf_rewrite_uri(purl, params); + + return purl.toString(); + }, + + csrf_rewrite_uri: function(uri, params) { if (typeof(params) == 'undefined') params = {};
if (typeof(moksha_csrf_token) != 'undefined' && moksha_csrf_token) params['_csrf_token'] = moksha_csrf_token;
- ourl.update_query_string(params); - - return ourl.toString(); + uri.update_query_string(params);
+ return uri; },
/********************************************************************* @@ -211,9 +216,27 @@ moksha = {
var uriClass = function(){}; uriClass.prototype = { - update_query_string :function(params) { - for (p in params) - this.queryKey[p] = params[p]; + type: 'uri', + + _normalize_path: function(path) { + // make sure we don't have multiple slashes + var slashes = //+/g; + path = path.replace(slashes, '/'); + + return path; + }, + + prepend_base_url: function(base_url) { + this.directory = base_url + this.directory; + this.directory = this._normalize_path(this.directory); + + this.relative = this.directory + this.file; + this.path = this.relative; + }, + + update_query_string: function(params) { + for (p in params) + this.queryKey[p] = params[p]; },
toString: function() { @@ -253,19 +276,19 @@ moksha = { return uri; },
- json_load: function(path, params, callback, $overlay_div) { - return moksha.ajax_load(path, params, callback, $overlay_div, 'json') + json_load: function(path, params, callback, $overlay_div, loading_icon) { + return moksha.ajax_load(path, params, callback, $overlay_div, 'json', loading_icon) },
- xml_load: function(path, params, callback, $overlay_div) { - return moksha.ajax_load(path, params, callback, $overlay_div, 'xml') + xml_load: function(path, params, callback, $overlay_div, loading_icon) { + return moksha.ajax_load(path, params, callback, $overlay_div, 'xml', loading_icon) },
- html_load: function(path, params, callback, $overlay_div) { - return moksha.ajax_load(path, params, callback, $overlay_div, 'html') + html_load: function(path, params, callback, $overlay_div, loading_icon) { + return moksha.ajax_load(path, params, callback, $overlay_div, 'html', loading_icon) },
- ajax_load: function(path, params, callback, $overlay_div, data_type) { + ajax_load: function(path, params, callback, $overlay_div, data_type, loading_icon) { self = this;
var profile_start_time = 0; @@ -309,9 +332,12 @@ moksha = {
// show loading if (typeof($overlay_div) == 'object') { + if (typeof(loading_icon) == 'undefined') + loading_icon = '/images/spinner.gif'; + var $msg = $('.message', $overlay_div); // FIXME: make this globally configurable - $msg.html('<img src="/images/spinner.gif"></img>'); + $msg.html('<img src="'+ loading_icon + '"></img>');
var $parent = $overlay_div.parent(); $overlay_div.css({'height': $parent.height(), @@ -369,6 +395,19 @@ moksha = { burl = moksha_base_url;
return burl; + }, + + url: function(url) { + var purl = moksha.parseUri(url); + + if (!purl.protocol) { + var burl = moksha.get_base_url(); + purl.prepend_base_url(burl); + + moksha.csrf_rewrite_uri(purl); + } + + return purl.toString(); } }