Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

initial import

  • Loading branch information...
commit ecf9f55e7dd77d2e7121d1e7f420cf4e436c4231 0 parents
John E. Vincent authored
7 .components
... ... @@ -0,0 +1,7 @@
  1 +---
  2 +:orm: mongomatic
  3 +:test: none
  4 +:mock: none
  5 +:script: none
  6 +:renderer: haml
  7 +:stylesheet: none
3  .gitignore
... ... @@ -0,0 +1,3 @@
  1 +.bundle
  2 +*.swp
  3 +.rvmrc
17 Gemfile
... ... @@ -0,0 +1,17 @@
  1 +source :rubygems
  2 +
  3 +# Project requirements
  4 +gem 'rake'
  5 +gem 'rack-flash'
  6 +gem 'thin' # or mongrel
  7 +
  8 +# Component requirements
  9 +gem 'haml'
  10 +gem 'mongomatic'
  11 +gem 'bson_ext', :require => "mongo"
  12 +
  13 +# Test requirements
  14 +
  15 +
  16 +# Padrino
  17 +gem 'padrino', "0.9.14"
79 Gemfile.lock
... ... @@ -0,0 +1,79 @@
  1 +GEM
  2 + remote: http://rubygems.org/
  3 + specs:
  4 + activesupport (2.3.8)
  5 + bson (1.0.4)
  6 + bson_ext (1.0.4)
  7 + daemons (1.1.0)
  8 + eventmachine (0.12.10)
  9 + git (1.2.5)
  10 + haml (3.0.17)
  11 + http_router (0.3.13)
  12 + rack (>= 1.0)
  13 + url_mount (>= 0.2.1)
  14 + i18n (0.4.1)
  15 + mail (2.2.5)
  16 + activesupport (>= 2.3.6)
  17 + mime-types
  18 + treetop (>= 1.4.5)
  19 + mime-types (1.16)
  20 + mongo (1.0.7)
  21 + bson (>= 1.0.4)
  22 + mongomatic (0.3.2)
  23 + activesupport (>= 2.3.5)
  24 + bson (>= 1.0.4)
  25 + bson_ext (>= 1.0.4)
  26 + mongo (>= 1.0.7)
  27 + padrino (0.9.14)
  28 + padrino-admin (= 0.9.14)
  29 + padrino-core (= 0.9.14)
  30 + padrino-gen (= 0.9.14)
  31 + padrino-helpers (= 0.9.14)
  32 + padrino-mailer (= 0.9.14)
  33 + padrino-admin (0.9.14)
  34 + padrino-core (= 0.9.14)
  35 + padrino-gen (= 0.9.14)
  36 + padrino-helpers (= 0.9.14)
  37 + padrino-core (0.9.14)
  38 + activesupport (>= 2.3.8)
  39 + http_router (>= 0.3.12)
  40 + sinatra (>= 1.0.0)
  41 + thor (>= 0.13.0)
  42 + padrino-gen (0.9.14)
  43 + bundler (>= 1.0.0.rc.2)
  44 + git
  45 + padrino-core (= 0.9.14)
  46 + padrino-helpers (0.9.14)
  47 + i18n (>= 0.4.1)
  48 + padrino-core (= 0.9.14)
  49 + padrino-mailer (0.9.14)
  50 + mail (>= 2.2.0)
  51 + padrino-core (= 0.9.14)
  52 + polyglot (0.3.1)
  53 + rack (1.2.1)
  54 + rack-flash (0.1.1)
  55 + rack
  56 + rake (0.8.7)
  57 + sinatra (1.0)
  58 + rack (>= 1.0)
  59 + thin (1.2.7)
  60 + daemons (>= 1.0.9)
  61 + eventmachine (>= 0.12.6)
  62 + rack (>= 1.0.0)
  63 + thor (0.14.0)
  64 + treetop (1.4.8)
  65 + polyglot (>= 0.3.1)
  66 + url_mount (0.2.1)
  67 + rack
  68 +
  69 +PLATFORMS
  70 + ruby
  71 +
  72 +DEPENDENCIES
  73 + bson_ext
  74 + haml
  75 + mongomatic
  76 + padrino (= 0.9.14)
  77 + rack-flash
  78 + rake
  79 + thin
