summaryrefslogtreecommitdiff
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authormo k <mo.khan@gmail.com>2014-07-05 23:45:27 -0600
committermo k <mo.khan@gmail.com>2014-07-05 23:45:27 -0600
commit875269cda5c8a8d206e9406fef61ff33603b9c9d (patch)
tree153cb85d4c8b07c14a1a197df7dfcff419fd27ae /app/assets/javascripts
parenta237bcc0965c376da768ab89a94c229f6f891495 (diff)
parentb9418ba1773e99dfa0cd6b06009e909985b9e9a0 (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')
-rw-r--r--app/assets/javascripts/backbone/cakeside.js.coffee12
-rw-r--r--app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee26
-rw-r--r--app/assets/javascripts/backbone/controllers/photos_controller.js.coffee16
-rw-r--r--app/assets/javascripts/backbone/routers/cakes_router.js.coffee28
-rw-r--r--app/assets/javascripts/backbone/routers/photos_router.js.coffee24
-rw-r--r--app/assets/javascripts/backbone/templates/photos/new.jst.ejs16
-rw-r--r--app/assets/javascripts/backbone/views/photos/new_view.js.coffee38
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