From 64a73fb665467a7c602b5a8ca15059a2e93c1ead Mon Sep 17 00:00:00 2001 From: danielgrippi Date: Mon, 21 May 2012 18:44:51 -0700 Subject: [PATCH] new post types. remove old ones. yeah. --- app/assets/images/typist_texture.png | Bin 0 -> 25475 bytes app/assets/javascripts/app/models/post.js | 11 +- .../app/models/post/template_picker.js | 4 +- .../javascripts/app/views/post/mood_view.js | 12 ++ .../javascripts/app/views/post/small_frame.js | 20 ++- .../stylesheets/new_styles/_canvas.scss | 125 +++++++++++------- features/new_hotness/trumpeter.feature | 8 +- .../app/models/post/template_picker_spec.js | 12 +- spec/javascripts/app/pages/framer_spec.js | 12 +- 9 files changed, 127 insertions(+), 77 deletions(-) create mode 100644 app/assets/images/typist_texture.png diff --git a/app/assets/images/typist_texture.png b/app/assets/images/typist_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..c0486789e71cded3caa2208a2b972527005ee6dc GIT binary patch literal 25475 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 literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/app/models/post.js b/app/assets/javascripts/app/models/post.js index 6f13c4812..5ec74b6ff 100644 --- a/app/assets/javascripts/app/models/post.js +++ b/app/assets/javascripts/app/models/post.js @@ -59,9 +59,14 @@ app.models.Post = Backbone.Model.extend(_.extend({}, app.models.formatDateMixin, headlineLimit : 118, frameMoods : [ - "Day", - "Night", + // "Day", + // "Night", "Wallpaper", - "Newspaper" + // "Newspaper", + + // NEW SHIT + "Vanilla", + "Typist", + "Fridge" ] }); diff --git a/app/assets/javascripts/app/models/post/template_picker.js b/app/assets/javascripts/app/models/post/template_picker.js index 1f50d9a60..c4a46bb84 100644 --- a/app/assets/javascripts/app/models/post/template_picker.js +++ b/app/assets/javascripts/app/models/post/template_picker.js @@ -9,11 +9,11 @@ _.extend(app.models.Post.TemplatePicker.prototype, { var frameName if(this.isNewspaper()){ - frameName = "Newspaper" + frameName = "Typist" } else if(this.isWallpaper()) { frameName = "Wallpaper" } else { - frameName = "Day" + frameName = "Vanilla" } return frameName diff --git a/app/assets/javascripts/app/views/post/mood_view.js b/app/assets/javascripts/app/views/post/mood_view.js index 064a69c85..14748bc3a 100644 --- a/app/assets/javascripts/app/views/post/mood_view.js +++ b/app/assets/javascripts/app/views/post/mood_view.js @@ -52,3 +52,15 @@ app.views.Post.Wallpaper = app.views.Post.Mood.extend({ }) } }) + +app.views.Post.Typist = app.views.Post.Mood.extend({ + mood : "typist" +}) + +app.views.Post.Vanilla = app.views.Post.Mood.extend({ + mood : "vanilla" +}) + +app.views.Post.Fridge = app.views.Post.Mood.extend({ + mood : "fridge" +}) \ No newline at end of file diff --git a/app/assets/javascripts/app/views/post/small_frame.js b/app/assets/javascripts/app/views/post/small_frame.js index 741ed7ef9..976b2cfdd 100644 --- a/app/assets/javascripts/app/views/post/small_frame.js +++ b/app/assets/javascripts/app/views/post/small_frame.js @@ -47,24 +47,22 @@ app.views.Post.SmallFrame = app.views.Post.extend({ colorClass : function() { var text = this.model.get("text") - , baseClass = $.trim(text).length == 0 ? "no-text" : 'has-text'; + , baseClass = $.trim(text).length == 0 ? "no-text" : "has-text"; + + if(this.model.get("photos").length > 0 || this.model.get("o_embed_cache")) + baseClass += " has-media"; if(baseClass == "no-text" || this.model.get("photos").length > 0 || this.model.get("o_embed_cache")) { return baseClass } var randomColor = _.first(_.shuffle(['cyan', 'green', 'yellow', 'purple', 'lime-green', 'orange', 'red', 'turquoise', 'sand'])); - var textClass; - if(text.length > 240) { - textClass = "blog-text x2 width" - } else if(text.length > 140) { - textClass = randomColor - } else if(text.length > 40) { - textClass = randomColor - } else { - textClass = "big-text " + randomColor + var textClass = randomColor; + + if(text.length < 40) { + textClass += " big-text" } - return [baseClass, textClass, "sticky-note"].join(" ") + return [baseClass, textClass].join(" ") }, dimensionsClass : function() { diff --git a/app/assets/stylesheets/new_styles/_canvas.scss b/app/assets/stylesheets/new_styles/_canvas.scss index 29d09c74f..db12a9c8a 100644 --- a/app/assets/stylesheets/new_styles/_canvas.scss +++ b/app/assets/stylesheets/new_styles/_canvas.scss @@ -27,6 +27,15 @@ cursor : -webkit-zoom-in; } + .content { + /* default height to be overridden */ + min-height : $column-width + px; + } + + &.has-media .content { + min-height : 0; + } + .content { @include transition(-webkit-transform); @include box-shadow(0, 8px, 50px, rgba(0,0,0,0.9)); @@ -190,55 +199,23 @@ font-size : 1.5em; line-height : 1.2em; + /* I'D DO ANYTHING FOR TEXT, BUT I WON'T DO THAT (see: http://www.youtube.com/watch?v=9GNhdQRbXhc) */ + max-height : 485.5px; + img { max-width: 100%; width: 100%; } + p { + word-break : break-word; + } + p:last-child { margin-bottom: 0; } } - &.sticky-note { - .content{ - min-height : $column-width + px; - .text-content { - margin: 30px 20px; - } - } - - &.big-text { - display : table; - - .text-content { - display : table-cell; - position : absolute; - - margin : 0; - - margin-top : 20%; - height : 100%; - width : 100%; - - top : 0; - left : 0; - } - - p { - font-family : "Noteworthy", "Marker Felt", "Comic Sans"; - font-style : italic; - text-align : center; - font-weight : bold; - padding: 0 20px; - } - } - } - - &.sticky-note .text-content { - color : #555; - } - &.cyan .background-color { background-color : rgba($cyan, 0.2); } &.green .background-color { background-color : rgba($green, 0.2); } &.yellow .background-color { background-color : rgba($yellow, 0.2); } @@ -272,15 +249,13 @@ } } - &.day:not(.sticky-note), - &.has-text:not(.sticky-note):not(.wallpaper), - &.night:not(.sticky-note) { + &:not(.wallpaper) { img { border-bottom : 1px solid #ddd; } .text-content { - padding : 10px 20px; + padding : 20px; font-size : 14px; line-height : 18px; color : #444; @@ -289,7 +264,14 @@ &.big-text { .text-content { + display : table; + height : 225px; + width : 225px; + p { + display : table-cell; + vertical-align : middle; + font-size : 2.0em; line-height : 1.1em; text-align : center; @@ -297,9 +279,12 @@ } } + &.x2.big-text .text-content { + width : $two-column-width - 40 + px; + } /* larger declarations */ - &.x2.width .content { @include wide(); } + &.x2.width .content { @include wide(); } &.sticky-note.x2.height .content { min-height : $two-row-height + px; @@ -325,8 +310,58 @@ @include centered-frame(); font-size: 2em; color: white; - @include opacity(1); + + p { + text-shadow : none; + padding : 0 10px; + } + } + } + + /* new styles go! */ + &.typist { + .content { + background : { + image : image_url("typist_texture.png"); + color : transparent; + } + } + + .background-color { + display : none; + } + + p { + font-family : "American Typewriter", "Courier"; + letter-spacing : 1.5px; + font-size : 0.9em; + color : #111; + } + } + + &.fridge { + p { + font : { + family : "Noteworthy", "Marker Felt", "Comic Sans"; + style : italic; + } + font-size : 2em; + line-height : 1.4em; + } + } + + &.vanilla { + .background-color { + display : none; + } + + p { + color : #111; text-shadow : none; + font : { + weight : normal; + family : Roboto-Light; + } } } } diff --git a/features/new_hotness/trumpeter.feature b/features/new_hotness/trumpeter.feature index d75b4f415..ce4cac28a 100644 --- a/features/new_hotness/trumpeter.feature +++ b/features/new_hotness/trumpeter.feature @@ -54,8 +54,8 @@ Feature: Creating a new post Then it should be a wallpaper small frame with the background "button.gif" Then I should see "This is hella customized" in the framer preview - When I select the mood "Newspaper" - Then the post's mood should be "Newspaper" + When I select the mood "Typist" + Then the post's mood should be "Typist" And "button.gif" should be in the post's small frame And I should see "This is hella customized" in the framer preview @@ -63,7 +63,7 @@ Feature: Creating a new post And I go back to the composer And I write "It sure is a beautiful Day" And I start the framing process - Then the post's mood should be "Newspaper" + Then the post's mood should be "Typist" And I should see "It sure is a beautiful Day" in the framer preview When I finalize my frame @@ -72,7 +72,7 @@ Feature: Creating a new post When I click into the "It sure is a beautiful Day" post #on show page - And the post's mood should still be "Newspaper" + And the post's mood should still be "Typist" Scenario: The Wallpaper mood When I write "This is a pithy status" with body "And this is a long body" diff --git a/spec/javascripts/app/models/post/template_picker_spec.js b/spec/javascripts/app/models/post/template_picker_spec.js index 77b0545bd..56371d775 100644 --- a/spec/javascripts/app/models/post/template_picker_spec.js +++ b/spec/javascripts/app/models/post/template_picker_spec.js @@ -10,8 +10,8 @@ describe("app.models.Post.TemplatePicker", function(){ this.post.set({text : window.hipsterIpsumFourParagraphs }) }) - it("returns Wallpaper", function(){ - expect(this.templatePicker.getFrameName()).toBe("Newspaper") + it("returns Typist", function(){ + expect(this.templatePicker.getFrameName()).toBe("Typist") }) }) @@ -31,13 +31,13 @@ describe("app.models.Post.TemplatePicker", function(){ this.post.set({photos : [factory.photoAttrs(), factory.photoAttrs()]}) }) - it("returns Day", function(){ - expect(this.templatePicker.getFrameName()).toBe("Day") + it("returns Vanilla", function(){ + expect(this.templatePicker.getFrameName()).toBe("Vanilla") }) }) - it("returns 'Day' by default", function(){ - expect(this.templatePicker.getFrameName()).toBe("Day") + it("returns 'Vanilla' by default", function(){ + expect(this.templatePicker.getFrameName()).toBe("Vanilla") }) }) }) diff --git a/spec/javascripts/app/pages/framer_spec.js b/spec/javascripts/app/pages/framer_spec.js index 3622c44fc..07de1780f 100644 --- a/spec/javascripts/app/pages/framer_spec.js +++ b/spec/javascripts/app/pages/framer_spec.js @@ -30,8 +30,8 @@ describe("app.pages.Framer", function(){ expect(this.model.setFrameName).toHaveBeenCalled() }) - it("sets the frame_name of the model to 'Day' by default", function(){ //jasmine integration test, arguably unnecessary - expect(this.model.get("frame_name")).toBe("Day") + it("sets the frame_name of the model to 'Vanilla' by default", function(){ //jasmine integration test, arguably unnecessary + expect(this.model.get("frame_name")).toBe("Vanilla") }) }) @@ -50,9 +50,9 @@ describe("app.pages.Framer", function(){ describe("setting the model's attributes from the various form fields", function(){ beforeEach(function(){ this.page.$("input.mood").attr("checked", false) //radio button hax - expect(app.frame.get("frame_name")).not.toBe("Night") + expect(app.frame.get("frame_name")).not.toBe("Typist") this.page.$("input.aspect_ids").val("public") - this.page.$("input[value='Night']").attr("checked", "checked") + this.page.$("input[value='Typist']").attr("checked", "checked") this.page.$("input.services[value=facebook]").attr("checked", "checked") this.page.$("input.services[value=twitter]").attr("checked", "checked") }) @@ -60,13 +60,13 @@ describe("app.pages.Framer", function(){ it("instantiates a post on form submit", function(){ this.page.$("input").trigger("change") //runs setFormAttrs waitsFor(function(){ - return this.page.model.get("frame_name") == "Night" + return this.page.model.get("frame_name") == "Typist" }) runs(function(){ expect(this.page.model.get("aspect_ids")).toEqual(["public"]) expect(this.page.model.get("services")).toEqual(["facebook", "twitter"]) - expect(this.page.model.get("frame_name")).toBe("Night") + expect(this.page.model.get("frame_name")).toBe("Typist") }) }) });