34 app/app.rb
... ... @@ -0,0 +1,34 @@
  1 +class Pblog < Padrino::Application
  2 + register Padrino::Mailer
  3 + register Padrino::Helpers
  4 +
  5 + ##
  6 + # Application configuration options
  7 + #
  8 + # set :raise_errors, true # Show exceptions (default for development)
  9 + # set :public, "foo/bar" # Location for static assets (default root/public)
  10 + # set :reload, false # Reload application files (default in development)
  11 + # set :default_builder, "foo" # Set a custom form builder (default 'StandardFormBuilder')
  12 + # set :locale_path, "bar" # Set path for I18n translations (defaults to app/locale/)
  13 + # enable :sessions # Disabled by default
  14 + # disable :flash # Disables rack-flash (enabled by default if sessions)
  15 + # layout :my_layout # Layout can be in views/layouts/foo.ext or views/foo.ext (default :application)
  16 + #
  17 +
  18 + ##
  19 + # You can configure for a specified environment like:
  20 + #
  21 + # configure :development do
  22 + # set :foo, :bar
  23 + # disable :asset_stamp # no asset timestamping for dev
  24 + # end
  25 + #
  26 +
  27 + ##
  28 + # You can manage errors like:
  29 + #
  30 + # error 404 do
  31 + # render 'errors/404'
  32 + # end
  33 + #
  34 +end
37 app/controllers/post.rb
... ... @@ -0,0 +1,37 @@
  1 +Pblog.controllers :post do
  2 +
  3 + get :index do
  4 + @posts = Post.all
  5 + render "posts/index"
  6 + end
  7 +
  8 + get :new do
  9 + @post = Post.new
  10 + render "posts/new"
  11 + end
  12 +
  13 + post :create do
  14 + @post =Post.new(params[:post])
  15 + if @post.insert
  16 + redirect url(:post, :index)
  17 + else
  18 + render "posts/new"
  19 + end
  20 + end
  21 +
  22 + get :edit, :with => :id do
  23 + @post = Post.find_one({"_id" => BSON::ObjectID(params[:id])})
  24 + render 'posts/edit'
  25 + end
  26 +
  27 + put :update, :with => :id do
  28 + @post = Post.find_one({"_id" => BSON::ObjectID(params[:id])})
  29 + @post.merge(params[:post])
  30 + if @post.update
  31 + redirect url(:post, :index)
  32 + else
  33 + render "posts/edit"
  34 + end
  35 + end
  36 +
  37 +end
7 app/helpers/post_helper.rb
... ... @@ -0,0 +1,7 @@
  1 +# Helper methods defined here can be accessed in any controller or view in the application
  2 +
  3 +Pblog.helpers do
  4 + # def simple_helper_method
  5 + # ...
  6 + # end
  7 +end
46 app/models/post.rb
... ... @@ -0,0 +1,46 @@
  1 +class Post < Mongomatic::Base
  2 + include Mongomatic::Expectations::Helper
  3 +
  4 + # Mongomatic does not have the traditional
  5 + # model definition that AR/MM/DM et. al. have.
  6 + # Staying true to the "ad-hoc" nature of MongoDB,
  7 + # there are no explicit column definitions in the
  8 + # model file.
  9 +
  10 + # However you can "fake it" by making a column
  11 + # required using expectations
  12 + # For the sake of padrino g model,
  13 + # we'll assume that any property defined
  14 + # on the command-line is required
  15 + # In the case of Integer types, we'll add
  16 + # the expectation: be_a_number
  17 + # Future enhancement may allow a regex for
  18 + # String datatypes
  19 +
  20 +
  21 + # Examples
  22 + # def validate
  23 + # expectations do
  24 + # be_present self['name'], "Name cannot be blank"
  25 + # be_present self['email'], "Email cannot be blank"
  26 + # be_present self['age'], "Age cannot be blank"
  27 + # be_present self['password'], "Password cannot be blank"
  28 + # be_a_number self['age'], "Age must be a number"
  29 + # be_of_length self['password'], "Password must be at least 8 characters", :minimum => 8
  30 + # end
  31 + # end
  32 +
  33 + # def create_indexes
  34 + # self.collection.create_index('name', :unique => true)
  35 + # self.collection.create_index('email', :unique => true)
  36 + # self.collection.create_index('age')
  37 + # end
  38 + def validate
  39 + expectations do
  40 + be_present self['name'], 'name cannot be blank'
  41 + be_present self['body'], 'body cannot be blank'
  42 +
  43 + end
  44 + end
  45 +
  46 +end
