Commit 069d683dbcbf7e077579f186857b611a1ffaebda

added simple sintra example

Commit diff

.gitignore

 
1sinatra/development.log
2sinatra/events.db
toggle raw diff

sinatra/events.rb

 
1require 'rubygems'
2require 'sinatra'
3require 'haml'
4require 'data_mapper'
5
6DataMapper::Database.setup({
7 :adapter => 'sqlite3',
8 :database => 'events.db'
9})
10
11class Event < DataMapper::Base
12 property :name, :string
13end
14Event.table.create!
15
16get('/stylesheet.css') { Sass::Engine.new(File.read(__FILE__).gsub(/.*__END__/m, '')).render }
17
18get '/events' do
19 puts Event.all.inspect
20 @events = Event.all
21 haml(layout('Events', %q{
22 %h1= "Events"
23 %form{:action => '/events', :method => 'POST'}
24 %table
25 %tr
26 %th Name
27 %td
28 %input{:type => 'text', :name => 'name', :size => 30}
29 %tr
30 %td
31 %td
32 %input{:type => 'submit', :value => 'Create Event'}
33 - if @events.empty?
34 %p No events found.
35 - else
36 %table.long
37 - c = 'even'
38 - @events.each do |e|
39 %tr{:class => (c == 'even' ? c = 'odd' : c = 'even') }
40 %td
41 %a{:href => "/event/#{e.id}" }
42 %code= e.name
43 }))
44end
45
46post '/events' do
47 name = params[:name].to_s.strip
48 x = Event.new(:name => name).save
49 redirect '/events'
50end
51
52
53def layout(title, content)
54 @saved = $ticgit.config['list_options'].keys rescue []
55 %Q(
56%html
57 %head
58 %title #{title}
59 %link{:rel => 'stylesheet', :href => '/stylesheet.css', :type => 'text/css', :media => 'screen'}
60 %meta{'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8'}
61
62 %body
63 #{content}
64 )
65end
66
67__END__
68body
69 :font
70 family: Verdana, Arial, "Bitstream Vera Sans", Helvetica, sans-serif
71 color: black
72 line-height: 160%
73 background-color: white
74 margin: 2em
75
76#navigation
77 a
78 background-color: #e0e0e0
79 color: black
80 text-decoration: none
81 padding: 2px
82 padding: 5px
83 border-bottom: 1px black solid
84
85#action
86 text-align: right
87
88.addtag
89 padding: 5px 0
90
91h1
92 display: block
93 padding-bottom: 5px
94
95a
96 color: black
97a.exists
98 font-weight: bold
99a.unknown
100 font-style: italic
101
102.comments
103 margin: 10px 20px
104 .comment
105 .head
106 background: #eee
107 padding: 4px
108 .comment-text
109 padding: 10px
110 color: #333
111
112table.long
113 width: 100%
114
115table
116 tr.even
117 td
118 background: #eee
119 tr.odd
120 td
121 background: #fff
122
123table
124 tr
125 th
126 text-align: left
127 padding: 3px
128 vertical-align: top
129 td.open
130 background: #ada
131 td.resolved
132 background: #abd
133 td.hold
134 background: #dda
135 td.invalid
136 background: #aaa
137
138.submit
139 font-size: large
140 font-weight: bold
141
142.page_title
143 font-size: xx-large
144
145.edit_link
146 color: black
147 font-size: 14px
148 font-weight: bold
149 background-color: #e0e0e0
150 font-variant: small-caps
151 text-decoration: none
152
toggle raw diff