From 64011cf9120ada3cda56c441650f6b62282ede20 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Wed, 1 Feb 2023 22:39:24 +0200 Subject: [PATCH 01/12] Added pagination buttons to list template --- css/blog.css | 8 ++++++++ css/blog.css.map | 2 +- css/blog.min.css | 2 +- css/blog.scss | 8 ++++++++ templates/homepage.html | 6 ++++++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/css/blog.css b/css/blog.css index 3f9f4f6..2a7a343 100644 --- a/css/blog.css +++ b/css/blog.css @@ -91,4 +91,12 @@ border-bottom-right-radius: 1rem; } +.blog-pagination { + margin-bottom: 2rem; +} +.blog-pagination .btn { + margin-left: 1rem; + width: 5rem; +} + /*# sourceMappingURL=blog.css.map */ diff --git a/css/blog.css.map b/css/blog.css.map index b1d4b26..eae8269 100644 --- a/css/blog.css.map +++ b/css/blog.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA","file":"blog.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA;;;AAIJ;EACE;;AACA;EACE;EACA","file":"blog.css"} \ No newline at end of file diff --git a/css/blog.min.css b/css/blog.min.css index 27118c7..8661097 100644 --- a/css/blog.min.css +++ b/css/blog.min.css @@ -1 +1 @@ -.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem} \ No newline at end of file +.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem} \ No newline at end of file diff --git a/css/blog.scss b/css/blog.scss index 81f78ec..1d2fd48 100644 --- a/css/blog.scss +++ b/css/blog.scss @@ -100,3 +100,11 @@ border-bottom-right-radius: 1rem; } } + +.blog-pagination { + margin-bottom: 2rem; + .btn { + margin-left: 1rem; + width: 5rem; + } +} \ No newline at end of file diff --git a/templates/homepage.html b/templates/homepage.html index fae0613..8d701c8 100644 --- a/templates/homepage.html +++ b/templates/homepage.html @@ -293,6 +293,12 @@

axonas peregrinationes!

+ + +
From a84b871e337137aceb33134fe65a7d6f5fcefa10 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Wed, 1 Feb 2023 23:29:34 +0200 Subject: [PATCH 02/12] Updated authenticated user block (header) Added anonymous user image to repository. --- img/anonymous.svg | 32 ++++++++++++++++++++++++++++++++ templates/blogpost.html | 24 ++++++++++++------------ templates/homepage.html | 10 +++------- 3 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 img/anonymous.svg diff --git a/img/anonymous.svg b/img/anonymous.svg new file mode 100644 index 0000000..ffc9539 --- /dev/null +++ b/img/anonymous.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/blogpost.html b/templates/blogpost.html index 44611cd..63180d4 100644 --- a/templates/blogpost.html +++ b/templates/blogpost.html @@ -25,17 +25,17 @@ Django Blog @@ -144,7 +144,7 @@

hydras volare!

minus quia quos saepe suscipit totam. Accusamus cum exercitationem harum id itaque, officia quos ullam voluptatem.

-

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto dicta, ea esse excepturi ipsa laudantium libero molestias officiis quas quidem quisquam ratione? Dolores est, iste laborum pariatur ullam vitae? Atque? @@ -167,7 +167,7 @@

hydras volare!

minus quia quos saepe suscipit totam. Accusamus cum exercitationem harum id itaque, officia quos ullam voluptatem.

-

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto dicta, ea esse excepturi ipsa laudantium libero molestias officiis quas quidem quisquam ratione? Dolores est, iste laborum pariatur ullam vitae? Atque? diff --git a/templates/homepage.html b/templates/homepage.html index 8d701c8..bee6454 100644 --- a/templates/homepage.html +++ b/templates/homepage.html @@ -26,15 +26,11 @@