25 app/views/posts/edit.haml
... ... @@ -0,0 +1,25 @@
  1 +<!doctype html>
  2 +%html.no-js{:lang => "en"}
  3 + %head
  4 + %meta{:charset => "utf-8"}/
  5 + %title My Blog Posts!
  6 + %link{:href => "/favicon.ico", :rel => "shortcut icon"}/
  7 + %link{:href => "/css/style.css?v=1", :rel => "stylesheet"}/
  8 + %body
  9 + #container
  10 + %header
  11 + #main
  12 + - form_for @post, url(:post, :update, :id => @post['_id']), :method => :put do |f|
  13 + .group
  14 + =f.label :name
  15 + =f.text_field :name, :value => @post['name']
  16 + .group
  17 + =f.label :author
  18 + =f.text_field :author, :value => @post['author']
  19 + .group
  20 + =f.label :body
  21 + =f.text_area :body, :value => @post['body']
  22 + .group
  23 + =f.submit
  24 + %footer
  25 + / ! end of #container
29 app/views/posts/index.haml
... ... @@ -0,0 +1,29 @@
  1 +<!doctype html>
  2 +%html.no-js{:lang => "en"}
  3 + %head
  4 + %meta{:charset => "utf-8"}/
  5 + %title My Blog Posts!
  6 + %link{:href => "/favicon.ico", :rel => "shortcut icon"}/
  7 + %link{:href => "/css/style.css?v=1", :rel => "stylesheet"}/
  8 + %body
  9 + #container
  10 + %header
  11 + #main
  12 + -if @posts.empty?
  13 + %h1 No posts found
  14 + -else
  15 + %table.table
  16 + %tr
  17 + %th Name
  18 + %th Author
  19 + %th Body
  20 + %th Operation
  21 + -@posts.each do |post|
  22 + %tr
  23 + %td= post["name"]
  24 + %td= post["author"]
  25 + %td= post["body"]
  26 + %td= link_to "edit", url(:post, :edit, :id => post["_id"])
  27 +
  28 + %footer
  29 + / ! end of #container
25 app/views/posts/new.haml
... ... @@ -0,0 +1,25 @@
  1 +<!doctype html>
  2 +%html.no-js{:lang => "en"}
  3 + %head
  4 + %meta{:charset => "utf-8"}/
  5 + %title My Blog Posts!
  6 + %link{:href => "/favicon.ico", :rel => "shortcut icon"}/
  7 + %link{:href => "/css/style.css?v=1", :rel => "stylesheet"}/
  8 + %body
  9 + #container
  10 + %header
  11 + #main
  12 + - form_for @post, url(:post, :create) do |f|
  13 + .group
  14 + =f.label :name
  15 + =f.text_field :name
  16 + .group
  17 + =f.label :author
  18 + =f.text_field :author
  19 + .group
  20 + =f.label :body
  21 + =f.text_area :body
  22 + .group
  23 + =f.submit
  24 + %footer
  25 + / ! end of #container
2  config.ru
... ... @@ -0,0 +1,2 @@
  1 +require ::File.dirname(__FILE__) + '/config/boot.rb'
  2 +run Padrino.application
