diff options
| author | mo k <mo.khan@gmail.com> | 2014-07-05 10:04:57 -0600 |
|---|---|---|
| committer | mo k <mo.khan@gmail.com> | 2014-07-05 10:04:57 -0600 |
| commit | 81277a567453f40ce5cc20775be93efe0624eb6f (patch) | |
| tree | 9d6f50fe0fc9010741c05d80fafa9bde3f8c7540 /app/assets/javascripts | |
| parent | ab64290da6dabfb212f997eaa9fefe3a63a38d78 (diff) | |
| parent | 231966f222c40b6fd0bc459617b30e8ed0baf607 (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')
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) |
