From 646fdccac5f0ec506b80ed532baa4012965b682e Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Sat, 22 Jun 2024 03:40:56 +0530 Subject: Date Utils, Cosmetic and Implementation Changes * Adds Utils method for formatting date * Adds Published at to the posts page * Adds new logo, removes font dependency * Renames Posts link to Blog --- src/indrajith-dev-crystal.cr | 13 +++++++++++- src/utils/utils.cr | 47 ++++++++++++++++++++++++++++++++++++++++++++ src/views/blog.ecr | 0 src/views/layout.ecr | 36 ++++++++++++++++++++++----------- 4 files changed, 84 insertions(+), 12 deletions(-) create mode 100644 src/utils/utils.cr create mode 100644 src/views/blog.ecr (limited to 'src') diff --git a/src/indrajith-dev-crystal.cr b/src/indrajith-dev-crystal.cr index f5ddabd..f49f134 100644 --- a/src/indrajith-dev-crystal.cr +++ b/src/indrajith-dev-crystal.cr @@ -2,6 +2,8 @@ require "kemal" require "crest" require "json" require "dotenv" +require "./utils/utils" +require "time" Dotenv.load @@ -13,6 +15,7 @@ module Indrajith::Dev::Crystal macro page_renderer(filename, title) page_title = {{title}} + published_at="" render "src/views/#{{{filename}}}.ecr", "src/views/layout.ecr" end @@ -41,6 +44,11 @@ module Indrajith::Dev::Crystal page_renderer "contact", "Contact" end + get "/blog" do |context| + context.response.content_type = "text/html" + page_renderer "blog", "Blog" + end + get "/posts" do |context| begin site = Crest::Resource.new("#{STRAPI_URL}") @@ -80,7 +88,7 @@ module Indrajith::Dev::Crystal get "/post/:slug" do |context| begin slug = context.params.url["slug"] - site = Crest::Resource.new("http://localhost:1337") + site = Crest::Resource.new("#{STRAPI_URL}") response = site.get("/api/posts", params: { @@ -94,6 +102,9 @@ module Indrajith::Dev::Crystal post_item = data[0] post_attribute = post_item["attributes"] content = post_attribute["post_content"] + published_raw_time = post_attribute["publishedAt"].as_s + published_time = Time.parse(published_raw_time, "%Y-%m-%dT%H:%M:%S.%3NZ", Time::Location.local) + published_at = format_date(published_time) page_title = post_attribute["post_title"] render "src/views/layout.ecr" rescue ex diff --git a/src/utils/utils.cr b/src/utils/utils.cr new file mode 100644 index 0000000..7b214ce --- /dev/null +++ b/src/utils/utils.cr @@ -0,0 +1,47 @@ + +def format_date(time : Time) + month = get_month(time.month) + "#{month} #{time.day}, #{time.year}" +end + +def format_date_with_time(time : Time) + month = get_month(time.month) + "#{month} #{time.day}, #{time.year} #{time.hour}:#{time.minute} #{am_or_pm(time.hour)}" +end + +def get_month(month) + case month + when 1 + "January" + when 2 + "February" + when 3 + "March" + when 4 + "April" + when 5 + "May" + when 6 + "June" + when 7 + "July" + when 8 + "August" + when 9 + "September" + when 10 + "October" + when 11 + "November" + when 12 + "December" + end +end + +def am_or_pm(hour) + if hour > 12 + "PM" + else + "AM" + end +end \ No newline at end of file diff --git a/src/views/blog.ecr b/src/views/blog.ecr new file mode 100644 index 0000000..e69de29 diff --git a/src/views/layout.ecr b/src/views/layout.ecr index abb2dae..763f1cb 100644 --- a/src/views/layout.ecr +++ b/src/views/layout.ecr @@ -7,28 +7,37 @@ + + +
- +

(Software is Art)


-
+
+ <%- if published_at -%> +
+ <%= published_at %> +
+ <%- else -%> + <%- end -%> <%= content %>
@@ -44,11 +53,16 @@ -- cgit v1.2.3