25 config/apps.rb
... ... @@ -0,0 +1,25 @@
  1 +##
  2 +# This file mounts each app in the Padrino project to a specified sub-uri.
  3 +# You can mount additional applications using any of these commands below:
  4 +#
  5 +# Padrino.mount("blog").to('/blog')
  6 +# Padrino.mount("blog", :app_class => "BlogApp").to('/blog')
  7 +# Padrino.mount("blog", :app_file => "path/to/blog/app.rb").to('/blog')
  8 +#
  9 +# You can also map apps to a specified host:
  10 +#
  11 +# Padrino.mount("Admin").host("admin.example.org")
  12 +# Padrino.mount("WebSite").host(/.*\.?example.org/)
  13 +# Padrino.mount("Foo").to("/foo").host("bar.example.org")
  14 +#
  15 +# Note 1: Mounted apps (by default) should be placed into the project root at '/app_name'.
  16 +# Note 2: If you use the host matching remember to respect the order of the rules.
  17 +#
  18 +# By default, this file mounts the parimary app which was generated with this project.
  19 +# However, the mounted app can be modified as needed:
  20 +#
  21 +# Padrino.mount(:app_file => "path/to/file", :app_class => "Blog").to('/')
  22 +#
  23 +
  24 +# Mounts the core application for this project
  25 +Padrino.mount("Pblog").to('/')
30 config/boot.rb
... ... @@ -0,0 +1,30 @@
  1 +# Defines our constants
  2 +PADRINO_ENV = ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= "development" unless defined?(PADRINO_ENV)
  3 +PADRINO_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) unless defined?(PADRINO_ROOT)
  4 +
  5 +begin
  6 + # Require the preresolved locked set of gems.
  7 + require File.expand_path('../../.bundle/environment', __FILE__)
  8 +rescue LoadError
  9 + # Fallback on doing the resolve at runtime.
  10 + require 'rubygems'
  11 + require 'bundler'
  12 + Bundler.setup
  13 +end
  14 +
  15 +Bundler.require(:default, PADRINO_ENV.to_sym)
  16 +puts "=> Located #{Padrino.bundle} Gemfile for #{Padrino.env}"
  17 +
  18 +##
  19 +# Add here your before load hooks
  20 +#
  21 +Padrino.before_load do
  22 +end
  23 +
  24 +##
  25 +# Add here your after load hooks
  26 +#
  27 +Padrino.after_load do
  28 +end
  29 +
  30 +Padrino.load!
6 config/database.rb
... ... @@ -0,0 +1,6 @@
  1 +
  2 +case Padrino.env
  3 + when :development then Mongomatic.db = Mongo::Connection.new.db("pblog_development")
  4 + when :production then Mongomatic.db = Mongo::Connection.new.db("pblog_production")
  5 + when :test then Mongomatic.db = Mongo::Connection.new.db("pblog_test")
  6 +end
8 public/css/handheld.css
... ... @@ -0,0 +1,8 @@
  1 +* {
  2 + float: none; /* Screens are not big enough to account for floats */
  3 + background: #fff; /* As much contrast as possible */
  4 + color: #000;
  5 +}
  6 +
  7 +/* Slightly reducing font size to reduce need to scroll */
  8 +body { font-size: 80%; }
