From 7346921473a44a0b990ea1c7dcf6dd2c46f75e16 Mon Sep 17 00:00:00 2001 From: Dennis Collinson Date: Tue, 24 Apr 2012 20:45:43 -0700 Subject: [PATCH] MS DC; you can now kill a post on your profile. --- app/assets/images/buttons/delete.png | Bin 0 -> 3347 bytes app/assets/images/buttons/delete_hover.png | Bin 0 -> 3399 bytes .../javascripts/app/views/canvas_view.js | 1 + .../javascripts/app/views/small_frame.js | 14 ++++++-- .../app/views/stream_object_view.js | 8 +---- .../app/views/stream_post_views.js | 5 +++ .../stylesheets/new_styles/_canvas.scss | 33 +++++++++++++++++- .../stylesheets/new_styles/_profile.scss | 29 --------------- app/assets/templates/small-frame.jst.hbs | 6 ++-- spec/javascripts/app/pages/profile_spec.js | 21 +++++++++++ .../app/views/small_frame_view_spec.js | 11 +----- 11 files changed, 76 insertions(+), 52 deletions(-) create mode 100644 app/assets/images/buttons/delete.png create mode 100644 app/assets/images/buttons/delete_hover.png diff --git a/app/assets/images/buttons/delete.png b/app/assets/images/buttons/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..f1035eab0c7c0d03983027cdc18c29edede70543 GIT binary patch literal 3347 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 Ub?i%TR(@0LZC!|$Y{&`!0YECP?EnA( literal 0 HcmV?d00001 diff --git a/app/assets/images/buttons/delete_hover.png b/app/assets/images/buttons/delete_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..89be6fd52de296be82ebf47d4e2c86636ac143d7 GIT binary patch literal 3399 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 XQ;xT2zhNKP__eVl*x>J(lSBRkpoQyZ literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/app/views/canvas_view.js b/app/assets/javascripts/app/views/canvas_view.js index 333da8f96..e613781da 100644 --- a/app/assets/javascripts/app/views/canvas_view.js +++ b/app/assets/javascripts/app/views/canvas_view.js @@ -8,6 +8,7 @@ app.views.Canvas = app.views.Base.extend(_.extend({}, app.views.infiniteScrollMi }, renderTemplate : function() { + this.$el.empty() this.stream.items.each(_.bind(function(post){ this.$el.append(this.createPostView(post).render().el); }, this)) diff --git a/app/assets/javascripts/app/views/small_frame.js b/app/assets/javascripts/app/views/small_frame.js index 0f29565d1..a826527e8 100644 --- a/app/assets/javascripts/app/views/small_frame.js +++ b/app/assets/javascripts/app/views/small_frame.js @@ -1,4 +1,6 @@ -app.views.SmallFrame = app.views.Base.extend({ +//= require "./post_view" + +app.views.SmallFrame = app.views.Post.extend({ SINGLE_COLUMN_WIDTH : 265, DOUBLE_COLUMN_WIDTH : 560, @@ -9,7 +11,8 @@ app.views.SmallFrame = app.views.Base.extend({ events : { "click .content" : "goToPost", - "click .fav" : "goToPost" + "click .fav" : "favoritePost", + "click .delete" : "killPost" }, subviews : { @@ -93,8 +96,13 @@ app.views.SmallFrame = app.views.Base.extend({ _.delay(function(){app.page.stream.trigger("reLayout")}, 500) }, + killPost : function(){ + this.destroyModel() + _.delay(function(){app.page.stream.trigger("reLayout")}, 0) + }, + goToPost : function() { - if(app.page.editMode) { this.favoritePost(); return false; } + if(app.page.editMode) { return false; } app.router.navigate(this.model.url(), true) } }); \ No newline at end of file diff --git a/app/assets/javascripts/app/views/stream_object_view.js b/app/assets/javascripts/app/views/stream_object_view.js index 42d7bc6d4..ff95eeea3 100644 --- a/app/assets/javascripts/app/views/stream_object_view.js +++ b/app/assets/javascripts/app/views/stream_object_view.js @@ -8,12 +8,6 @@ app.views.StreamObject = app.views.Base.extend({ } this.model.destroy(); - this.slideAndRemove(); - }, - - slideAndRemove : function() { - $(this.el).slideUp(400, function() { - $(this).remove(); - }); + this.remove(); } }); diff --git a/app/assets/javascripts/app/views/stream_post_views.js b/app/assets/javascripts/app/views/stream_post_views.js index 599504911..46e4aa255 100644 --- a/app/assets/javascripts/app/views/stream_post_views.js +++ b/app/assets/javascripts/app/views/stream_post_views.js @@ -79,6 +79,11 @@ app.views.StreamPost = app.views.Post.extend({ }) }, + remove : function() { + $(this.el).slideUp(400, _.bind(function(){this.$el.remove()}, this)); + return this + }, + hidePost : function(evt) { if(evt) { evt.preventDefault(); } if(!confirm(Diaspora.I18n.t('confirm_dialog'))) { return } diff --git a/app/assets/stylesheets/new_styles/_canvas.scss b/app/assets/stylesheets/new_styles/_canvas.scss index 41a63c6a8..21cf4c450 100644 --- a/app/assets/stylesheets/new_styles/_canvas.scss +++ b/app/assets/stylesheets/new_styles/_canvas.scss @@ -102,13 +102,44 @@ body { } } - .fav { + .controls{ position : absolute; z-index : 100; top : 10px; right : 10px; + + display : none; + + .edit-mode & { + display : inline-block; + } + + a, span { + display : inline-block; + background-size : 30px 30px; + height : 30px; + width : 30px; + text-decoration : none; + } + + .delete { + background-image : image_url('buttons/delete.png'); + + &:hover { + background-image : image_url('buttons/delete_hover.png'); + } + } + + .fav { + background-image : image_url('buttons/star_not_faved.png'); + + &.faved, &:hover { + background-image : image_url('buttons/star_faved.png'); + } + } } + .info { @include transition(bottom); @include box-shadow(0,-1px,3px,rgba(0,0,0,0.3)); diff --git a/app/assets/stylesheets/new_styles/_profile.scss b/app/assets/stylesheets/new_styles/_profile.scss index 74d986322..9d60f3db2 100644 --- a/app/assets/stylesheets/new_styles/_profile.scss +++ b/app/assets/stylesheets/new_styles/_profile.scss @@ -18,40 +18,12 @@ padding : 10px 0; } -.canvas-frame .fav { - display : none; - - background-image : image_url('buttons/star_not_faved.png'); - background-size : 30px 30px; - height : 30px; - width : 30px; - - &.faved { - background-image : image_url('buttons/star_faved.png'); - } - - &:hover { - text-decoration : none; - } - -} - /* functionality under edit mode */ .edit-mode { #edit-controls { @include opacity(1); } - .canvas-frame .fav { - display : block; - } - - .canvas-frame { - .info { - display : none - } - } - #edit-mode-toggle.control { @include opacity(1); } @@ -94,5 +66,4 @@ @include opacity(0.8); } } - } \ No newline at end of file diff --git a/app/assets/templates/small-frame.jst.hbs b/app/assets/templates/small-frame.jst.hbs index 6406e917a..4975f7029 100644 --- a/app/assets/templates/small-frame.jst.hbs +++ b/app/assets/templates/small-frame.jst.hbs @@ -1,6 +1,8 @@
- - +
+ + +
{{#if photos}}
diff --git a/spec/javascripts/app/pages/profile_spec.js b/spec/javascripts/app/pages/profile_spec.js index 0dd76b126..954fe9273 100644 --- a/spec/javascripts/app/pages/profile_spec.js +++ b/spec/javascripts/app/pages/profile_spec.js @@ -61,6 +61,27 @@ describe("app.pages.Profile", function(){ expect(this.post.toggleFavorite).toHaveBeenCalled() }) }) + + context("clicking delete", function(){ + beforeEach(function () { + spyOn(window, "confirm").andReturn(true); + this.page.render() + }) + + it("kills the model", function(){ + spyOn(this.post, "destroy") + this.page.$(".canvas-frame:first a.delete").click() + expect(this.post.destroy).toHaveBeenCalled() + }) + + it("removes the frame", function(){ + spyOn($.fn, "remove").andCallThrough() + expect(this.page.$(".canvas-frame").length).toBe(1) + this.page.$(".canvas-frame:first a.delete").click() + waitsFor(function(){ return $.fn.remove.wasCalled }) + runs(function(){ expect(this.page.$(".canvas-frame").length).toBe(0) }) + }) + }) }); describe("edit mode", function(){ diff --git a/spec/javascripts/app/views/small_frame_view_spec.js b/spec/javascripts/app/views/small_frame_view_spec.js index 588bbbfd0..63c7eacb2 100644 --- a/spec/javascripts/app/views/small_frame_view_spec.js +++ b/spec/javascripts/app/views/small_frame_view_spec.js @@ -51,7 +51,7 @@ describe("app.views.SmallFrame", function(){ describe("redirecting to a post", function(){ beforeEach(function(){ - app.page = {editMode : false} + app.page = { editMode : false } app.router = new app.Router() spyOn(app.router, "navigate") }) @@ -60,14 +60,5 @@ describe("app.views.SmallFrame", function(){ this.view.goToPost() expect(app.router.navigate).toHaveBeenCalled() }) - - it("doesn't redirect if the page is in edit mode, and instead favorites the post", function() { - app.page = {editMode : true} - - spyOn(this.view, "favoritePost") - this.view.goToPost() - expect(app.router.navigate).not.toHaveBeenCalled() - expect(this.view.favoritePost).toHaveBeenCalled() - }) }) });