Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions css/blog.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion css/blog.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion css/blog.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions css/blog.scss
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,47 @@
border-bottom-right-radius: 1rem;
}
}

.form-auth.form-signup {
#confirmPassword {
border-bottom-left-radius: 1rem;
border-bottom-right-radius: 1rem;
}
}

.blog-pagination {
margin-bottom: 2rem;

.btn {
margin-left: 1rem;
width: 5rem;
}
}

.avatar {
max-height: 10rem;
max-width: 10rem;
}

.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;
}
}
32 changes: 32 additions & 0 deletions img/anonymous.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
67 changes: 67 additions & 0 deletions js/blog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
// blogpost comment creation

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 = author.img;
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.name;
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 = created_at;
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("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);
101 changes: 88 additions & 13 deletions templates/blogpost.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@
<a href="homepage.html" class="blog-title text-dark">Django Blog</a>
</div>
<div class="col-4 d-flex justify-content-end align-items-center dropdown">
<div class="btn-group">
<button type="button" class="btn btn-secondary">Authenticate</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split"
data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="signin.html">Sign In</a></li>
<li><a class="dropdown-item" href="signup.html">Sign Up</a></li>
</ul>
<div class="dropdown-toggle" data-bs-toggle="dropdown">
<img src="https://i.pravatar.cc/350?u=da594f2b" alt="avatar" class="avatar rounded-circle">
</div>
<ul class="dropdown-menu" role="menu">
<li><a href="" class="dropdown-item">User Profile</a></li>
<li><a href="" class="dropdown-item">Create post</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a href="" class="dropdown-item">Logout</a></li>
</ul>
</div>
</div>
</header>
Expand Down Expand Up @@ -111,8 +111,8 @@
<main class="container">
<div class="row">
<section class="col-md-9 mb-2" role="main">
<h1 class="h1">hydras volare!</h1>
<div class="row position-relative">
<h1 class="h1">hydras volare!</h1>
<article class="col w-100">
<div class="mb-3">
<strong class="fw-light">category</strong>
Expand Down Expand Up @@ -144,7 +144,7 @@ <h1 class="h1">hydras volare!</h1>
minus quia quos saepe suscipit totam. Accusamus cum exercitationem harum id itaque, officia quos ullam
voluptatem.
</p>
<p>
<p>
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?
Expand All @@ -167,7 +167,7 @@ <h1 class="h1">hydras volare!</h1>
minus quia quos saepe suscipit totam. Accusamus cum exercitationem harum id itaque, officia quos ullam
voluptatem.
</p>
<p>
<p>
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?
Expand All @@ -192,6 +192,80 @@ <h1 class="h1">hydras volare!</h1>
</p>
</article>
</div>
<h2 class="h2">Comments</h2>
<form class="row position-relative" id="BlogpostCommentForm">
<div class="col-12 d-flex justify-content-between align-items-center mb-3">
<h3 class="h3">New comment</h3>
<button type="submit" class="btn btn-outline-primary"><i class="bi bi-send"></i>&nbsp;Post</button>
</div>
<div class="col-12 d-flex justify-content-start mb-3">
<img src="https://i.pravatar.cc/350?u=da594f2b" alt="avatar" class="avatar rounded-circle p-2">
<label for="newCommentText" class="visually-hidden">Comment Text</label>
<textarea name="message" id="newCommentText" class="form-control" required></textarea>
</div>
</form>
<div class="row position-relative" id="BlogpostCommentsContainer">
<div class="blogpost-comment col-12 d-flex">
<img src="https://i.pravatar.cc/350?u=4001b435" alt="avatar" class="avatar rounded-circle p-2">
<div>
<strong class="mb-2 h4">John Doe</strong>
<div>
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.
</div>
<small class="small text-muted"><i class="bi bi-calendar"></i>Jan 31, 2023</small>
</div>
</div>
<div class="blogpost-comment col-12 d-flex">
<img src="https://i.pravatar.cc/350?u=4001b435" alt="avatar" class="avatar rounded-circle p-2">
<div>
<strong class="mb-2 h4">John Doe</strong>
<div>
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.
</div>
<small class="small text-muted"><i class="bi bi-calendar"></i>Jan 31, 2023</small>
</div>
</div>
<div class="blogpost-comment col-12 d-flex">
<img src="https://i.pravatar.cc/350?u=4001b435" alt="avatar" class="avatar rounded-circle p-2">
<div>
<strong class="mb-2 h4">John Doe</strong>
<div>
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.
</div>
<small class="small text-muted"><i class="bi bi-calendar"></i>Jan 31, 2023</small>
</div>
</div>
<div class="blogpost-comment col-12 d-flex">
<img src="https://i.pravatar.cc/350?u=4001b435" alt="avatar" class="avatar rounded-circle p-2">
<div>
<strong class="mb-2 h4">John Doe</strong>
<div>
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.
</div>
<small class="small text-muted"><i class="bi bi-calendar"></i>Jan 31, 2023</small>
</div>
</div>
<div class="blogpost-comment col-12 d-flex">
<img src="https://i.pravatar.cc/350?u=4001b435" alt="avatar" class="avatar rounded-circle p-2">
<div>
<strong class="mb-2 h4">John Doe</strong>
<div>
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.
</div>
<small class="small text-muted"><i class="bi bi-calendar"></i>Jan 31, 2023</small>
</div>
</div>
</div>
</section>
<section class="col-md-3">
<div class="position-sticky">
Expand Down Expand Up @@ -233,5 +307,6 @@ <h4>Out social media</h4>
</main>

<script src="../js/bootstrap.bundle.js"></script>
<script src="../js/blog.js"></script>
</body>
</html>
16 changes: 9 additions & 7 deletions templates/homepage.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,11 @@
</div>
<div class="col-4 d-flex justify-content-end align-items-center dropdown">
<div class="dropdown-toggle" data-bs-toggle="dropdown">
<img src="https://i.pravatar.cc/350?u=da594f2b" alt="avatar" class="avatar rounded-circle">
<img src="../img/anonymous.svg" alt="avatar" class="avatar rounded-circle">
</div>
<ul class="dropdown-menu" role="menu">
<li><a href="" class="dropdown-item">User Profile</a></li>
<li><a href="" class="dropdown-item">Create post</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a href="" class="dropdown-item">Logout</a></li>
<li><a href="" class="dropdown-item">Sign In</a></li>
<li><a href="" class="dropdown-item">Sing Up</a></li>
</ul>
</div>
</div>
Expand Down Expand Up @@ -293,6 +289,12 @@ <h2 class="card-title">axonas peregrinationes!</h2>
</div>
</div>
</article>

<nav class="blog-pagination" aria-label="Pagination">
<a href="" class="btn btn-outline-primary rounded-pill">Older</a>
<a href="" class="btn btn-outline-success rounded-pill">Newer</a>
</nav>

</div>
</section>
<section class="col-md-3">
Expand Down