Permalink
Browse files

Initial commit

  • Loading branch information...
0 parents commit 4d57ec86fbb709e951f6939380531475d1374ec5 @sirfilip committed Mar 10, 2011
1 .gitignore
@@ -0,0 +1 @@
+.DS_Store
17 Gemfile
@@ -0,0 +1,17 @@
+source 'http://rubygems.org'
+
+gem 'sinatra', :require => 'sinatra/base'
+
+gem 'haml'
+
+gem 'webrat'
+gem 'rspec'
+
+gem 'dm-core'
+gem 'dm-timestamps'
+gem 'dm-validations'
+gem 'dm-migrations'
+gem 'dm-sqlite-adapter'
+
+gem 'paginate-simple'
+gem 'pagination_render_logic', :require => 'pagination_render_logic/digg'
64 Gemfile.lock
@@ -0,0 +1,64 @@
+GEM
+ remote: http://rubygems.org/
+ specs:
+ addressable (2.2.4)
+ data_objects (0.10.3)
+ addressable (~> 2.1)
+ diff-lcs (1.1.2)
+ dm-core (1.0.2)
+ addressable (~> 2.2)
+ extlib (~> 0.9.15)
+ dm-do-adapter (1.0.2)
+ data_objects (~> 0.10.2)
+ dm-core (~> 1.0.2)
+ dm-migrations (1.0.2)
+ dm-core (~> 1.0.2)
+ dm-sqlite-adapter (1.0.2)
+ dm-do-adapter (~> 1.0.2)
+ do_sqlite3 (~> 0.10.2)
+ dm-timestamps (1.0.2)
+ dm-core (~> 1.0.2)
+ dm-validations (1.0.2)
+ dm-core (~> 1.0.2)
+ do_sqlite3 (0.10.3)
+ data_objects (= 0.10.3)
+ extlib (0.9.15)
+ haml (3.0.25)
+ nokogiri (1.4.4)
+ paginate-simple (0.1.2)
+ pagination_render_logic (0.0.2)
+ rack (1.2.1)
+ rack-test (0.5.7)
+ rack (>= 1.0)
+ rspec (2.5.0)
+ rspec-core (~> 2.5.0)
+ rspec-expectations (~> 2.5.0)
+ rspec-mocks (~> 2.5.0)
+ rspec-core (2.5.1)
+ rspec-expectations (2.5.0)
+ diff-lcs (~> 1.1.2)
+ rspec-mocks (2.5.0)
+ sinatra (1.2.0)
+ rack (~> 1.1)
+ tilt (< 2.0, >= 1.2.2)
+ tilt (1.2.2)
+ webrat (0.7.3)
+ nokogiri (>= 1.2.0)
+ rack (>= 1.0)
+ rack-test (>= 0.5.3)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ dm-core
+ dm-migrations
+ dm-sqlite-adapter
+ dm-timestamps
+ dm-validations
+ haml
+ paginate-simple
+ pagination_render_logic
+ rspec
+ sinatra
+ webrat
1 README
@@ -0,0 +1 @@
+This is a simple sinatra project.
16 README.txt
@@ -0,0 +1,16 @@
+Bare bone folder structure for mvc development with Sinatra framework.
+
+Usage:
+Create controllers in the controllers folder and map them in the config.ru.
+Create models in the models folder and use them in the controllers.
+Create helpers in the helpers folder and use them in your views.
+Create general purpose classes and modules in the lib folder.
+
+All of the classes will be autoladed.
+The naming convention should be followed:
+ Snakes for the names of the ruby files, cammel case for the names of the classes and modules.
+All of the gems will be placed in the Gemfile and will be installed with bundle install command.
+For running init tasks place ruby file in the initializers folder. Every file in the initializers
+will be runned on startup.
+
+Hapy coding!
14 Rakefile
@@ -0,0 +1,14 @@
+require './bootloader'
+
+namespace :db do
+ task :seed do
+ require 'faker'
+ require 'dm-core'
+
+ DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
+
+ 10000.times do
+ Post.create({:name => Faker::Lorem.sentence, :content => Faker::Lorem.paragraphs.join})
+ end
+ end
+end
38 bootloader.rb
@@ -0,0 +1,38 @@
+require 'rubygems'
+require 'bundler/setup'
+
+sinatra_root = File.dirname(__FILE__)
+
+Bundler.require(:default)
+
+class String
+ def underscore_to_camelcase
+ words = split('_').map!{|w| w.capitalize}
+ words.join
+ end
+end
+
+# initialize autoloaders
+autoload_folders = %w[lib controllers models]
+
+autoload_folders.each do |folder|
+ files = Dir.entries(File.join(sinatra_root, folder)).reject! {|file| file.start_with?('.') }
+ files.each do |f|
+ basename = File.basename(File.join(sinatra_root, folder, f), '.rb')
+ Object.autoload basename.underscore_to_camelcase.to_sym, File.join(sinatra_root, folder, f)
+ end
+end
+
+# autolad the helpers
+files = Dir.entries(File.join(sinatra_root, 'helpers')).reject! {|file| file.start_with?('.') }
+files.each do |f|
+ basename = File.basename(File.join(sinatra_root, 'helpers', f), '.rb')
+ Sinatra.autoload basename.underscore_to_camelcase.to_sym, File.join(sinatra_root, 'helpers', f)
+end
+
+# load the initializers
+initializers = Dir.entries(File.join(sinatra_root, 'initializers')).reject {|file| file.start_with?('.')}
+initializers.each do |f|
+ basename = File.basename(File.join(sinatra_root, 'initializers', f), '.rb')
+ require File.join(sinatra_root, 'initializers', basename)
+end
12 config.ru
@@ -0,0 +1,12 @@
+require './bootloader'
+
+DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
+
+map "/public" do
+ run Rack::Directory.new("./public")
+end
+
+# map sinatr apps here
+# map '/posts' do
+# run PostsApp.new
+# end
10 controllers/sinatra_app.rb
@@ -0,0 +1,10 @@
+class SinatraApp < Sinatra::Base
+ # use Rack::Auth::Basic do |username, password|
+ # username == 'filip' && password == 'pass'
+ # end
+
+ enable :sessions, :logging
+ set :environment, :development
+ set :method_override, true
+
+end
BIN development.db
Binary file not shown.
38 helpers/pagination_helper.rb
@@ -0,0 +1,38 @@
+module Sinatra
+ module PaginationHelper
+ def paginate(resource)
+ data = []
+ PaginationRenderer.config! :total_pages => Paginator.num_of_pages,
+ :current_page => Paginator.current_page,
+ :after_first_page => 3,
+ :arround_current_page => 5
+
+ if PaginationRenderer.has_links?
+ data << '<div class="pagination">'
+ data << "<a href =\"/#{resource}/?page=#{PaginationRenderer.first_page}\">First</a>" if PaginationRenderer.has_first_page?
+ data << "<a href =\"/#{resource}/?page=#{PaginationRenderer.previous_page}\">Previous</a>" if PaginationRenderer.has_previous_page?
+ if PaginationRenderer.has_first_page_section?
+ PaginationRenderer.first_page_section.each do |page|
+ data << (PaginationRenderer.current_page == page ? "<span>#{page}</span>" : "<a href =\"/#{resource}/?page=#{page}\">#{page}</a>")
+ end
+ data << "<span>. . .</span>"
+ end
+ PaginationRenderer.middle_section.each do |page|
+ data << (PaginationRenderer.current_page == page ? "<span>#{page}</span>" : "<a href =\"/#{resource}/?page=#{page}\">#{page}</a>")
+ end
+ if PaginationRenderer.has_last_page_section?
+ data << "<span>. . .</span>"
+ PaginationRenderer.last_page_section.each do |page|
+ data << (PaginationRenderer.current_page == page ? "<span>#{page}</span>" : "<a href =\"/#{resource}/?page=#{page}\">#{page}</a>")
+ end
+ end
+ data << "<a href =\"/#{resource}/?page=#{PaginationRenderer.next_page}\">Next</a>" if PaginationRenderer.has_next_page?
+ data << "<a href =\"/#{resource}/?page=#{PaginationRenderer.last_page}\">Last</a>" if PaginationRenderer.has_last_page?
+ data << '</div>'
+ end
+ data.join(' ')
+ end
+ end
+
+ # helpers PaginationHelper
+end
1 initializers/joker.rb
@@ -0,0 +1 @@
+puts "It should be awesome!"
3 lib/pagination_renderer.rb
@@ -0,0 +1,3 @@
+class PaginationRenderer
+ extend PaginationRenderLogic::Digg
+end
3 lib/paginator.rb
@@ -0,0 +1,3 @@
+class Paginator
+ extend PaginateSimple
+end
3 models/sandbox.rb
@@ -0,0 +1,3 @@
+module Sandbox
+
+end
643 public/css/960.css
@@ -0,0 +1,643 @@
+/*
+ 960 Grid System ~ Core CSS.
+ Learn more ~ http://960.gs/
+
+ Licensed under GPL and MIT.
+*/
+
+/*
+ Forces backgrounds to span full width,
+ even if there is horizontal scrolling.
+ Increase this if your layout is wider.
+
+ Note: IE6 works fine without this fix.
+*/
+
+body {
+ min-width: 960px;
+}
+
+/* `Containers
+----------------------------------------------------------------------------------------------------*/
+
+.container_12,
+.container_16 {
+ margin-left: auto;
+ margin-right: auto;
+ width: 960px;
+}
+
+/* `Grid >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.grid_1,
+.grid_2,
+.grid_3,
+.grid_4,
+.grid_5,
+.grid_6,
+.grid_7,
+.grid_8,
+.grid_9,
+.grid_10,
+.grid_11,
+.grid_12,
+.grid_13,
+.grid_14,
+.grid_15,
+.grid_16 {
+ display: inline;
+ float: left;
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+.push_1, .pull_1,
+.push_2, .pull_2,
+.push_3, .pull_3,
+.push_4, .pull_4,
+.push_5, .pull_5,
+.push_6, .pull_6,
+.push_7, .pull_7,
+.push_8, .pull_8,
+.push_9, .pull_9,
+.push_10, .pull_10,
+.push_11, .pull_11,
+.push_12, .pull_12,
+.push_13, .pull_13,
+.push_14, .pull_14,
+.push_15, .pull_15 {
+ position: relative;
+}
+
+.container_12 .grid_3,
+.container_16 .grid_4 {
+ width: 220px;
+}
+
+.container_12 .grid_6,
+.container_16 .grid_8 {
+ width: 460px;
+}
+
+.container_12 .grid_9,
+.container_16 .grid_12 {
+ width: 700px;
+}
+
+.container_12 .grid_12,
+.container_16 .grid_16 {
+ width: 940px;
+}
+
+/* `Grid >> Children (Alpha ~ First, Omega ~ Last)
+----------------------------------------------------------------------------------------------------*/
+
+.alpha {
+ margin-left: 0;
+}
+
+.omega {
+ margin-right: 0;
+}
+
+/* `Grid >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .grid_1 {
+ width: 60px;
+}
+
+.container_12 .grid_2 {
+ width: 140px;
+}
+
+.container_12 .grid_4 {
+ width: 300px;
+}
+
+.container_12 .grid_5 {
+ width: 380px;
+}
+
+.container_12 .grid_7 {
+ width: 540px;
+}
+
+.container_12 .grid_8 {
+ width: 620px;
+}
+
+.container_12 .grid_10 {
+ width: 780px;
+}
+
+.container_12 .grid_11 {
+ width: 860px;
+}
+
+/* `Grid >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .grid_1 {
+ width: 40px;
+}
+
+.container_16 .grid_2 {
+ width: 100px;
+}
+
+.container_16 .grid_3 {
+ width: 160px;
+}
+
+.container_16 .grid_5 {
+ width: 280px;
+}
+
+.container_16 .grid_6 {
+ width: 340px;
+}
+
+.container_16 .grid_7 {
+ width: 400px;
+}
+
+.container_16 .grid_9 {
+ width: 520px;
+}
+
+.container_16 .grid_10 {
+ width: 580px;
+}
+
+.container_16 .grid_11 {
+ width: 640px;
+}
+
+.container_16 .grid_13 {
+ width: 760px;
+}
+
+.container_16 .grid_14 {
+ width: 820px;
+}
+
+.container_16 .grid_15 {
+ width: 880px;
+}
+
+/* `Prefix Extra Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .prefix_3,
+.container_16 .prefix_4 {
+ padding-left: 240px;
+}
+
+.container_12 .prefix_6,
+.container_16 .prefix_8 {
+ padding-left: 480px;
+}
+
+.container_12 .prefix_9,
+.container_16 .prefix_12 {
+ padding-left: 720px;
+}
+
+/* `Prefix Extra Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .prefix_1 {
+ padding-left: 80px;
+}
+
+.container_12 .prefix_2 {
+ padding-left: 160px;
+}
+
+.container_12 .prefix_4 {
+ padding-left: 320px;
+}
+
+.container_12 .prefix_5 {
+ padding-left: 400px;
+}
+
+.container_12 .prefix_7 {
+ padding-left: 560px;
+}
+
+.container_12 .prefix_8 {
+ padding-left: 640px;
+}
+
+.container_12 .prefix_10 {
+ padding-left: 800px;
+}
+
+.container_12 .prefix_11 {
+ padding-left: 880px;
+}
+
+/* `Prefix Extra Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .prefix_1 {
+ padding-left: 60px;
+}
+
+.container_16 .prefix_2 {
+ padding-left: 120px;
+}
+
+.container_16 .prefix_3 {
+ padding-left: 180px;
+}
+
+.container_16 .prefix_5 {
+ padding-left: 300px;
+}
+
+.container_16 .prefix_6 {
+ padding-left: 360px;
+}
+
+.container_16 .prefix_7 {
+ padding-left: 420px;
+}
+
+.container_16 .prefix_9 {
+ padding-left: 540px;
+}
+
+.container_16 .prefix_10 {
+ padding-left: 600px;
+}
+
+.container_16 .prefix_11 {
+ padding-left: 660px;
+}
+
+.container_16 .prefix_13 {
+ padding-left: 780px;
+}
+
+.container_16 .prefix_14 {
+ padding-left: 840px;
+}
+
+.container_16 .prefix_15 {
+ padding-left: 900px;
+}
+
+/* `Suffix Extra Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .suffix_3,
+.container_16 .suffix_4 {
+ padding-right: 240px;
+}
+
+.container_12 .suffix_6,
+.container_16 .suffix_8 {
+ padding-right: 480px;
+}
+
+.container_12 .suffix_9,
+.container_16 .suffix_12 {
+ padding-right: 720px;
+}
+
+/* `Suffix Extra Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .suffix_1 {
+ padding-right: 80px;
+}
+
+.container_12 .suffix_2 {
+ padding-right: 160px;
+}
+
+.container_12 .suffix_4 {
+ padding-right: 320px;
+}
+
+.container_12 .suffix_5 {
+ padding-right: 400px;
+}
+
+.container_12 .suffix_7 {
+ padding-right: 560px;
+}
+
+.container_12 .suffix_8 {
+ padding-right: 640px;
+}
+
+.container_12 .suffix_10 {
+ padding-right: 800px;
+}
+
+.container_12 .suffix_11 {
+ padding-right: 880px;
+}
+
+/* `Suffix Extra Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .suffix_1 {
+ padding-right: 60px;
+}
+
+.container_16 .suffix_2 {
+ padding-right: 120px;
+}
+
+.container_16 .suffix_3 {
+ padding-right: 180px;
+}
+
+.container_16 .suffix_5 {
+ padding-right: 300px;
+}
+
+.container_16 .suffix_6 {
+ padding-right: 360px;
+}
+
+.container_16 .suffix_7 {
+ padding-right: 420px;
+}
+
+.container_16 .suffix_9 {
+ padding-right: 540px;
+}
+
+.container_16 .suffix_10 {
+ padding-right: 600px;
+}
+
+.container_16 .suffix_11 {
+ padding-right: 660px;
+}
+
+.container_16 .suffix_13 {
+ padding-right: 780px;
+}
+
+.container_16 .suffix_14 {
+ padding-right: 840px;
+}
+
+.container_16 .suffix_15 {
+ padding-right: 900px;
+}
+
+/* `Push Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .push_3,
+.container_16 .push_4 {
+ left: 240px;
+}
+
+.container_12 .push_6,
+.container_16 .push_8 {
+ left: 480px;
+}
+
+.container_12 .push_9,
+.container_16 .push_12 {
+ left: 720px;
+}
+
+/* `Push Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .push_1 {
+ left: 80px;
+}
+
+.container_12 .push_2 {
+ left: 160px;
+}
+
+.container_12 .push_4 {
+ left: 320px;
+}
+
+.container_12 .push_5 {
+ left: 400px;
+}
+
+.container_12 .push_7 {
+ left: 560px;
+}
+
+.container_12 .push_8 {
+ left: 640px;
+}
+
+.container_12 .push_10 {
+ left: 800px;
+}
+
+.container_12 .push_11 {
+ left: 880px;
+}
+
+/* `Push Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .push_1 {
+ left: 60px;
+}
+
+.container_16 .push_2 {
+ left: 120px;
+}
+
+.container_16 .push_3 {
+ left: 180px;
+}
+
+.container_16 .push_5 {
+ left: 300px;
+}
+
+.container_16 .push_6 {
+ left: 360px;
+}
+
+.container_16 .push_7 {
+ left: 420px;
+}
+
+.container_16 .push_9 {
+ left: 540px;
+}
+
+.container_16 .push_10 {
+ left: 600px;
+}
+
+.container_16 .push_11 {
+ left: 660px;
+}
+
+.container_16 .push_13 {
+ left: 780px;
+}
+
+.container_16 .push_14 {
+ left: 840px;
+}
+
+.container_16 .push_15 {
+ left: 900px;
+}
+
+/* `Pull Space >> Global
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .pull_3,
+.container_16 .pull_4 {
+ left: -240px;
+}
+
+.container_12 .pull_6,
+.container_16 .pull_8 {
+ left: -480px;
+}
+
+.container_12 .pull_9,
+.container_16 .pull_12 {
+ left: -720px;
+}
+
+/* `Pull Space >> 12 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_12 .pull_1 {
+ left: -80px;
+}
+
+.container_12 .pull_2 {
+ left: -160px;
+}
+
+.container_12 .pull_4 {
+ left: -320px;
+}
+
+.container_12 .pull_5 {
+ left: -400px;
+}
+
+.container_12 .pull_7 {
+ left: -560px;
+}
+
+.container_12 .pull_8 {
+ left: -640px;
+}
+
+.container_12 .pull_10 {
+ left: -800px;
+}
+
+.container_12 .pull_11 {
+ left: -880px;
+}
+
+/* `Pull Space >> 16 Columns
+----------------------------------------------------------------------------------------------------*/
+
+.container_16 .pull_1 {
+ left: -60px;
+}
+
+.container_16 .pull_2 {
+ left: -120px;
+}
+
+.container_16 .pull_3 {
+ left: -180px;
+}
+
+.container_16 .pull_5 {
+ left: -300px;
+}
+
+.container_16 .pull_6 {
+ left: -360px;
+}
+
+.container_16 .pull_7 {
+ left: -420px;
+}
+
+.container_16 .pull_9 {
+ left: -540px;
+}
+
+.container_16 .pull_10 {
+ left: -600px;
+}
+
+.container_16 .pull_11 {
+ left: -660px;
+}
+
+.container_16 .pull_13 {
+ left: -780px;
+}
+
+.container_16 .pull_14 {
+ left: -840px;
+}
+
+.container_16 .pull_15 {
+ left: -900px;
+}
+
+/* `Clear Floated Elements
+----------------------------------------------------------------------------------------------------*/
+
+/* http://sonspring.com/journal/clearing-floats */
+
+.clear {
+ clear: both;
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ width: 0;
+ height: 0;
+}
+
+/* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */
+
+.clearfix:before,
+.clearfix:after {
+ content: '\0020';
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ width: 0;
+ height: 0;
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+/*
+ The following zoom:1 rule is specifically for IE6 + IE7.
+ Move to separate stylesheet if invalid CSS is a problem.
+*/
+
+.clearfix {
+ zoom: 1;
+}
22 public/css/app.css
@@ -0,0 +1,22 @@
+div.pagination a {
+ float: left;
+ padding: 5px;
+ border: 1px solid #ccc;
+ background: #eee;
+ color: #009;
+ text-decoration: none;
+ display: block;
+ margin-right: 1px;
+}
+
+div.pagination span {
+ float: left;
+ padding: 5px;
+ display: block;
+ font-weight: bold;
+}
+
+#footer {
+ text-align: center;
+ margin-top: 15px;
+}
53 public/css/reset.css
@@ -0,0 +1,53 @@
+/* http://meyerweb.com/eric/tools/css/reset/ */
+/* v1.0 | 20080212 */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ font-size: 100%;
+ vertical-align: baseline;
+ background: transparent;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+
+/* remember to define focus styles! */
+:focus {
+ outline: 0;
+}
+
+/* remember to highlight inserts somehow! */
+ins {
+ text-decoration: none;
+}
+del {
+ text-decoration: line-through;
+}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
84 public/css/text.css
@@ -0,0 +1,84 @@
+/*
+ 960 Grid System ~ Text CSS.
+ Learn more ~ http://960.gs/
+
+ Licensed under GPL and MIT.
+*/
+
+/* `Basic HTML
+----------------------------------------------------------------------------------------------------*/
+
+body {
+ font: 13px/1.5 'Helvetica Neue', Arial, 'Liberation Sans', FreeSans, sans-serif;
+}
+
+a:focus {
+ outline: 1px dotted;
+}
+
+hr {
+ border: 0 #ccc solid;
+ border-top-width: 1px;
+ clear: both;
+ height: 0;
+}
+
+/* `Headings
+----------------------------------------------------------------------------------------------------*/
+
+h1 {
+ font-size: 25px;
+}
+
+h2 {
+ font-size: 23px;
+}
+
+h3 {
+ font-size: 21px;
+}
+
+h4 {
+ font-size: 19px;
+}
+
+h5 {
+ font-size: 17px;
+}
+
+h6 {
+ font-size: 15px;
+}
+
+/* `Spacing
+----------------------------------------------------------------------------------------------------*/
+
+ol {
+ list-style: decimal;
+}
+
+ul {
+ list-style: disc;
+}
+
+li {
+ margin-left: 30px;
+}
+
+p,
+dl,
+hr,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+ol,
+ul,
+pre,
+table,
+address,
+fieldset {
+ margin-bottom: 20px;
+}
0 public/js/app.js
No changes.
3 script/server
@@ -0,0 +1,3 @@
+#! /bin/bash
+
+thin -R config.ru start
26 views/layout.haml
@@ -0,0 +1,26 @@
+!!! 5
+%html
+ %head
+ %title
+ = @title || 'Undefined'
+ %link{:type => 'text/css', :rel => 'stylesheet', :href => '/public/css/reset.css'}
+ %link{:type => 'text/css', :rel => 'stylesheet', :href => '/public/css/text.css'}
+ %link{:type => 'text/css', :rel => 'stylesheet', :href => '/public/css/960.css'}
+ %link{:type => 'text/css', :rel => 'stylesheet', :href => '/public/css/app.css'}
+ %body
+ .container_12
+ #page
+ .grid_12
+ #header
+ #nav
+ .clear
+ .grid_10
+ #content
+ = yield
+ .grid_2
+ #sidebar
+ The sidebar
+ .clear
+ .grid_12
+ #footer
+ The footer

0 comments on commit 4d57ec8

Please sign in to comment.