From 06825ae1e2c0c086de694cbdcb3c5d4cd85be0a1 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Wed, 1 Feb 2023 23:59:03 +0200 Subject: [PATCH 03/12] Added blogpost comment form --- css/blog.css | 5 +++++ css/blog.css.map | 2 +- css/blog.min.css | 2 +- css/blog.scss | 5 +++++ templates/blogpost.html | 14 +++++++++++++- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/css/blog.css b/css/blog.css index 2a7a343..459e06c 100644 --- a/css/blog.css +++ b/css/blog.css @@ -99,4 +99,9 @@ width: 5rem; } +.avatar { + max-height: 10rem; + max-width: 10rem; +} + /*# sourceMappingURL=blog.css.map */ diff --git a/css/blog.css.map b/css/blog.css.map index eae8269..452dee1 100644 --- a/css/blog.css.map +++ b/css/blog.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA;;;AAIJ;EACE;;AACA;EACE;EACA","file":"blog.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;;;AAIJ;EACE;EACA","file":"blog.css"} \ No newline at end of file diff --git a/css/blog.min.css b/css/blog.min.css index 8661097..d1fac9e 100644 --- a/css/blog.min.css +++ b/css/blog.min.css @@ -1 +1 @@ -.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem} \ No newline at end of file +.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem}.avatar{max-height:10rem;max-width:10rem} \ No newline at end of file diff --git a/css/blog.scss b/css/blog.scss index 1d2fd48..74c9d1a 100644 --- a/css/blog.scss +++ b/css/blog.scss @@ -107,4 +107,9 @@ margin-left: 1rem; width: 5rem; } +} + +.avatar { + max-height: 10rem; + max-width: 10rem; } \ No newline at end of file diff --git a/templates/blogpost.html b/templates/blogpost.html index 63180d4..92b85d2 100644 --- a/templates/blogpost.html +++ b/templates/blogpost.html @@ -111,8 +111,8 @@
-

hydras volare!

+

hydras volare!

category @@ -192,6 +192,18 @@

hydras volare!

+

Comments

+
+
+

New comment

+ +
+
+ avatar + + +
+
From c261a31ad6cfb82265c5e54c9875ee64c8bfd2f8 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Thu, 2 Feb 2023 00:28:14 +0200 Subject: [PATCH 04/12] Updated comments section --- css/blog.css | 5 +++ css/blog.css.map | 2 +- css/blog.min.css | 2 +- css/blog.scss | 9 +++++- templates/blogpost.html | 68 +++++++++++++++++++++++++++++++++++++++-- 5 files changed, 80 insertions(+), 6 deletions(-) diff --git a/css/blog.css b/css/blog.css index 459e06c..a8471bb 100644 --- a/css/blog.css +++ b/css/blog.css @@ -104,4 +104,9 @@ max-width: 10rem; } +.blogpost-comment .avatar { + max-height: 7rem; + max-width: 7rem; +} + /*# sourceMappingURL=blog.css.map */ diff --git a/css/blog.css.map b/css/blog.css.map index 452dee1..db5f39e 100644 --- a/css/blog.css.map +++ b/css/blog.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;;;AAIJ;EACE;EACA","file":"blog.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAIA;EACE;EACA","file":"blog.css"} \ No newline at end of file diff --git a/css/blog.min.css b/css/blog.min.css index d1fac9e..e0236cd 100644 --- a/css/blog.min.css +++ b/css/blog.min.css @@ -1 +1 @@ -.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem}.avatar{max-height:10rem;max-width:10rem} \ No newline at end of file +.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem}.avatar{max-height:10rem;max-width:10rem}.blogpost-comment .avatar{max-height:7rem;max-width:7rem} \ No newline at end of file diff --git a/css/blog.scss b/css/blog.scss index 74c9d1a..9d59235 100644 --- a/css/blog.scss +++ b/css/blog.scss @@ -112,4 +112,11 @@ .avatar { max-height: 10rem; max-width: 10rem; -} \ No newline at end of file +} + +.blogpost-comment { + .avatar { + max-height: 7rem; + max-width: 7rem; + } +} diff --git a/templates/blogpost.html b/templates/blogpost.html index 92b85d2..bca042e 100644 --- a/templates/blogpost.html +++ b/templates/blogpost.html @@ -194,16 +194,78 @@

hydras volare!

Comments

-
+

New comment

-
- avatar +
+ avatar
+
+
+ avatar +
+ John Doe +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae + molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia + praesentium quam. +

+  Jan 31, 2023 +
+
+
+ avatar +
+ John Doe +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae + molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia + praesentium quam. +

+  Jan 31, 2023 +
+
+
+ avatar +
+ John Doe +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae + molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia + praesentium quam. +

+  Jan 31, 2023 +
+
+
+ avatar +
+ John Doe +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae + molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia + praesentium quam. +

+  Jan 31, 2023 +
+
+
+ avatar +
+ John Doe +

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae + molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia + praesentium quam. +

+  Jan 31, 2023 +
+
+
From ecdfe1cbb85d303b2255f162fef750da3595969a Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Thu, 2 Feb 2023 01:05:41 +0200 Subject: [PATCH 05/12] Added blogpost comment functions Implemented functions to create and insert comment entry to a page. Adjusted styling. --- css/blog.css | 12 ++++++++++++ css/blog.css.map | 2 +- css/blog.min.css | 2 +- css/blog.scss | 18 +++++++++++++++++ js/blog.js | 38 ++++++++++++++++++++++++++++++++++++ templates/blogpost.html | 43 +++++++++++++++++++++-------------------- 6 files changed, 92 insertions(+), 23 deletions(-) create mode 100644 js/blog.js diff --git a/css/blog.css b/css/blog.css index a8471bb..726b099 100644 --- a/css/blog.css +++ b/css/blog.css @@ -104,9 +104,21 @@ max-width: 10rem; } +.blogpost-comment { + margin-bottom: 0.75rem; +} .blogpost-comment .avatar { max-height: 7rem; max-width: 7rem; } +.blogpost-comment div strong { + margin-bottom: 0.5rem; +} +.blogpost-comment div div { + margin-bottom: 0.5rem; +} +.blogpost-comment .bi-calendar { + margin-right: 0.5rem; +} /*# sourceMappingURL=blog.css.map */ diff --git a/css/blog.css.map b/css/blog.css.map index db5f39e..f861ae0 100644 --- a/css/blog.css.map +++ b/css/blog.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAIF;EACE;EACA;;;AAIJ;EACE;;AACA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAIA;EACE;EACA","file":"blog.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["blog.scss"],"names":[],"mappings":"AAAA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;EACA;;AAEA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAKF;EACE;EACA;;;AAKF;EACE;EACA;;;AAIJ;EACE;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;;AAEA;EACE;EACA;;AAIA;EACE;;AAGF;EACE;;AAIJ;EACE","file":"blog.css"} \ No newline at end of file diff --git a/css/blog.min.css b/css/blog.min.css index e0236cd..ef3f6dd 100644 --- a/css/blog.min.css +++ b/css/blog.min.css @@ -1 +1 @@ -.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem}.avatar{max-height:10rem;max-width:10rem}.blogpost-comment .avatar{max-height:7rem;max-width:7rem} \ No newline at end of file +.blog-header{border-bottom:2px solid #e5e5e5}.blog-header .avatar,.blog-header .logo{max-height:2.75rem;max-width:2.75rem}.blog-title{font-family:"Playfair Display",Georgia,"Times New Roman",serif;font-size:2.25rem}.blog-title:hover{text-decoration:none}.nav-scroller{position:relative;z-index:2;height:2.75rem;overflow-y:hidden}.nav-scroller .nav{display:flex;flex-wrap:nowrap;padding-bottom:1rem;margin-top:-1px;overflow-x:auto;text-align:center;white-space:nowrap;-webkit-overflow-scrolling:touch}.position-sticky{top:2rem}.social{font-size:2.75rem;color:var(--bs-body-color)}.carousel{margin-bottom:4rem}.carousel-caption{bottom:3rem;z-index:10}.carousel-item{height:25rem}.form-auth{height:100%;display:block;align-items:center;text-align:center;max-width:300px;padding:15px}.form-auth input{border-radius:0}.form-auth input#username{border-top-left-radius:1rem;border-top-right-radius:1rem}.form-auth .form-floating:focus-within{z-index:2}.form-auth.form-signin #password,.form-auth.form-signup #confirmPassword{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.blog-pagination{margin-bottom:2rem}.blog-pagination .btn{margin-left:1rem;width:5rem}.avatar{max-height:10rem;max-width:10rem}.blogpost-comment{margin-bottom:.75rem}.blogpost-comment .avatar{max-height:7rem;max-width:7rem}.blogpost-comment div div,.blogpost-comment div strong{margin-bottom:.5rem}.blogpost-comment .bi-calendar{margin-right:.5rem} \ No newline at end of file diff --git a/css/blog.scss b/css/blog.scss index 9d59235..06966f7 100644 --- a/css/blog.scss +++ b/css/blog.scss @@ -94,6 +94,7 @@ border-bottom-right-radius: 1rem; } } + .form-auth.form-signup { #confirmPassword { border-bottom-left-radius: 1rem; @@ -103,6 +104,7 @@ .blog-pagination { margin-bottom: 2rem; + .btn { margin-left: 1rem; width: 5rem; @@ -115,8 +117,24 @@ } .blogpost-comment { + margin-bottom: 0.75rem; + .avatar { max-height: 7rem; max-width: 7rem; } + + div { + strong { + margin-bottom: 0.5rem; + } + + div { + margin-bottom: 0.5rem; + } + } + + .bi-calendar { + margin-right: 0.5rem; + } } diff --git a/js/blog.js b/js/blog.js new file mode 100644 index 0000000..fe47c33 --- /dev/null +++ b/js/blog.js @@ -0,0 +1,38 @@ +// blogpost comment creation + +const createBlogpostComment = (author, message, time) => { + const comment = document.createElement("div"); + comment.classList.add("blogpost-comment", "col-12", "d-flex"); + + const author_avatar = document.createElement("img"); + author_avatar.src = "https://i.pravatar.cc/350"; + author_avatar.classList.add("avatar", "rounded-circle", "p-2"); + comment.appendChild(author_avatar); + + const comment_body = document.createElement("div"); + comment.appendChild(comment_body); + + const comment_author = document.createElement("strong"); + comment_author.classList.add("h4", "mb-2"); + comment_author.innerText = author; + comment_body.appendChild(comment_author); + + const comment_message = document.createElement("div"); + comment_message.innerText = message; + comment_body.appendChild(comment_message); + + const comment_created = document.createElement("small"); + const icon = document.createElement("i"); + comment_created.classList.add("text-muted"); + comment_created.innerText = time; + icon.classList.add("bi", "bi-calendar"); + comment_created.insertBefore(icon, comment_created.firstChild); + comment_body.appendChild(comment_created); + + return comment; +} + +const addBlogpostComment = comment => { + const container = document.getElementById("commentsContainer"); + if (container) container.insertBefore(comment, container.firstChild); +} diff --git a/templates/blogpost.html b/templates/blogpost.html index bca042e..e9cc680 100644 --- a/templates/blogpost.html +++ b/templates/blogpost.html @@ -204,65 +204,65 @@

New comment

-
-
+
+
avatar
John Doe -

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia praesentium quam. -

-  Jan 31, 2023 +
+ Jan 31, 2023
-
+
avatar
John Doe -

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia praesentium quam. -

-  Jan 31, 2023 +
+ Jan 31, 2023
-
+
avatar
John Doe -

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia praesentium quam. -

-  Jan 31, 2023 +
+ Jan 31, 2023
-
+
avatar
John Doe -

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia praesentium quam. -

-  Jan 31, 2023 +
+ Jan 31, 2023
-
+
avatar
John Doe -

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias aperiam beatae dolorem iure molestiae molestias quis quisquam reprehenderit! A animi assumenda autem blanditiis ea esse hic magnam officia praesentium quam. -

-  Jan 31, 2023 +
+ Jan 31, 2023
@@ -307,5 +307,6 @@

Out social media

+ From 0ef1b9c450dc3090787d80fc3e97159676ed0e18 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Thu, 2 Feb 2023 01:27:14 +0200 Subject: [PATCH 06/12] Implemented blogpost form submit handler function --- js/blog.js | 39 ++++++++++++++++++++++++++++++++++----- templates/blogpost.html | 6 +++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/js/blog.js b/js/blog.js index fe47c33..8a38ef6 100644 --- a/js/blog.js +++ b/js/blog.js @@ -1,11 +1,11 @@ // blogpost comment creation -const createBlogpostComment = (author, message, time) => { +const createBlogpostComment = ({author, message, created_at}) => { const comment = document.createElement("div"); comment.classList.add("blogpost-comment", "col-12", "d-flex"); const author_avatar = document.createElement("img"); - author_avatar.src = "https://i.pravatar.cc/350"; + author_avatar.src = author.img; author_avatar.classList.add("avatar", "rounded-circle", "p-2"); comment.appendChild(author_avatar); @@ -14,7 +14,7 @@ const createBlogpostComment = (author, message, time) => { const comment_author = document.createElement("strong"); comment_author.classList.add("h4", "mb-2"); - comment_author.innerText = author; + comment_author.innerText = author.name; comment_body.appendChild(comment_author); const comment_message = document.createElement("div"); @@ -24,7 +24,7 @@ const createBlogpostComment = (author, message, time) => { const comment_created = document.createElement("small"); const icon = document.createElement("i"); comment_created.classList.add("text-muted"); - comment_created.innerText = time; + comment_created.innerText = created_at; icon.classList.add("bi", "bi-calendar"); comment_created.insertBefore(icon, comment_created.firstChild); comment_body.appendChild(comment_created); @@ -32,7 +32,36 @@ const createBlogpostComment = (author, message, time) => { return comment; } + const addBlogpostComment = comment => { - const container = document.getElementById("commentsContainer"); + const container = document.getElementById("BlogpostCommentsContainer"); if (container) container.insertBefore(comment, container.firstChild); } + + +const handleNewCommentSubmit = (event) => { + event.preventDefault(); + event.stopPropagation(); + + const message = event.target.querySelector("textarea").value.trim(); + event.target.reset(); + + if (!message) return; + + // TODO: get payload from backend + const payload = { + author: { + img: "https://i.pravatar.cc/350?u=da594f2b", + name: "Bosco Longhole", + }, + message, + created_at: "Feb 2, 2023", + } + + const comment = createBlogpostComment(payload); + addBlogpostComment(comment); +} + + +const BlogpostCommentsForm = document.getElementById("BlogpostCommentForm"); +if (BlogpostCommentsForm) BlogpostCommentsForm.addEventListener("submit", handleNewCommentSubmit); diff --git a/templates/blogpost.html b/templates/blogpost.html index e9cc680..59e91a9 100644 --- a/templates/blogpost.html +++ b/templates/blogpost.html @@ -193,7 +193,7 @@

hydras volare!

Comments

-
+

New comment

@@ -201,10 +201,10 @@

New comment

avatar - +
-
+
avatar
From 6e968f66b744eaf1afb4d509ab8ddbbdabd981e4 Mon Sep 17 00:00:00 2001 From: Serhii Horodilov Date: Thu, 2 Feb 2023 01:44:30 +0200 Subject: [PATCH 07/12] Moved templates to project root Prepared content for deployment at GitHub Pages as static web-site. --- templates/blogpost.html => blogpost.html | 16 ++++++++-------- templates/homepage.html => index.html | 16 ++++++++-------- templates/profile.html => profile.html | 14 +++++++------- templates/signin.html => signin.html | 14 +++++++------- templates/signup.html => signup.html | 14 +++++++------- 5 files changed, 37 insertions(+), 37 deletions(-) rename templates/blogpost.html => blogpost.html (97%) rename templates/homepage.html => index.html (97%) rename templates/profile.html => profile.html (97%) rename templates/signin.html => signin.html (88%) rename templates/signup.html => signup.html (89%) diff --git a/templates/blogpost.html b/blogpost.html similarity index 97% rename from templates/blogpost.html rename to blogpost.html index 59e91a9..6b740b6 100644 --- a/templates/blogpost.html +++ b/blogpost.html @@ -7,11 +7,11 @@ Blogpost Title - - - + + + - + @@ -19,10 +19,10 @@
- +