Created
September 13, 2012 08:12
-
-
Save innovationhero/3712814 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
HTML5 ✰ Boilerplate | |
style.css contains a reset, font normalization and some base styles. | |
credit is left where credit is due. | |
much inspiration was taken from these projects: | |
yui.yahooapis.com/2.8.1/build/base/base.css | |
camendesign.com/design/ | |
praegnanz.de/weblog/htmlcssjs-kickstart | |
*/ | |
/* | |
html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) | |
v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark | |
html5doctor.com/html-5-reset-stylesheet/ | |
*/ | |
html, body, div, span, object, iframe, | |
h1, h2, h3, h4, h5, h6, p, blockquote, pre, | |
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, | |
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, | |
fieldset, form, label, legend, | |
table, caption, tbody, tfoot, thead, tr, th, td, | |
article, aside, canvas, details, figcaption, figure, | |
footer, header, hgroup, menu, nav, section, summary, | |
time, mark, audio, video { | |
margin:0; | |
padding:0; | |
border:0; | |
font-size:100%; | |
font: inherit; | |
vertical-align:baseline; | |
} | |
article, aside, details, figcaption, figure, | |
footer, header, hgroup, menu, nav, section { | |
display:block; | |
} | |
blockquote, q { quotes:none; } | |
blockquote:before, blockquote:after, | |
q:before, q:after { content:''; content:none; } | |
ins { background-color:#ff9; color:#000; text-decoration:none; } | |
mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; } | |
del { text-decoration: line-through; } | |
abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; } | |
table { border-collapse:collapse; border-spacing:0; } | |
hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; } | |
input, select { vertical-align:middle; } | |
/* END RESET CSS */ | |
/* font normalization inspired by from the YUI Library's fonts.css: developer.yahoo.com/yui/ */ | |
body { font:13px/1.231 sans-serif; *font-size:small; } /* hack retained to preserve specificity */ | |
select, input, textarea, button { font:99% sans-serif; } | |
/* normalize monospace sizing | |
* en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */ | |
pre, code, kbd, samp { font-family: monospace, sans-serif; } | |
/* | |
* minimal base styles | |
*/ | |
body, select, input, textarea { | |
/* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */ | |
color: #444; | |
/* set your base font here, to apply evenly */ | |
/* font-family: Georgia, serif; */ | |
} | |
/* headers (h1,h2,etc) have no default font-size or margin. define those yourself. */ | |
h1,h2,h3,h4,h5,h6 { font-weight: bold; } | |
/* always force a scrollbar in non-IE: */ | |
html { overflow-y: scroll; } | |
/* accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */ | |
a:hover, a:active { outline: none; } | |
a, a:active, a:visited { color: #607890; } | |
a:hover { color: #036; } | |
ul, ol { margin-left: 2em; } | |
ol { list-style-type: decimal; } | |
/* remove margins for navigation lists */ | |
nav ul, nav li { margin: 0; list-style:none; list-style-image: none; } | |
small { font-size: 85%; } | |
strong, th { font-weight: bold; } | |
td { vertical-align: top; } | |
/* set sub, sup without affecting line-height: gist.github.com/413930 */ | |
sub, sup { font-size: 75%; line-height: 0; position: relative; } | |
sup { top: -0.5em; } | |
sub { bottom: -0.25em; } | |
pre { | |
/* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */ | |
white-space: pre; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; | |
padding: 15px; | |
} | |
textarea { overflow: auto; } /* www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */ | |
.ie6 legend, .ie7 legend { margin-left: -7px; } /* thnx ivannikolic! */ | |
/* align checkboxes, radios, text inputs with their label by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css */ | |
input[type="radio"] { vertical-align: text-bottom; } | |
input[type="checkbox"] { vertical-align: bottom; } | |
.ie7 input[type="checkbox"] { vertical-align: baseline; } | |
.ie6 input { vertical-align: text-bottom; } | |
/* hand cursor on clickable input elements */ | |
label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; } | |
/* webkit browsers add a 2px margin outside the chrome of form elements */ | |
button, input, select, textarea { margin: 0; } | |
/* colors for form validity */ | |
input:valid, textarea:valid { } | |
input:invalid, textarea:invalid { | |
border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red; | |
} | |
.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; } | |
/* These selection declarations have to be separate. | |
No text-shadow: twitter.com/miketaylr/status/12228805301 | |
Also: hot pink. */ | |
::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; } | |
::selection { background:#FF5E99; color:#fff; text-shadow: none; } | |
/* j.mp/webkit-tap-highlight-color */ | |
a:link { -webkit-tap-highlight-color: #FF5E99; } | |
/* make buttons play nice in IE: | |
www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */ | |
button { width: auto; overflow: visible; } | |
/* bicubic resizing for non-native sized IMG: | |
code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */ | |
.ie7 img { -ms-interpolation-mode: bicubic; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'sinatra' | |
require 'data_mapper' | |
#require 'dm-sqlite-adapter' | |
#On the first line we’re setting up a new SQLite3 database in the current directory, named recall.db. Below that, we’re actually setting up a ‘Notes’ table in the database. | |
DataMapper::setup(:default,"sqlite3://#{Dir.pwd}/recall.db") | |
class Note | |
include DataMapper::Resource | |
property :id, Serial | |
property :content, Text, :required => true | |
property :complete, Boolean, :required => true, :default => false | |
property :created_at, DateTime | |
property :updated_at, DateTime | |
end | |
#The very last line instructs DataMapper to automatically update the database to contain the tables and fields we have set, and to do so again if we make any changes to the schema. | |
DataMapper.finalize.auto_upgrade! | |
get '/' do | |
@notes = Note.all :order => :id.desc | |
@title = 'All Notes' | |
erb :home | |
end | |
post '/' do | |
n = Note.new | |
n.content = params[:content] | |
n.created_at = Time.now | |
n.updated_at = Time.now | |
n.save | |
redirect '/' | |
end | |
get '/:id' do | |
@note = Note.get params[:id] | |
@title = "Edit note ##{params[:id]}" | |
erb :edit | |
end | |
put '/:id' do | |
n = Note.get params[:id] | |
n.content = params[:content] | |
n.complete = params[:complete] ? 1 : 0 | |
n.updated_at = Time.now | |
n.save | |
redirect '/' | |
end | |
get '/:id/delete' do | |
@note = Note.get params[:id] | |
@title = "Confirm deletion of note ##{params[:id]}" | |
erb :delete | |
end | |
delete '/:id' do | |
n = Note.get params[:id] | |
n.destroy | |
redirect '/' | |
end | |
get '/:id/complete' do | |
n = Note.get params[:id] | |
n.complete = n.complete ? 0 : 1 # flip it | |
n.updated_at = Time.now | |
n.save | |
redirect '/' | |
end | |
get '/about' do | |
'a little about me' | |
end | |
not_found do | |
halt 404, 'page not found' | |
end | |
__END__ | |
@@layout | |
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf8"> | |
<title><%= @title + ' | Recall' %></title> | |
<link href="/reset.css" rel="stylesheet"> | |
<link href="/style.css" rel="stylesheet"> | |
</head> | |
<body> | |
<header> | |
<hgroup> | |
<h1><a href="/">Recall</a></h1> | |
<h2>'cause you're too busy to remember</h2> | |
</hgroup> | |
</header> | |
<div id="main"> | |
<%= yield %> | |
</div> | |
<footer> | |
</footer> | |
</body> | |
</html> | |
@@home | |
<section id="add"> | |
<form action="/" method="post"> | |
<textarea name="content" placeholder="Your note…"></textarea> | |
<input type="submit" value="Take Note!"> | |
</form> | |
</section> | |
<% @notes.each do |note| %> | |
<article <%= 'class="complete"' if note.complete %>> | |
<p> | |
<%= note.content %> | |
<span><a href="/<%= note.id %>">[edit]</a></span> | |
</p> | |
<p class="links"> | |
<a href="/<%= note.id %>/complete">↯</a> | |
</p> | |
<p class="meta">Created: <%= note.created_at %></p> | |
</article> | |
<% end %> | |
@@edit | |
<% if @note %> | |
<form action="/<%= @note.id %>" method="post" id="edit"> | |
<input type="hidden" name="_method" value="put"> | |
<textarea name="content"><%= @note.content %></textarea> | |
<input type="checkbox" name="complete" <%= "checked" if @note.complete %>> | |
<input type="submit"> | |
</form> | |
<p><a href="/<%= @note.id %>/delete">Delete</a></p> | |
<% else %> | |
<p>Note not found.</p> | |
<% end %> | |
@@delete | |
<% if @note %> | |
<p>Are you sure you want to delete the following note: <em>"<%= @note.content %>"</em>?</p> | |
<form action="/<%= @note.id %>" method="post"> | |
<input type="hidden" name="_method" value="delete"> | |
<input type="submit" value="Yes, Delete It!"> | |
<a href="/<%= @note.id %>">Cancel</a> | |
</form> | |
<% else %> | |
<p>Note not found.</p> | |
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body { | |
margin: 35px auto; | |
width: 640px; | |
} | |
header { | |
text-align: center; | |
margin: 0 0 20px; | |
} | |
header h1 { | |
display: inline; | |
font-size: 32px; | |
} | |
header h1 a:link, header h1 a:visited { | |
color: #444; | |
text-decoration: none; | |
} | |
header h2 { | |
font-size: 16px; | |
font-style: italic; | |
color: #999; | |
} | |
#main { | |
margin: 0 0 20px; | |
} | |
#add { | |
margin: 0 0 20px; | |
} | |
#add textarea { | |
height: 30px; | |
width: 510px; | |
padding: 10px; | |
border: 1px solid #ddd; | |
} | |
#add input { | |
height: 50px; | |
width: 100px; | |
margin: -50px 0 0; | |
border: 1px solid #ddd; | |
background: white; | |
} | |
#edit textarea { | |
height: 30px; | |
width: 480px; | |
padding: 10px; | |
border: 1px solid #ddd; | |
} | |
#edit input[type=submit] { | |
height: 50px; | |
width: 100px; | |
margin: -50px 0 0; | |
border: 1px solid #ddd; | |
background: white; | |
} | |
#edit input[type=checkbox] { | |
height: 50px; | |
width: 20px; | |
} | |
article { | |
border: 1px solid #eee; | |
border-top: none; | |
padding: 15px 10px; | |
} | |
article:first-of-type { | |
border: 1px solid #eee; | |
} | |
article:nth-child(even) { | |
background: #fafafa; | |
} | |
article.complete { | |
background: #fedae3; | |
} | |
article span { | |
font-size: 0.8em; | |
} | |
p { | |
margin: 0 0 5px; | |
} | |
.meta { | |
font-size: 0.8em; | |
font-style: italic; | |
color: #888; | |
} | |
.links { | |
font-size: 1.8em; | |
line-height: 0.8em; | |
float: right; | |
margin: -10px 0 0; | |
} | |
.links a { | |
display: block; | |
text-decoration: none; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment