aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2021-03-02 21:35:44 +0100
committerJohn Ankarström <john@ankarstrom.se>2021-03-02 21:35:44 +0100
commitd072b503f5ccc5d08f279aac463d37837cbbb576 (patch)
treef8f1265ea274ad1d4a32a8272da68187813231e6
parent0882804d708fe5a1732c6b9faa7d9a2f369f5257 (diff)
downloadcomb-d072b503f5ccc5d08f279aac463d37837cbbb576.tar.gz
Add 'post' and 'not_found' views
-rw-r--r--interfaces/http/http.rb1
-rw-r--r--interfaces/http/web/views/index.erb28
-rw-r--r--interfaces/http/web/views/layout.erb11
-rw-r--r--interfaces/http/web/views/not_found.erb3
-rw-r--r--interfaces/http/web/views/post.erb7
-rw-r--r--interfaces/http/web/web.rb15
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