Skip to content

Commit 2e54647

Browse files
authored
Replace hero image with carousel slider (#544)
* Increased timeout from4 to 20 to give time to my server to start * Carousel added * Bootstrap imported * Styling added * Added test for carousel slider * Commented code removed
1 parent 8267f61 commit 2e54647

File tree

4 files changed

+88
-4
lines changed

4 files changed

+88
-4
lines changed

_layouts/default.html

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}" />
1313
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ '/feed.xml' | prepend: site.baseurl | prepend: site.url }}" />
1414
<link rel="icon" href="https://fav.farm/%E2%9C%8A%F0%9F%8F%BE" type="image/svg" />
15+
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
1516
{% if page.lang and page.untranslated != true and site.data.locales.size > 1 %}
1617
{% assign locales = site.data.locales | sort %}
1718
{% for locale in locales %}
@@ -36,5 +37,6 @@
3637
{%- include footer.html -%}
3738
<script src="{{ '/assets/js/index.js' | relative_url }}"></script>
3839
<script src="https://kit.fontawesome.com/1bbe56de49.js" crossorigin="anonymous"></script>
40+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
3941
</body>
4042
</html>

_layouts/index.html

+25-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,31 @@
33
---
44
<div class="home">
55
{% assign t = site.data.locales[page.lang][page.lang] %} {% if page.title %} {% assign header = page.title %} {% else %} {% assign header = site.title %} {% endif %}
6-
<article class="hero">
7-
<div class="hero-text">{{ t.index.lead }}</div>
8-
</article>
6+
<header>
7+
<div id="postSlider" class="carousel slide slider-container" data-bs-ride="carousel">
8+
<div class="carousel-inner">
9+
{% for post in site.posts %}
10+
<div class="carousel-item {% if forloop.first %}active{% endif %}">
11+
<div class="email-circle">
12+
<img src="{{ post.featured_image | default: post.content | split: '!' | first | split: '(' | last | split: ')' | first | default: 'default-image.jpg' }}" alt="{{ post.title }}">
13+
</div>
14+
<h3 class="post-title">{{ post.title }}</h3>
15+
<p class="post-summary">{{ post.excerpt | strip_html | truncatewords: 20 }}</p>
16+
</div>
17+
{% endfor %}
18+
</div>
19+
20+
<!-- Controls -->
21+
<button class="carousel-control-prev" type="button" data-bs-target="#postSlider" data-bs-slide="prev">
22+
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
23+
<span class="visually-hidden">Previous</span>
24+
</button>
25+
<button class="carousel-control-next" type="button" data-bs-target="#postSlider" data-bs-slide="next">
26+
<span class="carousel-control-next-icon" aria-hidden="true"></span>
27+
<span class="visually-hidden">Next</span>
28+
</button>
29+
</div>
30+
</header>
931
{{ content }}
1032

1133
<img src="{{'/assets/images/dcus.jpg' | relative_url }}" alt="DjangoCon US 2023"/>

assets/css/bpd.css

+47
Original file line numberDiff line numberDiff line change
@@ -517,3 +517,50 @@ ul.speaking-list {
517517
max-width: 60%;
518518
}
519519
}
520+
header {
521+
padding: 40px 20px;
522+
margin-bottom: 20px;
523+
/* background-color: black; */
524+
}
525+
.slider-container {
526+
min-height: 300px;
527+
display: flex;
528+
justify-content: center;
529+
align-items: center;
530+
/* background-image: url("/assets/images/hero-bpd-background.jpg"); */
531+
background-color: #222;
532+
padding: 40px;
533+
border-radius: 10px;
534+
margin: 0 auto;
535+
width: 85%;
536+
/* max-width: 1000px; */
537+
}
538+
.email-circle {
539+
width: 200px;
540+
height: 200px;
541+
background-color: #fff;
542+
border-radius: 50%;
543+
display: flex;
544+
justify-content: center;
545+
align-items: center;
546+
margin: 0 auto 15px;
547+
overflow: hidden;
548+
}
549+
.email-circle img {
550+
width: 100%;
551+
height: 100%;
552+
object-fit: cover;
553+
}
554+
.carousel-item {
555+
text-align: center;
556+
}
557+
.post-title {
558+
font-size: 25px;
559+
font-weight: bold;
560+
color: white;
561+
margin-bottom: 10px;
562+
}
563+
.post-summary {
564+
font-size: 15px;
565+
color: #f1f1f1;
566+
}

tests/test.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def page_url(xprocess, url_port):
1212
url, port = url_port
1313

1414
class Starter(ProcessStarter):
15-
timeout = 4
15+
timeout = 20
1616
# Start the process
1717
args = [
1818
"bundle",
@@ -99,3 +99,16 @@ def test_mailto_bpdevs(page_url: tuple[Page, str]) -> None:
9999
page.goto(live_server_url)
100100
mailto = page.get_by_role("link", name="email")
101101
expect(mailto).to_have_attribute("href", "mailto:[email protected]")
102+
103+
104+
def test_carousel_displayed(page_url: tuple[Page, str]) -> None:
105+
page, live_server_url = page_url
106+
page.goto(live_server_url)
107+
108+
carousel = page.locator(".carousel")
109+
expect(carousel).to_be_visible()
110+
111+
next_button = page.locator(".carousel-control-next")
112+
prev_button = page.locator(".carousel-control-prev")
113+
expect(next_button).to_be_visible()
114+
expect(prev_button).to_be_visible()

0 commit comments

Comments
 (0)