Skip to content

Commit

Permalink
major re-work of contacts app. starting in on mail app as well. lots …
Browse files Browse the repository at this point in the history
…of broken unit tests
  • Loading branch information
Derick Bailey committed Sep 30, 2012
1 parent 657eaf6 commit dfcdb20
Show file tree
Hide file tree
Showing 13 changed files with 93 additions and 95 deletions.
6 changes: 5 additions & 1 deletion public/javascripts/bbclonemail/bbclonemail.contactrouter.js
Expand Up @@ -8,8 +8,12 @@ BBCloneMail.module("ContactRouter", function(ContactRouter, App, Backbone, Mario
"contacts": "showContacts",
},

showContacts: function(id){
before: function(){
App.startSubApp("ContactsApp");
},

showContacts: function(){
App.module("ContactsApp").showContacts();
}
});

Expand Down
@@ -0,0 +1,11 @@
BBCloneMail.module("ContactsApp.Categories", function(Cats, App, Backbone, Marionette, $, _){
"use strict";

// Category View
// -------------

Cats.CategoryView = Marionette.ItemView.extend({
template: "#contact-categories-view-template"
});

});

This file was deleted.

Expand Up @@ -16,47 +16,4 @@ BBCloneMail.module("ContactsApp.ContactList", function(ContactList, App, Backbon
className: "contact-list"
});

// Contact List Controller
// -----------------------

ContactList.Controller = function(region){
this.region = region;
};

_.extend(ContactList.Controller.prototype, {

showContacts: function(){
var that = this;

this.getContacts(function(contacts){
var view = new ContactList.ContactListView({
collection: contacts
});

that.region.show(view);
});

Backbone.history.navigate("contacts");
},

getContacts: function(callback){
var contactRequest = App.request("contacts:all");
$.when(contactRequest).then(function(contacts){
callback(contacts);
});
}

});

// Initializers and Finalizers
// ---------------------------

ContactList.addInitializer(function(){
ContactList.controller = new ContactList.Controller(App.main);
ContactList.controller.showContacts();
});

ContactList.addFinalizer(function(){
delete ContactList.controller;
});
});
23 changes: 5 additions & 18 deletions public/javascripts/bbclonemail/bbclonemail.contactsapp.contacts.js
Expand Up @@ -22,40 +22,27 @@ BBCloneMail.module("ContactsApp.Contacts", function(Contacts, App, Backbone, Mar
url: "/contacts"
});

// Contacts Controller
// Contacts Repository
// -------------------

Contacts.Controller = function(){};

