diff options
Diffstat (limited to 'interfaces/http')
-rw-r--r-- | interfaces/http/http.rb | 1 | ||||
-rw-r--r-- | interfaces/http/web/views/index.erb | 28 | ||||
-rw-r--r-- | interfaces/http/web/views/layout.erb | 11 | ||||
-rw-r--r-- | interfaces/http/web/views/not_found.erb | 3 | ||||
-rw-r--r-- | interfaces/http/web/views/post.erb | 7 | ||||
-rw-r--r-- | interfaces/http/web/web.rb | 15 |
6 files changed, 46 insertions, 19 deletions
diff --git a/interfaces/http/http.rb b/interfaces/http/http.rb index 8947890..0589c93 100644 --- a/interfaces/http/http.rb +++ b/interfaces/http/http.rb @@ -7,5 +7,6 @@ class HTTPInterface < Sinatra::Base require_relative 'web/web'; use WebInterface # require_relative 'admin/admin'; use AdminInterface # require_relative 'rss/rss'; use RSSInterface + run! if app_file == $0 end diff --git a/interfaces/http/web/views/index.erb b/interfaces/http/web/views/index.erb index 80e64a5..ee96a6c 100644 --- a/interfaces/http/web/views/index.erb +++ b/interfaces/http/web/views/index.erb @@ -1,19 +1,9 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8" /> - <title><%= $config.title %></title> -</head> -<body> - <h1 id="title"><%= $config.title %></h1> - <% for post in @posts %> - <h2><%= post.title %></h2> - <div class="meta"> - <p><%= post.created_at %></p> - </div> - <div class="content"> - <%= post.body %> - </div> - <% end %> -</body> -</html> +<% for post in @posts %> + <h2><%= post.title %></h2> + <div class="meta"> + <p><%= post.created_at.strftime('%e %b %Y') %></p> + </div> + <div class="content"> + <%= post.body %> + </div> +<% end %> diff --git a/interfaces/http/web/views/layout.erb b/interfaces/http/web/views/layout.erb new file mode 100644 index 0000000..2593992 --- /dev/null +++ b/interfaces/http/web/views/layout.erb @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8" /> + <title><%= @title %></title> +</head> +<body> + <h1 id="title"><%= $config.title %></h1> + <%= yield %> +</body> +</html> diff --git a/interfaces/http/web/views/not_found.erb b/interfaces/http/web/views/not_found.erb new file mode 100644 index 0000000..7a4228b --- /dev/null +++ b/interfaces/http/web/views/not_found.erb @@ -0,0 +1,3 @@ +<h1>404 Not Found</h1> +<p>The page you are looking for does not exist.</p> +<p><a href="/">Go to front page</a>.</p> diff --git a/interfaces/http/web/views/post.erb b/interfaces/http/web/views/post.erb new file mode 100644 index 0000000..1fe689a --- /dev/null +++ b/interfaces/http/web/views/post.erb @@ -0,0 +1,7 @@ +<h1><%= @post.title %></h1> +<div class="meta"> + <p><%= @post.created_at %></p> +</div> +<div class="content"> + <%= @post.body %> +</div> diff --git a/interfaces/http/web/web.rb b/interfaces/http/web/web.rb index ca04ecc..16492c2 100644 --- a/interfaces/http/web/web.rb +++ b/interfaces/http/web/web.rb @@ -1,6 +1,21 @@ class WebInterface < Sinatra::Base get '/' do + @title = $config.title @posts = Post.all erb :index end + + get '/:year/:month/:day/:slug' do + @posts = Post.where(slug: params['slug']) + + if @posts.empty? then + status 404 + @title = '404 Not Found' + erb :not_found + else + @post = @posts[0] + @title = @post.title + erb :post + end + end end |