265 public/css/style.css
... ... @@ -0,0 +1,265 @@
  1 +/*
  2 + style.css contains a reset, font normalization and some base styles.
  3 +
  4 + credit is left where credit is due.
  5 + additionally, much inspiration was taken from these projects:
  6 + yui.yahooapis.com/2.8.1/build/base/base.css
  7 + camendesign.com/design/
  8 + praegnanz.de/weblog/htmlcssjs-kickstart
  9 +*/
  10 +
  11 +/*
  12 + html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
  13 + v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark
  14 + html5doctor.com/html-5-reset-stylesheet/
  15 +*/
  16 +
  17 +html, body, div, span, object, iframe,
  18 +h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  19 +abbr, address, cite, code,
  20 +del, dfn, em, img, ins, kbd, q, samp,
  21 +small, strong, sub, sup, var,
  22 +b, i,
  23 +dl, dt, dd, ol, ul, li,
  24 +fieldset, form, label, legend,
  25 +table, caption, tbody, tfoot, thead, tr, th, td,
  26 +article, aside, canvas, details, figcaption, figure,
  27 +footer, header, hgroup, menu, nav, section, summary,
  28 +time, mark, audio, video {
  29 + margin:0;
  30 + padding:0;
  31 + border:0;
  32 + outline:0;
  33 + font-size:100%;
  34 + vertical-align:baseline;
  35 + background:transparent;
  36 +}
  37 +
  38 +article, aside, details, figcaption, figure,
  39 +footer, header, hgroup, menu, nav, section {
  40 + display:block;
  41 +}
  42 +
  43 +nav ul { list-style:none; }
  44 +
  45 +blockquote, q { quotes:none; }
  46 +
  47 +blockquote:before, blockquote:after,
  48 +q:before, q:after { content:''; content:none; }
  49 +
  50 +a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; }
  51 +
  52 +ins { background-color:#ff9; color:#000; text-decoration:none; }
  53 +
  54 +mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; }
  55 +
  56 +del { text-decoration: line-through; }
  57 +
  58 +abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; }
  59 +
  60 +/* tables still need cellspacing="0" in the markup */
  61 +table { border-collapse:collapse; border-spacing:0; }
  62 +
  63 +hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; }
  64 +
  65 +input, select { vertical-align:middle; }
  66 +/* END RESET CSS */
  67 +
  68 +
  69 +/* fonts.css from the YUI Library: developer.yahoo.com/yui/
  70 + Please refer to developer.yahoo.com/yui/fonts/ for font sizing percentages
  71 +
  72 + There are two custom edits:
  73 + * remove arial, helvetica from explicit font stack
  74 + * we normalize monospace styles ourselves
  75 +*/
  76 +body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */
  77 +
  78 +table { font-size:inherit; font: 100%; }
  79 +
  80 +select, input, textarea, button { font:99% sans-serif; }
  81 +
  82 +/* normalize monospace sizing
  83 + * en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome
  84 + */
  85 +pre, code, kbd, samp { font-family: monospace, sans-serif; }
  86 +
  87 +
  88 +
  89 +/*
  90 + * minimal base styles
  91 + */
  92 +
  93 +
  94 +/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */
  95 +body, select, input, textarea { color: #444; }
  96 +
  97 +/* Headers (h1,h2,etc) have no default font-size or margin,
  98 + you'll want to define those yourself. */
  99 +h1,h2,h3,h4,h5,h6 { font-weight: bold; }
  100 +
  101 +html {
  102 + /* maxvoltar.com/archive/-webkit-font-smoothing */
  103 + -webkit-font-smoothing: antialiased;
  104 + /* always force a scrollbar in non-IE */
  105 + overflow-y: scroll;
  106 +}
  107 +
  108 +
  109 +/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */
  110 +a:hover, a:active { outline: none; }
  111 +
  112 +a, a:active, a:visited { color: #607890; }
  113 +a:hover { color: #036; }
  114 +
  115 +
  116 +ul { margin-left: 30px; }
  117 +ol { margin-left: 30px; list-style-type: decimal; }
  118 +
  119 +small { font-size: 85%; }
  120 +strong, th { font-weight: bold; }
  121 +
  122 +td, td img { vertical-align: top; }
  123 +
  124 +sub { vertical-align: sub; font-size: smaller; }
  125 +sup { vertical-align: super; font-size: smaller; }
  126 +
  127 +pre {
  128 + padding: 15px;
  129 +
  130 + /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */
  131 + white-space: pre; /* CSS2 */
  132 + white-space: pre-wrap; /* CSS 2.1 */
  133 + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
  134 + word-wrap: break-word; /* IE */
  135 +}
  136 +
  137 +/* align checkboxes, radios, text inputs with their label
  138 + by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */
  139 +input[type="radio"] { vertical-align: text-bottom; }
  140 +input[type="checkbox"] { vertical-align: bottom; }
  141 +.ie7 input[type="checkbox"] { vertical-align: baseline; }
  142 +.ie6 input { vertical-align: text-bottom; }
  143 +
  144 +/* hand cursor on clickable input elements */
  145 +label, input[type=button], input[type=submit], button { cursor: pointer; }
  146 +
  147 +/* colors for form validity */
  148 +input:invalid { background-color: #f0dddd; }
  149 +input:valid { background-color: #ddf0dd; }
  150 +
  151 +/* These selection declarations have to be separate.
  152 + No text-shadow: twitter.com/miketaylr/status/12228805301
  153 + Also: hot pink. */
  154 +::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
  155 +::selection { background:#FF5E99; color:#fff; text-shadow: none; }
  156 +
  157 +/* j.mp/webkit-tap-highlight-color */
  158 +a:link { -webkit-tap-highlight-color: #FF5E99; }
  159 +
  160 +/* make buttons play nice in IE:
  161 + www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */
  162 +button { width: auto; overflow: visible; }
  163 +
  164 +/* bicubic resizing for non-native sized IMG:
  165 + code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */
  166 +.ie7 img { -ms-interpolation-mode: bicubic; }
  167 +
  168 +
  169 +
  170 +/*
  171 + * Non-semantic helper classes
  172 + */
  173 +
  174 +/* for image replacement */
  175 +.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
  176 +
  177 +/* Hide for both screenreaders and browsers
  178 + css-discuss.incutio.com/wiki/Screenreader_Visibility */
  179 +.hidden { display: none; visibility: hidden; }
  180 +
  181 +/* Hide only visually, but have it available for screenreaders
  182 + www.webaim.org/techniques/css/invisiblecontent/
  183 + Solution from: j.mp/visuallyhidden - Thanks Jonathan Neal! */
  184 +.visuallyhidden { position: absolute !important;
  185 + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
  186 + clip: rect(1px, 1px, 1px, 1px); }
  187 +
  188 +/* Hide visually and from screenreaders, but maintain layout */
  189 +.invisible { visibility: hidden; }
  190 +
  191 +/* >> The Magnificent CLEARFIX << j.mp/phayesclearfix */
  192 +.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
  193 +.clearfix { zoom: 1; }
  194 +
  195 +
  196 +
  197 +
  198 +
  199 +
  200 + /* Primary Styles
  201 + Author:
  202 + */
  203 +
  204 +
  205 +
  206 +
  207 +
  208 +
  209 +
  210 +
  211 +
  212 +
  213 +
  214 +/*
  215 + * print styles
  216 + * inlined to avoid required HTTP connection www.phpied.com/delay-loading-your-print-css/
  217 + */
  218 +@media print {
  219 + * { background: transparent !important; color: #444 !important; text-shadow: none !important; }
  220 +
  221 + a, a:visited { color: #444 !important; text-decoration: underline; }
  222 +
  223 + a:after { content: " (" attr(href) ")"; }
  224 +
  225 + abbr:after { content: " (" attr(title) ")"; }
  226 +
  227 + .ir a:after { content: ""; } /* Don't show links for images */
  228 +
  229 + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
  230 +
  231 + img { page-break-inside: avoid; }
  232 +
  233 + @page { margin: 0.5cm; }
  234 +
  235 + p, h2, h3 { orphans: 3; widows: 3; }
  236 +
  237 + h2, h3{ page-break-after: avoid; }
  238 +}
  239 +
  240 +
  241 +
  242 +/*
  243 + * Media queries for responsive design
  244 + */
  245 +
  246 +@media all and (orientation:portrait) {
  247 + /* Style adjustments for portrait mode goes here */
  248 +
  249 +}
  250 +
  251 +@media all and (orientation:landscape) {
  252 + /* Style adjustments for landscape mode goes here */
  253 +
  254 +}
  255 +
  256 +/* Grade-A Mobile Browsers (Opera Mobile, iPhone Safari, Android Chrome)
  257 + Consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */
  258 +@media screen and (max-device-width: 480px) {
  259 +
  260 +
  261 + /* Uncomment if you don't want iOS and WinMobile to mobile-optimize the text for you
  262 + j.mp/textsizeadjust
  263 + html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
  264 +}
  265 +
0  public/favicon.ico
No changes.

0 comments on commit ecf9f55

Please sign in to comment.
Something went wrong with that request. Please try again.