mail/src/js/app-router.js

96 lines
2.3 KiB
JavaScript
Raw Normal View History

2013-06-10 21:14:57 -04:00
define(['jquery', 'backbone', 'js/view/login-view', 'js/view/compose-view',
'js/view/folderlist-view', 'js/view/messagelist-view', 'js/view/read-view',
'jquerymobile'
2013-06-10 21:14:57 -04:00
], function($, Backbone, LoginView, ComposeView, FolderListView, MessageListView, ReadView) {
2013-04-01 17:23:25 -04:00
'use strict';
2013-03-13 11:58:46 -04:00
2013-06-10 21:14:57 -04:00
var Router = Backbone.Router.extend({
2013-03-13 11:58:46 -04:00
2013-04-01 17:23:25 -04:00
routes: {
'': 'login',
2013-06-04 20:33:49 -04:00
'compose/:userId': 'compose',
'compose/:userId/folders/:folder': 'compose',
2013-04-01 17:23:25 -04:00
'accounts/:userId/folders': 'folders',
'accounts/:userId/folders/:folder': 'messagelist',
'accounts/:userId/folders/:folder/read/:messageId': 'read',
'accounts/:userId/folders/:folder/reply/:messageId': 'compose'
2013-04-01 17:23:25 -04:00
},
2013-03-13 11:58:46 -04:00
2013-04-01 17:23:25 -04:00
initialize: function() {},
2013-03-13 11:58:46 -04:00
2013-04-01 17:23:25 -04:00
login: function() {
2013-06-10 21:14:57 -04:00
var loginView = new LoginView();
2013-04-01 17:23:25 -04:00
this.changePage(loginView);
},
2013-05-04 07:02:17 -04:00
compose: function(userId, folder, messageId) {
2013-06-04 20:50:56 -04:00
var self = this,
composeView;
2013-06-10 21:14:57 -04:00
composeView = new ComposeView({
2013-06-04 20:33:49 -04:00
account: userId,
2013-05-04 07:02:17 -04:00
folder: folder,
2013-06-04 20:50:56 -04:00
messageId: (messageId) ? decodeURIComponent(messageId) : null,
callback: function(view) {
self.changePage(view);
}
2013-05-03 10:09:13 -04:00
});
2013-04-01 17:23:25 -04:00
},
folders: function(userId) {
2013-06-10 21:14:57 -04:00
var folderListView = new FolderListView({
2013-04-01 17:23:25 -04:00
account: userId
});
this.changePage(folderListView);
folderListView.listFolder();
2013-04-01 17:23:25 -04:00
},
messagelist: function(userId, folder) {
var self = this;
2013-06-10 21:14:57 -04:00
var messageListView = new MessageListView({
2013-04-01 17:23:25 -04:00
account: userId,
2013-06-04 17:19:02 -04:00
folder: folder
2013-04-01 17:23:25 -04:00
});
self.changePage(messageListView);
messageListView.loadItems();
},
read: function(userId, folder, messageId) {
2013-06-04 21:12:18 -04:00
var self = this,
readView;
2013-06-10 21:14:57 -04:00
readView = new ReadView({
2013-06-04 21:12:18 -04:00
account: userId,
2013-04-01 17:23:25 -04:00
folder: folder,
2013-06-04 21:12:18 -04:00
messageId: decodeURIComponent(messageId),
callback: function(view) {
self.changePage(view);
view.renderBody(true);
}
2013-04-01 17:23:25 -04:00
});
},
changePage: function(page) {
// render the page and append it to the DOM
var pageEl = $(page.el);
pageEl.attr('data-role', 'page');
page.render();
$('body').append(pageEl);
// change page for link buttons on vmousedown instead of waiting on vmouseup
pageEl.on('vmousedown', 'a[data-role="button"]', function(e) {
e.preventDefault();
var href = $(e.currentTarget).attr('href');
window.location = href;
});
$.mobile.changePage(pageEl, {
changeHash: false,
reverse: false
});
}
});
2013-06-10 21:14:57 -04:00
return Router;
});