summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2012-10-27 11:58:02 +0200
committerBart Visscher <bartv@thisnet.nl>2012-10-27 11:58:02 +0200
commit0120f3fd629e772d9a7493e5289c1d6708ba92d5 (patch)
treedbee6eba6d11afe887a6235375119b7a6bd71b69 /core/js
parent74665faec533430be37879bfc0ef24aa7f211f6e (diff)
parentbeaaf5425dc2dfb7456efa934fa8eb91ac28c677 (diff)
downloadnextcloud-server-0120f3fd629e772d9a7493e5289c1d6708ba92d5.tar.gz
nextcloud-server-0120f3fd629e772d9a7493e5289c1d6708ba92d5.zip
Merge branch 'routing'
Conflicts: core/lostpassword/index.php core/lostpassword/resetpassword.php
Diffstat (limited to 'core/js')
-rw-r--r--core/js/js.js11
-rw-r--r--core/js/router.js73
2 files changed, 81 insertions, 3 deletions
diff --git a/core/js/js.js b/core/js/js.js
index c5e32f3c278..130d413296e 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -95,9 +95,9 @@ var OC={
var isCore=OC.coreApps.indexOf(app)!==-1,
link=OC.webroot;
if((file.substring(file.length-3) === 'php' || file.substring(file.length-3) === 'css') && !isCore){
- link+='/?app=' + app;
+ link+='/index.php/apps/' + app;
if (file != 'index.php') {
- link+='&getfile=';
+ link+='/';
if(type){
link+=encodeURI(type + '/');
}
@@ -113,7 +113,12 @@ var OC={
}
link+=file;
}else{
- link+='/';
+ if ((app == 'settings' || app == 'core') && type == 'ajax') {
+ link+='/index.php/';
+ }
+ else {
+ link+='/';
+ }
if(!isCore){
link+='apps/';
}
diff --git a/core/js/router.js b/core/js/router.js
new file mode 100644
index 00000000000..8b66f5a05c5
--- /dev/null
+++ b/core/js/router.js
@@ -0,0 +1,73 @@
+OC.router_base_url = OC.webroot + '/index.php/',
+OC.Router = {
+ routes_request: $.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') {
+ alert('wait');// 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;
+ }
+};