Personalizar as páginas 404 e 401
Quando o Total.js não consegue atender um pedido, mostra uma página de erro incorporada. Uma rota cujo URL é # mais o código de estado substitui-a: ROUTE('#404', fn) para "não encontrado", ROUTE('#401', fn) para "não autorizado", e o mesmo para #400, #431 e outros. O handler recebe $ como qualquer rota, mas o estado é você que o define com $.response.status: o Total.js não o faz por si quando existe um handler próprio. Sem handler próprio usa-se a página incorporada e os pedidos AJAX (cabeçalho x-requested-with) recebem um erro JSON em vez de HTML.
$.fallback(code) envia o pedido atual para o handler de code, que é a forma de responder 404 para um registo que não existe ou 403 para um recurso proibido a partir do seu próprio código.
exports.install = function() {
ROUTE('#404', not_found);
ROUTE('#401', unauthorized);
ROUTE('GET /items/{id}/', item);
ROUTE('+GET /private/', private_page);
};
var items = { '1': 'First item' };
function item($) {
var name = items[$.params.id];
if (name)
$.json({ name: name });
else
$.fallback(404);
}
function private_page($) {
$.plain('secret');
}
function not_found($) {
$.response.status = 404;
$.html('<h1>Nothing here</h1><p>' + $.url.encode() + ' does not exist.</p>');
}
function unauthorized($) {
$.response.status = 401;
$.json({ error: 'Please sign in first' });
}
AUTH(function($) {
$.invalid();
});