parent
88c9ae129e
commit
1291303c5a
@ -1,81 +0,0 @@ |
|||||||
OC.router_base_url = OC.webroot + '/index.php'; |
|
||||||
OC.Router = { |
|
||||||
// register your ajax requests to load after the loading of the routes
|
|
||||||
// has finished. otherwise you face problems with race conditions
|
|
||||||
registerLoadedCallback: function(callback){ |
|
||||||
if (!this.routes_request){ |
|
||||||
return; |
|
||||||
} |
|
||||||
this.routes_request.done(callback); |
|
||||||
}, |
|
||||||
routes_request: !window.TESTING && $.ajax(OC.router_base_url + '/core/routes.json', { |
|
||||||
dataType: 'json', |
|
||||||
success: function(jsondata) { |
|
||||||
if (jsondata.status === 'success') { |
|
||||||
OC.Router.routes = jsondata.data; |
|
||||||
} |
|
||||||
} |
|
||||||
}), |
|
||||||
generate:function(name, opt_params) { |
|
||||||
if (!('routes' in this)) { |
|
||||||
if(this.routes_request.state() != 'resolved') { |
|
||||||
console.warn('To avoid race conditions, please register a callback');// wait
|
|
||||||
} |
|
||||||
} |
|
||||||
if (!(name in this.routes)) { |
|
||||||
throw new Error('The route "' + name + '" does not exist.'); |
|
||||||
} |
|
||||||
var route = this.routes[name]; |
|
||||||
var params = opt_params || {}; |
|
||||||
var unusedParams = $.extend(true, {}, params); |
|
||||||
var url = ''; |
|
||||||
var optional = true; |
|
||||||
$(route.tokens).each(function(i, token) { |
|
||||||
if ('text' === token[0]) { |
|
||||||
url = token[1] + url; |
|
||||||
optional = false; |
|
||||||
|
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if ('variable' === token[0]) { |
|
||||||
if (false === optional || !(token[3] in route.defaults) |
|
||||||
|| ((token[3] in params) && params[token[3]] != route.defaults[token[3]])) { |
|
||||||
var value; |
|
||||||
if (token[3] in params) { |
|
||||||
value = params[token[3]]; |
|
||||||
delete unusedParams[token[3]]; |
|
||||||
} else if (token[3] in route.defaults) { |
|
||||||
value = route.defaults[token[3]]; |
|
||||||
} else if (optional) { |
|
||||||
return; |
|
||||||
} else { |
|
||||||
throw new Error('The route "' + name + '" requires the parameter "' + token[3] + '".'); |
|
||||||
} |
|
||||||
|
|
||||||
var empty = true === value || false === value || '' === value; |
|
||||||
|
|
||||||
if (!empty || !optional) { |
|
||||||
url = token[1] + encodeURIComponent(value).replace(/%2F/g, '/') + url; |
|
||||||
} |
|
||||||
|
|
||||||
optional = false; |
|
||||||
} |
|
||||||
|
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
throw new Error('The token type "' + token[0] + '" is not supported.'); |
|
||||||
}); |
|
||||||
if (url === '') { |
|
||||||
url = '/'; |
|
||||||
} |
|
||||||
|
|
||||||
unusedParams = $.param(unusedParams); |
|
||||||
if (unusedParams.length > 0) { |
|
||||||
url += '?'+unusedParams; |
|
||||||
} |
|
||||||
|
|
||||||
return OC.router_base_url + url; |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue