diff options
| author | mo k <mo.khan@gmail.com> | 2014-07-05 23:45:27 -0600 |
|---|---|---|
| committer | mo k <mo.khan@gmail.com> | 2014-07-05 23:45:27 -0600 |
| commit | 875269cda5c8a8d206e9406fef61ff33603b9c9d (patch) | |
| tree | 153cb85d4c8b07c14a1a197df7dfcff419fd27ae /app/assets/javascripts | |
| parent | a237bcc0965c376da768ab89a94c229f6f891495 (diff) | |
| parent | b9418ba1773e99dfa0cd6b06009e909985b9e9a0 (diff) | |
Merged in mocheen/cakeside/backbone-regions (pull request #72)
extract backbone controllers and remove dead views/routes/templates.
Diffstat (limited to 'app/assets/javascripts')
7 files changed, 57 insertions, 103 deletions
diff --git a/app/assets/javascripts/backbone/cakeside.js.coffee b/app/assets/javascripts/backbone/cakeside.js.coffee index 9fb71fb2..3de029c5 100644 --- a/app/assets/javascripts/backbone/cakeside.js.coffee +++ b/app/assets/javascripts/backbone/cakeside.js.coffee @@ -2,6 +2,7 @@ #= require_tree ./templates #= require_tree ./models #= require_tree ./views +#= require_tree ./controllers #= require_tree ./routers window.CakeSide = @@ -9,15 +10,22 @@ window.CakeSide = Collections: {} Routers: {} Views: {} + Controllers: {} initialize: (data) -> $(document).ajaxSend (event, xhr) -> if data.access_token xhr.setRequestHeader "Authorization", "Token token=#{data.access_token}" CakeSide.Application = new Marionette.Application() + CakeSide.Application.addRegions + content_region: '#backbone-content' + comment_region: '#disqus_thread' + CakeSide.Application.addInitializer (options) -> - new CakeSide.Routers.CakesRouter() - new CakeSide.Routers.PhotosRouter() + new CakeSide.Routers.CakesRouter + controller: new CakeSide.Controllers.CakesController() + new CakeSide.Routers.PhotosRouter + controller: new CakeSide.Controllers.PhotosController() CakeSide.Application.on 'start', -> if Backbone.history diff --git a/app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee b/app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee new file mode 100644 index 00000000..82b73536 --- /dev/null +++ b/app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee @@ -0,0 +1,26 @@ +class CakeSide.Controllers.CakesController extends Marionette.Controller + views: CakeSide.Views.Cakes + initialize: (options) -> + @content_region = CakeSide.Application.content_region + @cakes = CakeSide.Application.request('CakesRepository') + @comment_view = CakeSide.Application.request('CommentView') + + index: -> + @comment_view.hide() + @content_region.show(new @views.IndexView(collection: @cakes)) + + show: (id) -> + cake = @cakes.get(id) + @content_region.show(new @views.ShowView(model: cake)) + @comment_view.render + identifier: "c-#{cake.id}" + title: cake.get('name') + url: cake.public_url() + + newCake: -> + @comment_view.hide() + @content_region.show(new @views.NewView(collection: @cakes)) + + edit: (id) -> + @content_region.show(new @views.EditView(model: @cakes.get(id))) + @comment_view.hide() diff --git a/app/assets/javascripts/backbone/controllers/photos_controller.js.coffee b/app/assets/javascripts/backbone/controllers/photos_controller.js.coffee new file mode 100644 index 00000000..848cfa9e --- /dev/null +++ b/app/assets/javascripts/backbone/controllers/photos_controller.js.coffee @@ -0,0 +1,16 @@ +class CakeSide.Controllers.PhotosController extends Marionette.Controller + initialize: (options) -> + @cakes = CakeSide.Application.request('CakesRepository') + @content_region = CakeSide.Application.content_region + + show: (cake_id, id) -> + @photos = CakeSide.Application.request('PhotosRepository', cake_id) + photo = new CakeSide.Models.Photo({cake_id: cake_id, id: id}) + photo.fetch() + @content_region.show(new CakeSide.Views.Photos.ShowView(model: photo, collection: @photos)) + cake = @cakes.get(cake_id) + CakeSide.Application.request('CommentView').render + identifier: "c-#{cake_id}" + title: cake.get('name') + url: cake.public_url() + diff --git a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee b/app/assets/javascripts/backbone/routers/cakes_router.js.coffee index 92b72dd0..95901c0e 100644 --- a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee +++ b/app/assets/javascripts/backbone/routers/cakes_router.js.coffee @@ -1,31 +1,7 @@ -class CakeSide.Routers.CakesRouter extends Backbone.Router - routes: +class CakeSide.Routers.CakesRouter extends Marionette.AppRouter + appRoutes: "cakes/new": "newCake" "cakes/:id/edit": "edit" "cakes/:id": "show" "cakes": "index" - index: -> - CakeSide.Application.request('CommentView').hide() - @view = new CakeSide.Views.Cakes.IndexView(collection: CakeSide.Application.request('CakesRepository')) - $("#backbone-content").html(@view.render().el) - - show: (id) -> - cake = CakeSide.Application.request('CakesRepository').get(id) - @view = new CakeSide.Views.Cakes.ShowView(model: cake) - CakeSide.Application.request('CommentView').render - identifier: "c-#{cake.id}" - title: cake.get('name') - url: cake.public_url() - $("#backbone-content").html(@view.render().el) - - newCake: -> - CakeSide.Application.request('CommentView').hide() - @view = new CakeSide.Views.Cakes.NewView(collection: CakeSide.Application.request('CakesRepository')) - $("#backbone-content").html(@view.render().el) - - edit: (id) -> - CakeSide.Application.request('CommentView').hide() - cake = CakeSide.Application.request('CakesRepository').get(id) - @view = new CakeSide.Views.Cakes.EditView(model: cake) - $("#backbone-content").html(@view.render().el) diff --git a/app/assets/javascripts/backbone/routers/photos_router.js.coffee b/app/assets/javascripts/backbone/routers/photos_router.js.coffee index f0e91db1..753f86ba 100644 --- a/app/assets/javascripts/backbone/routers/photos_router.js.coffee +++ b/app/assets/javascripts/backbone/routers/photos_router.js.coffee @@ -1,21 +1,3 @@ -class CakeSide.Routers.PhotosRouter extends Backbone.Router - routes: - "cakes/:cake_id/photos/new" : "newPhoto" - "cakes/:cake_id/photos/:id" : "show" - - newPhoto: (cake_id) -> - @photos = CakeSide.Application.request('PhotosRepository', cake_id) - @view = new CakeSide.Views.Photos.NewView(collection: @photos) - $("#backbone-content").html(@view.render().el) - - show: (cake_id, id) -> - @photos = CakeSide.Application.request('PhotosRepository', cake_id) - photo = new CakeSide.Models.Photo({cake_id: cake_id, id: id}) - photo.fetch() - cake = CakeSide.Application.request('CakesRepository').get(cake_id) - @view = new CakeSide.Views.Photos.ShowView(model: photo, collection: @photos) - CakeSide.Application.request('CommentView').render - identifier: "c-#{cake_id}" - title: cake.get('name') - url: cake.public_url() - $("#backbone-content").html(@view.render().el) +class CakeSide.Routers.PhotosRouter extends Marionette.AppRouter + appRoutes: + "cakes/:cake_id/photos/:id": "show" diff --git a/app/assets/javascripts/backbone/templates/photos/new.jst.ejs b/app/assets/javascripts/backbone/templates/photos/new.jst.ejs deleted file mode 100644 index 848c86fc..00000000 --- a/app/assets/javascripts/backbone/templates/photos/new.jst.ejs +++ /dev/null @@ -1,16 +0,0 @@ -<h1>Upload photo</h1> - -<form id="new-photo" name="photo" class="form-horizontal"> - <fieldset> - <div class="control-group"> - <label class="control-label" for="photo_attachment">Photo</label> - <div class="controls"> - <input class="input-xxlarge" id="photo_attachment" name="attachment" type="file"> - </div> - </div> - <div class="form-actions"> - <button type="submit" class="btn btn-primary">Upload Photo</button> - <a href="#cakes" class="btn">Cancel</a> - </div> - </fieldset> -</form> diff --git a/app/assets/javascripts/backbone/views/photos/new_view.js.coffee b/app/assets/javascripts/backbone/views/photos/new_view.js.coffee deleted file mode 100644 index ebc6332a..00000000 --- a/app/assets/javascripts/backbone/views/photos/new_view.js.coffee +++ /dev/null @@ -1,38 +0,0 @@ -CakeSide.Views.Photos ||= {} - -class CakeSide.Views.Photos.NewView extends Backbone.View - template: JST["backbone/templates/photos/new"] - - events: - "submit #new-photo": "save" - - constructor: (options) -> - super(options) - @model = new @collection.model() - - @model.bind("change:errors", () => - this.render() - ) - - save: (e) -> - e.preventDefault() - e.stopPropagation() - - @model.unset("errors") - - fileObject = @$(':input[type="file"]')[0].files[0] - @model.set('image', fileObject) - @model.on('progress', console.log) - @collection.create(@model.toJSON(), - success: (photo) => - @model = photo - window.location.hash = "cakes/#{@model.get('cake_id')}" - - error: (photo, jqXHR) => - @model.set({errors: $.parseJSON(jqXHR.responseText)}) - ) - - render: -> - $(@el).html(@template(@model.toJSON())) - this.$("form").backboneLink(@model) - return this |