_.extend(Contacts.Controller.prototype, {
Contacts.Repository = function(){};

_.extend(Contacts.Repository.prototype, {
getAll: function(){
var deferred = $.Deferred();

this.getContacts(function(contacts){
this._getContacts(function(contacts){
deferred.resolve(contacts);
});

return deferred.promise();
},

getContacts: function(callback){
_getContacts: function(callback){
var contactCollection = new ContactCollection();
contactCollection.on("reset", callback);
contactCollection.fetch();
}

});

Contacts.addInitializer(function(){
var controller = new Contacts.Controller();
App.requestResponse.addHandler("contacts:all", controller.getAll, controller);

Contacts.controller = controller;
});

Contacts.addFinalizer(function(){
App.requestResponse.removeHandler("contacts:all");
delete Contacts.controller;
});
});
61 changes: 61 additions & 0 deletions public/javascripts/bbclonemail/bbclonemail.contactsapp.js
Expand Up @@ -3,8 +3,69 @@ BBCloneMail.module("ContactsApp", {
define: function(ContactsApp, App){
"use strict";

// Contact App Controller
// -----------------------

ContactsApp.Controller = function(repo, mainRegion, navRegion){
$.resolve(this);

this.contactsRepo = repo;
this.mainRegion = mainRegion;
this.navRegion = navRegion;
};

_.extend(ContactsApp.Controller.prototype, {

start: function(){
this.showCategories();
},

showCategories: function(){
var view = new ContactsApp.Categories.CategoryView();
this.navRegion.show(view);
},

showContacts: {
resolve: "getContacts",
run: function(contacts){
var view = new ContactsApp.ContactList.ContactListView({
collection: contacts
});

this.mainRegion.show(view);

Backbone.history.navigate("contacts");
}
},

getContacts: function(callback){
return this.contactsRepo.getAll();
}

});

// Public API
// ----------

ContactsApp.showContacts = function(){
ContactsApp.controller.showContacts();
}

// Initializers and Finalizers
// ---------------------------

ContactsApp.addInitializer(function(){
var repo = new ContactsApp.Contacts.Repository();

ContactsApp.controller = new ContactsApp.Controller(repo, App.main, App.nav);
ContactsApp.controller.start();

App.vent.trigger("app:started", "ContactsApp");
});

ContactsApp.addFinalizer(function(){
delete ContactsApp.ContactList.controller;
});

}
});
2 changes: 0 additions & 2 deletions public/javascripts/bbclonemail/bbclonemail.js
Expand Up @@ -26,7 +26,5 @@ BBCloneMail = (function(Backbone){
currentApp.start();
};

App.commands.addHandler("start:app", App.startSubApp, App);

return App;
})(Backbone);
2 changes: 1 addition & 1 deletion public/javascripts/bbclonemail/bbclonemail.layout.js
Expand Up @@ -40,7 +40,7 @@ BBCloneMail.module("AppLayout", function(AppLayout, App, Backbone, Marionette, $
},

appSelected: function(appName){
App.execute("start:app", appName);
Backbone.history.navigate(appName, true);
}

});
Expand Down
3 changes: 0 additions & 3 deletions public/javascripts/bbclonemail/bbclonemail.mailapp.inbox.js
Expand Up @@ -17,7 +17,6 @@ BBCloneMail.module("MailApp.Inbox", function(Inbox, App, Backbone, Marionette, $
resolve: "getEmail",
run: function(emailList){
App.execute("show:mail:list", emailList);
Backbone.history.navigate("");
}
},

Expand All @@ -36,7 +35,6 @@ BBCloneMail.module("MailApp.Inbox", function(Inbox, App, Backbone, Marionette, $
showMailByCategory: {
resolve: "getEmailByCategory",
run: function(categoryName, emailList){
Backbone.history.navigate("categories/" + categoryName);
App.execute("show:mail:list", emailList);
}
},
Expand All @@ -55,7 +53,6 @@ BBCloneMail.module("MailApp.Inbox", function(Inbox, App, Backbone, Marionette, $

Inbox.addInitializer(function(){
Inbox.controller = new InboxController(App.main);
Inbox.controller.showInbox();
});

Inbox.addFinalizer(function(){
Expand Down
5 changes: 3 additions & 2 deletions public/javascripts/bbclonemail/bbclonemail.mailrouter.js
Expand Up @@ -7,8 +7,9 @@ BBCloneMail.module("MailRouter", function(MailRouter, App, Backbone, Marionette,
var Router = Backbone.Router.extend({
routes: {
"": "showInbox",
"categories/:id": "showMailByCategory",
"inbox/mail/:id": "showMailById"
"mail": "showInbox",
"mail/categories/:id": "showMailByCategory",
"mail/inbox/mail/:id": "showMailById"
},

// this uses https://github.com/boazsender/backbone.routefilter
Expand Down
4 changes: 2 additions & 2 deletions views/layout.jade
Expand Up @@ -33,8 +33,8 @@ html
navigation
section#app-selector
select
option(value="MailApp") Mail
option(value="ContactsApp") Contacts
option(value="mail") Mail
option(value="contacts") Contacts
section#navigation
article#main
#loading
Expand Down
2 changes: 1 addition & 1 deletion views/scripts.jade
Expand Up @@ -24,7 +24,7 @@

script(src="/javascripts/bbclonemail/bbclonemail.contactrouter.js")
script(src="/javascripts/bbclonemail/bbclonemail.contactsapp.js")
script(src="/javascripts/bbclonemail/bbclonemail.contactsapp.contactcategories.js")
script(src="/javascripts/bbclonemail/bbclonemail.contactsapp.categories.js")
script(src="/javascripts/bbclonemail/bbclonemail.contactsapp.contacts.js")
script(src="/javascripts/bbclonemail/bbclonemail.contactsapp.contactlist.js")
- } else {
Expand Down
8 changes: 4 additions & 4 deletions views/templates/mail-categories-view-template.jade
Expand Up @@ -2,13 +2,13 @@ script#mail-categories-view-template(type = "text/template")
p Mail Categories
ul
li
a(class="mail-category", data-category = "", href = "#") Inbox
a(class="mail-category", data-category = "", href = "#mail") Inbox
li
a(class="mail-category", data-category = "sent", href = "#categories/sent") Sent
a(class="mail-category", data-category = "sent", href = "#mail/categories/sent") Sent
li
a(class="mail-category", data-category = "trash", href = "#categories/trash") Trash
a(class="mail-category", data-category = "trash", href = "#mail/categories/trash") Trash
ul.customCategories
|<% _.each(items, function(category) { %>
li
a(class="mail-category", data-category != "<%= category.name %>", href != "#categories/<%= category.name %>" ) <%= category.name %>
a(class="mail-category", data-category != "<%= category.name %>", href != "#mail/categories/<%= category.name %>" ) <%= category.name %>
|<% }); %>

0 comments on commit dfcdb20

Please sign in to comment.