summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/backbone
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2014-07-08 22:30:18 -0600
committermo khan <mo@mokhan.ca>2014-07-08 22:30:18 -0600
commit7757b66ae7fc6fa13fc5b59bc19495107d8eec45 (patch)
treef19a6724f4448d907726866aa682d7322b6cbf24 /app/assets/javascripts/backbone
parent21f849302106a09b5c5f368f652bb1fd9a98174e (diff)
add a my#tutorials tab.
Diffstat (limited to 'app/assets/javascripts/backbone')
-rw-r--r--app/assets/javascripts/backbone/cakeside.js.coffee6
-rw-r--r--app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee8
-rw-r--r--app/assets/javascripts/backbone/models/tutorials.js.coffee9
-rw-r--r--app/assets/javascripts/backbone/routers/cakes_router.js.coffee1
-rw-r--r--app/assets/javascripts/backbone/routers/tutorials_router.js.coffee3
-rw-r--r--app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs1
-rw-r--r--app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs7
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee9
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee5
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee6
10 files changed, 54 insertions, 1 deletions
diff --git a/app/assets/javascripts/backbone/cakeside.js.coffee b/app/assets/javascripts/backbone/cakeside.js.coffee
index 3de029c5..a601d382 100644
--- a/app/assets/javascripts/backbone/cakeside.js.coffee
+++ b/app/assets/javascripts/backbone/cakeside.js.coffee
@@ -26,6 +26,8 @@ window.CakeSide =
controller: new CakeSide.Controllers.CakesController()
new CakeSide.Routers.PhotosRouter
controller: new CakeSide.Controllers.PhotosController()
+ new CakeSide.Routers.TutorialsRouter
+ controller: new CakeSide.Controllers.TutorialsController()
CakeSide.Application.on 'start', ->
if Backbone.history
@@ -34,6 +36,8 @@ window.CakeSide =
@cakes = new CakeSide.Collections.CakesCollection()
@categories = new CakeSide.Collections.CategoriesCollection()
@categories.fetch(reset: true)
+ @tutorials = new CakeSide.Collections.TutorialsCollection()
+ @tutorials.fetch(reset: true)
@disqus_view = new CakeSide.Views.DisqusView
disqus_shortname: data.disqus_shortname
@@ -52,6 +56,8 @@ window.CakeSide =
@photos_cache[cake_id] = photos
photos.fetch(reset: true)
photos
+ CakeSide.Application.reqres.setHandler 'TutorialsRepository', =>
+ @tutorials
@cakes.fetch(reset: true).done ->
CakeSide.Application.start()
diff --git a/app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee b/app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee
new file mode 100644
index 00000000..86d84d5b
--- /dev/null
+++ b/app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee
@@ -0,0 +1,8 @@
+class CakeSide.Controllers.TutorialsController extends Marionette.Controller
+ views: CakeSide.Views.Tutorials
+ initialize: (options) ->
+ @content_region = CakeSide.Application.content_region
+ @tutorials = CakeSide.Application.request('TutorialsRepository')
+
+ index: ->
+ @content_region.show(new @views.IndexView(collection: @tutorials))
diff --git a/app/assets/javascripts/backbone/models/tutorials.js.coffee b/app/assets/javascripts/backbone/models/tutorials.js.coffee
new file mode 100644
index 00000000..d7eb524b
--- /dev/null
+++ b/app/assets/javascripts/backbone/models/tutorials.js.coffee
@@ -0,0 +1,9 @@
+class CakeSide.Models.Tutorial extends Backbone.Model
+ paramRoot: 'tutorial'
+
+ defaults:
+ id: null
+
+class CakeSide.Collections.TutorialsCollection extends Backbone.Collection
+ model: CakeSide.Models.Tutorial
+ url: '/api/v1/tutorials'
diff --git a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee b/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
index 95901c0e..c418a22e 100644
--- a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
+++ b/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
@@ -4,4 +4,3 @@ class CakeSide.Routers.CakesRouter extends Marionette.AppRouter
"cakes/:id/edit": "edit"
"cakes/:id": "show"
"cakes": "index"
-
diff --git a/app/assets/javascripts/backbone/routers/tutorials_router.js.coffee b/app/assets/javascripts/backbone/routers/tutorials_router.js.coffee
new file mode 100644
index 00000000..a7e6ec36
--- /dev/null
+++ b/app/assets/javascripts/backbone/routers/tutorials_router.js.coffee
@@ -0,0 +1,3 @@
+class CakeSide.Routers.TutorialsRouter extends Marionette.AppRouter
+ appRoutes:
+ "tutorials": "index"
diff --git a/app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs b/app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs
new file mode 100644
index 00000000..ab9705b1
--- /dev/null
+++ b/app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs
@@ -0,0 +1 @@
+<p>You have no tutorials. <a href="#tutorials/new">Get Started</a></p>
diff --git a/app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs b/app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs
new file mode 100644
index 00000000..4c10d825
--- /dev/null
+++ b/app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs
@@ -0,0 +1,7 @@
+<div class="thumbnail">
+ <a href="#tutorials/<%= id %>"><img src="<%= image_url %>" /></a>
+ <div class="caption">
+ <h3><a href="#tutorials/<%= id %>"><%= heading %></a></h3>
+ <p><%= description %></p>
+ </div>
+</div>
diff --git a/app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee
new file mode 100644
index 00000000..fffb2252
--- /dev/null
+++ b/app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee
@@ -0,0 +1,9 @@
+#= require backbone/views/tutorials/no_tutorials_view
+#= require backbone/views/tutorials/tutorial_view
+CakeSide.Views.Tutorials ||= {}
+
+class CakeSide.Views.Tutorials.IndexView extends Marionette.CollectionView
+ childView: CakeSide.Views.Tutorials.TutorialView
+ emptyView: CakeSide.Views.Tutorials.NoTutorialsView
+ className: 'thumbnails'
+ tagName: 'ul'
diff --git a/app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee
new file mode 100644
index 00000000..77b2e71c
--- /dev/null
+++ b/app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee
@@ -0,0 +1,5 @@
+CakeSide.Views.Tutorials ||= {}
+
+class CakeSide.Views.Tutorials.NoTutorialsView extends Marionette.ItemView
+ template: JST['backbone/templates/tutorials/no_tutorials']
+ tagName: 'li'
diff --git a/app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee
new file mode 100644
index 00000000..addc5b2f
--- /dev/null
+++ b/app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee
@@ -0,0 +1,6 @@
+CakeSide.Views.Tutorials ||= {}
+
+class CakeSide.Views.Tutorials.TutorialView extends Marionette.ItemView
+ template: JST['backbone/templates/tutorials/tutorial']
+ tagName: 'li'
+ className: 'span3'