[%- DEFAULT
cats = [ 'Model', 'View', 'Role', 'Action', 'Feed' ];
%]
function dispatchByAnchor () {
var anchor = location.hash;
anchor = anchor.replace(/^\#/, '');
if (savedAnchor == anchor)
return;
if (anchor == "") {
anchor = 'models';
location.hash = 'models';
}
var oldAnchor = savedAnchor;
savedAnchor = anchor;
// prevent memory leaks from dynamically created <script> nodes:
//if (loadingCount <= 0) openresty.purge();
loadingCount = 0;
[%- FOREACH cat = cats %]
if (anchor == '[% cat | lower %]s') {
get[% cat %]s();
return;
}
var match = anchor.match(/^[% cat | lower %]-([A-Za-z]\w*)$/);
if (match) {
var [% cat | lower %] = match[1];
get[% cat %]([% cat | lower %]);
return;
}
[%- END %]
match = anchor.match(/^modelrows\/([A-Za-z]\w*)\/(\w+)\/(\w+)\/(\d+)(?:\/(.*))?$/);
if (match) {
var model = match[1];
var col = match[2];
var op = match[3];
var page = match[4] || 1;
var pattern = match[5] || '~';
page = parseInt(page);
//alert("Model: " + model);
//alert("Page: " + page);
getModelRows(model, col, op, page, pattern);
return;
}
match = anchor.match(/^rolerules-([A-Za-z]\w*)$/);
if (match) {
var role = match[1];
getRoleRules(role);
return;
}
if (anchor == 'consoles') {
getConsoles();
return;
}
// fallback
alert("Sorry, not implemented yet :P");
if (!oldAnchor) {
location.hash = 'models';
dispatchByAnchor();
}
}