From 646fdccac5f0ec506b80ed532baa4012965b682e Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Sat, 22 Jun 2024 03:40:56 +0530 Subject: [PATCH] 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 --- background.svg | 66 +++++++++++++++++++++++++++++++++++ logo.svg | 58 ++++++++++++++++++++++++++++++ public/css/styles.css | 40 +++++++++++++++------ public/fonts/VGA437.ttf | Bin 81192 -> 0 bytes public/images/background.png | Bin 0 -> 1342 bytes public/images/logo.png | Bin 0 -> 13393 bytes src/indrajith-dev-crystal.cr | 13 ++++++- src/utils/utils.cr | 47 +++++++++++++++++++++++++ src/views/blog.ecr | 0 src/views/layout.ecr | 36 +++++++++++++------ 10 files changed, 237 insertions(+), 23 deletions(-) create mode 100644 background.svg create mode 100644 logo.svg delete mode 100644 public/fonts/VGA437.ttf create mode 100644 public/images/background.png create mode 100644 public/images/logo.png create mode 100644 src/utils/utils.cr create mode 100644 src/views/blog.ecr diff --git a/background.svg b/background.svg new file mode 100644 index 0000000..c29d4f2 --- /dev/null +++ b/background.svg @@ -0,0 +1,66 @@ + + + + + + + + + Software is Art + + diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..1a59c7f --- /dev/null +++ b/logo.svg @@ -0,0 +1,58 @@ + + + + + + + + indrajith.dev + + diff --git a/public/css/styles.css b/public/css/styles.css index 1c19cff..f40e376 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -1,8 +1,3 @@ -@font-face { - font-family: "VGA437"; - src: url("/fonts/VGA437.ttf"); -} - :root { --body-bg-image: url("/images/aqua.gif"); } @@ -20,7 +15,10 @@ body { } body { - font-family: Verdana; + /* font-family: Verdana; */ + font-family: "Lato", sans-serif; + font-weight: 400; + font-style: normal; font-size: 15px; max-width: 900px; margin: auto; @@ -87,7 +85,6 @@ footer ul>li>p { .logo { text-decoration: none; - font-family: "VGA437", sans-serif; font-size: 220%; color: #000000; } @@ -170,7 +167,7 @@ table td { right: 0; bottom: 0; background: #000000; - height: 2px; + height: 1px; -webkit-transform: translateY(4px); transform: translateY(4px); -webkit-transition-property: transform; @@ -253,7 +250,28 @@ p.first-letter::first-letter { overflow: hidden; } -.four-o-four, .f-o-f-message { - display: flex; - justify-content: center; +.four-o-four, +.f-o-f-message { + display: flex; + justify-content: center; +} + + + +th { + background-color: #3b3b3b; + color: white; + border: 1px solid #000000; +} + +tr:nth-child(even) { + background-color: #f2f2f2; +} + +tr:nth-child(odd) { + background-color: #f8f8f8 +} + +.text-lightish-50 .hvr-underline-reveal.links { + text-decoration: underline; } \ No newline at end of file diff --git a/public/fonts/VGA437.ttf b/public/fonts/VGA437.ttf deleted file mode 100644 index f5cbfc06fd489f01566cfaa1a41f5c260368d7b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81192 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 diff --git a/public/images/background.png b/public/images/background.png new file mode 100644 index 0000000000000000000000000000000000000000..403fb6a6c3ad10ea5383f7891f5411c394e25fb4 GIT binary patch literal 1342 zcmV-E1;P4>P)002t}1^@s6I8J)%00009a7bBm000id z000id0mpBsWB>pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11j|W8 zK~#90?VR0mt2zvYmu+m|5zY(ttp^xyVQrIn6Gnq+r4~)0vV|##xnQNmi;p zK0f{h(BtAeh6Z<`{@Hsa74S#zy@Hy!#46wttAIp603l>6)Wdl{5#DH z)^SL@_Xr`tT8n9#V2nZAwnfi)8_P;5K`Di4nxK?|wYK;fZzGm5hF#A&2dyeUhf)f|FaQ9H;haMV0Wn67S4)HfPUeOr6abDzIcMaY z+4bZ-IcGG@a(g+IWdWbNUP=kmG{HFs?>)z-7$X3{T8pM>7F!i?GRp$)F^d8@#U&C- z2K2|cwuDoOMFBgd#O^hYBMW4$g;EN}7#L&9pTFHw_lI`85W*}LNek-xzPQXGP9>Hx z21+TUlrWAXzfLYlmbaEui3MO*^HC57FxwH=ayqdjR4|jpdGC2QTtl^D<(y~r9wGB6 zN*UU=<=t;hw}Gf8&!S?uZQGfZD5Yk>ylq?LoN>F|kaOl>zc#2#s zFbwQo6v$}@T+$>7B z{cltgvw*u`lt+D)0!RVZWa!^fl~}-Cgb)I}_k2wy%$8R471fF5oSXHcj4_+WrN43L znB~3aLfCuHc~#%{TnxX$-JWq+%Zf2_f*C^Ka)px0E%K&P4r^I5fK#_~Zw@7v6hsE= z(o>jMaTqt0P4S{-mzkg2PyrJXoNb?(wMVw|2c}9LBP&wJa1Ro|LuIar@rv zx`LcDmoLC))-8)*t@R;<0(Q16>LdX7g9R#%W$v_hoRaJ+mOPe{2cS7;bX~XS(!OLD z`+jWik|mLq9mVY)`E|>polc5HWel}__uloM@sd@Md&ymmhBRo0lS3JFKlRFw%1gu| zQAjL0VWC{AZCl)KHz=jh_dUm|BMSw*&<#l#V+;>zG);pL0zwEd#vsO6Jjt>roBb(c zj2wq#z9f6)^fP&HO>FWfrG677k@5tF#(sujn9U$)t$9$R7B;gidebST*^GGzVK!$# z@u};&Uv1oN!6srUrDi87a*P`I>>2>zTCYYnjjXiG(XqMKnq8ExkC>S+WtC+;n?!j$ z36=+=N9afWlp@QDG4f!m)|!Q&x=y;EQi_{-TOW4r#bU9fI|1O_$y&=Tmd8n8IpxxI z-QknY?^wKgN+4;cBa5PZNeUqYIHd}Yvj{b^SSQP0I;}nE}>?MlhVie0!k;QX+q!s|NsBAZOaocwR9Jrv3m6>C3x>SC6LEh z5*mO#1FI9CX_{EDcVV?y;&`mbB;@znmY+4{3zmDYpXAgOQ^e8`(-Y% z3b@27;1a8VORNGeu?o1vDxd){0Qj@_LMmYR4^$M@YP#>A@Bjb+07*qoM6N<$g69`? A1^@s6 literal 0 HcmV?d00001 diff --git a/public/images/logo.png b/public/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a327857047a45ac1a557f0023b3e608972eb6854 GIT binary patch literal 13393 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 literal 0 HcmV?d00001 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 @@