summaryrefslogtreecommitdiff
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authormo k <mo.khan@gmail.com>2014-07-05 10:04:57 -0600
committermo k <mo.khan@gmail.com>2014-07-05 10:04:57 -0600
commit81277a567453f40ce5cc20775be93efe0624eb6f (patch)
tree9d6f50fe0fc9010741c05d80fafa9bde3f8c7540 /app/assets/javascripts
parentab64290da6dabfb212f997eaa9fefe3a63a38d78 (diff)
parent231966f222c40b6fd0bc459617b30e8ed0baf607 (diff)
Merged in mocheen/cakeside/disqus-backbone (pull request #67)
create a backbone view to post comments to disqus.
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/backbone/cakeside.js.coffee4
-rw-r--r--app/assets/javascripts/backbone/models/cake.js.coffee3
-rw-r--r--app/assets/javascripts/backbone/routers/cakes_router.js.coffee3
-rw-r--r--app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs2
-rw-r--r--app/assets/javascripts/backbone/views/cakes/show_view.js.coffee6
-rw-r--r--app/assets/javascripts/backbone/views/disqus_view.js.coffee32
6 files changed, 49 insertions, 1 deletions
diff --git a/app/assets/javascripts/backbone/cakeside.js.coffee b/app/assets/javascripts/backbone/cakeside.js.coffee
index e9cfcd63..466df947 100644
--- a/app/assets/javascripts/backbone/cakeside.js.coffee
+++ b/app/assets/javascripts/backbone/cakeside.js.coffee
@@ -27,6 +27,10 @@ window.CakeSide =
@categories = new CakeSide.Collections.CategoriesCollection()
@categories.fetch(reset: true)
+ @disqus_view = new CakeSide.Views.DisqusView
+ disqus_shortname: data.disqus_shortname
+ CakeSide.Application.reqres.setHandler 'CommentView', =>
+ @disqus_view
CakeSide.Application.reqres.setHandler 'CakesRepository', =>
@cakes
CakeSide.Application.reqres.setHandler 'CategoriesRepository', =>
diff --git a/app/assets/javascripts/backbone/models/cake.js.coffee b/app/assets/javascripts/backbone/models/cake.js.coffee
index 9773a20f..5e64f886 100644
--- a/app/assets/javascripts/backbone/models/cake.js.coffee
+++ b/app/assets/javascripts/backbone/models/cake.js.coffee
@@ -18,6 +18,9 @@ class CakeSide.Models.Cake extends Backbone.Model
photos: ->
CakeSide.Application.request('PhotosRepository', @id)
+ public_url: ->
+ "#{window.location.origin}/creations/#{@get('slug')}"
+
class CakeSide.Collections.CakesCollection extends Backbone.Collection
model: CakeSide.Models.Cake
url: '/api/v1/cakes'
diff --git a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee b/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
index fe0549f3..0539c626 100644
--- a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
+++ b/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
@@ -9,6 +9,7 @@ class CakeSide.Routers.CakesRouter extends Backbone.Router
".*": "index"
index: ->
+ CakeSide.Application.request('CommentView').hide()
@view = new CakeSide.Views.Cakes.IndexView(collection: CakeSide.Application.request('CakesRepository'))
$("#backbone-content").html(@view.render().el)
@@ -18,10 +19,12 @@ class CakeSide.Routers.CakesRouter extends Backbone.Router
$("#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/templates/cakes/delete_modal.jst.ejs b/app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs
index 64f2c21a..30d53f86 100644
--- a/app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs
+++ b/app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs
@@ -14,7 +14,7 @@
This will permanently delete <b><%= name %></b> photos, and comments.
</p>
<p>
- Please type in the name of the repository to confirm.
+ Please type in the name of the cake to confirm.
<input id="confirmation-textbox" type="text" class="input-xxlarge" autofocus="" required="" aria-label="Type in the name of the cake to confirm that you want to delete this repository.">
</p>
</div>
diff --git a/app/assets/javascripts/backbone/views/cakes/show_view.js.coffee b/app/assets/javascripts/backbone/views/cakes/show_view.js.coffee
index 6d6e968b..ce1f54d9 100644
--- a/app/assets/javascripts/backbone/views/cakes/show_view.js.coffee
+++ b/app/assets/javascripts/backbone/views/cakes/show_view.js.coffee
@@ -20,6 +20,7 @@ class CakeSide.Views.Cakes.ShowView extends Marionette.CompositeView
constructor: (options) ->
super(options)
@collection = @model.photos()
+ @displayComments()
launchAddPhoto: ->
@displayModal(new CakeSide.Views.Photos.NewModalView(cake: @model))
@@ -31,3 +32,8 @@ class CakeSide.Views.Cakes.ShowView extends Marionette.CompositeView
$("#modal").html(view.render().el)
$("#modal").modal()
+ displayComments: ->
+ CakeSide.Application.request('CommentView').render
+ identifier: "c-#{@model.id}"
+ title: @model.get('name')
+ url: @model.public_url()
diff --git a/app/assets/javascripts/backbone/views/disqus_view.js.coffee b/app/assets/javascripts/backbone/views/disqus_view.js.coffee
new file mode 100644
index 00000000..1379691a
--- /dev/null
+++ b/app/assets/javascripts/backbone/views/disqus_view.js.coffee
@@ -0,0 +1,32 @@
+class CakeSide.Views.DisqusView extends Backbone.View
+ el: "#disqus_thread"
+ initialize: (options) ->
+ disqus = document.createElement('script')
+ disqus.type = 'text/javascript'
+ disqus.async = true
+ disqus.src = "//#{options.disqus_shortname}.disqus.com/embed.js"
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(disqus)
+
+ render: (options) ->
+ try
+ @$el.removeClass('hidden')
+ that = @
+ DISQUS.reset
+ reload: true,
+ config: ->
+ @page.identifier = options.identifier
+ @page.title = "CakeSide - #{options.title}"
+ @page.url = options.url
+ @callbacks.onNewComment = [that.saveComment]
+ @
+ catch error
+ console.log(error)
+ finally
+ @
+
+ hide: ->
+ @$el.addClass('hidden')
+
+ saveComment: (comment) ->
+ $.post Routes.comments_path(), { id: comment.id, url: document.URL, comment: comment }, (result) ->
+ console.log(result)