Skip to content

Commit f2d968e

Browse files
committed
Refactoring - first part
1 parent e96e698 commit f2d968e

File tree

3 files changed

+95
-91
lines changed

3 files changed

+95
-91
lines changed

docs/ibexa_products/editions.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,13 @@ Compare all features available in [[= product_name_headless =]], [[= product_nam
5353
| [Cart](cart.md) | | | ✔ |
5454
| [Checkout](checkout.md) | | | ✔ |
5555
| [Storefront](storefront.md) | | | ✔ |
56-
| [Transactional emails](transactional_emails.md) | | | ✔ |
56+
| [Transactional emails](transactional_emails.md) | | | ✔ |
57+
58+
## LTS Updates
59+
60+
Compare all features available in [[= product_name_headless =]], [[= product_name_exp =]], and [[= product_name_com =]] to help you choose the right products for your needs:
61+
62+
| Feature | [[= product_name_headless =]] | [[= product_name_exp =]] | [[= product_name_com =]] |
63+
|-----------------|-----------------|-----------------|-----------------|
64+
| [AI Actions](ai_actions_guide.md) | ✔ | ✔ | ✔ |
65+
| [Date and time attribute type](user_management_guide.md) | ✔ | ✔ | ✔ |

docs/release_notes/ibexa_dxp_v4.6.md

Lines changed: 14 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -4,100 +4,24 @@ description: Ibexa DXP v4.6 brings improvements to Commerce, PIM and Personaliza
44

55
<!-- vale VariablesVersion = NO -->
66

7-
<div class="release-notes-header">
8-
<h1>Ibexa DXP v4.6 LTS</h1>
9-
<div class="release-notes-filters">
10-
<div class="release-notes-filters__visible-items">
11-
<div
12-
class="release-notes-filters__visible-item release-notes-filters__visible-item--hidden"
13-
data-filter="filter-headless"
14-
>
15-
Headless
16-
<button type="button" class="release-notes-filters__visible-item-remove"></button>
17-
</div>
18-
<div
19-
class="release-notes-filters__visible-item release-notes-filters__visible-item--hidden"
20-
data-filter="filter-experience"
21-
>
22-
Experience
23-
<button type="button" class="release-notes-filters__visible-item-remove"></button>
24-
</div>
25-
<div
26-
class="release-notes-filters__visible-item release-notes-filters__visible-item--hidden"
27-
data-filter="filter-commerce"
28-
>
29-
Commerce
30-
<button type="button" class="release-notes-filters__visible-item-remove"></button>
31-
</div>
32-
<div
33-
class="release-notes-filters__visible-item release-notes-filters__visible-item--hidden"
34-
data-filter="filter-lts-update"
35-
>
36-
LTS Update
37-
<button type="button" class="release-notes-filters__visible-item-remove"></button>
38-
</div>
39-
<div
40-
class="release-notes-filters__visible-item release-notes-filters__visible-item--hidden"
41-
data-filter="filter-new-feature"
42-
>
43-
New feature
44-
<button type="button" class="release-notes-filters__visible-item-remove"></button>
45-
</div>
46-
</div>
47-
<div class="release-notes-filters__widget">
48-
<button type="button" class="release-notes-filters__btn">
49-
<span class="release-notes-filters__btn-icon">
50-
<svg width="16" height="16"><use xlink:href="../../images/icons.svg#filters" /></svg>
51-
</span>
52-
Filters
53-
</button>
54-
<div class="release-notes-filters__items">
55-
<div class="release-notes-filters__item">
56-
<input type="checkbox" id="filter-headless" />
57-
<label for="filter-headless">Headless</label>
58-
</div>
59-
<div class="release-notes-filters__item">
60-
<input type="checkbox" id="filter-experience" />
61-
<label for="filter-experience">Experience</label>
62-
</div>
63-
<div class="release-notes-filters__item">
64-
<input type="checkbox" id="filter-commerce" />
65-
<label for="filter-commerce">Commerce</label>
66-
</div>
67-
<div class="release-notes-filters__item">
68-
<input type="checkbox" id="filter-lts-update" />
69-
<label for="filter-lts-update">LTS Update</label>
70-
</div>
71-
<div class="release-notes-filters__item">
72-
<input type="checkbox" id="filter-new-feature" />
73-
<label for="filter-new-feature">New feature</label>
74-
</div>
75-
</div>
76-
</div>
77-
</div>
78-
</div>
7+
[[= release_notes_filters('Ibexa DXP v4.6 LTS', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]]
798

809
<div class="release-notes" markdown="1">
8110

82-
<div class="release-note" markdown="1">
8311
[[% set version = 'v4.6.16' %]]
84-
## [[= product_name =]] [[= version =]]
85-
<div class="release-note__tags">
86-
<div class="release-note__tag release-note__tag--headless" data-filter="headless">Headless</div>
87-
<div class="release-note__tag release-note__tag--experience" data-filter="experience">Experience</div>
88-
<div class="release-note__tag release-note__tag--commerce" data-filter="commerce">Commerce</div>
89-
</div>
90-
<div class="release-note__date">2025-01-16</div>
12+
[[= release_note_entry_begin("Ibexa DXP " + version, '2025-01-16', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]]
9113

14+
### This is normal Markdown text.
9215
[[% include 'snippets/release_46.md' %]]
93-
</div>
16+
17+
[[= release_note_entry_end() =]]
9418

9519
<div class="release-note" markdown="1">
9620
[[% set version = 'v4.6.15' %]]
9721
## [[= product_name =]] [[= version =]]
9822
<div class="release-note__tags">
99-
<div class="release-note__tag release-note__tag--lts-update" data-filter="lts-update">LTS Update</div>
100-
<div class="release-note__tag release-note__tag--new-feature" data-filter="new-feature">New feature</div>
23+
<div class="release-note__tag release-note__tag--lts-update" data-filter="lts-update">LTS Update</div>
24+
<div class="release-note__tag release-note__tag--new-feature" data-filter="new-feature">New feature</div>
10125
</div>
10226
<div class="release-note__date">2024-12-13</div>
10327

@@ -108,8 +32,8 @@ description: Ibexa DXP v4.6 brings improvements to Commerce, PIM and Personaliza
10832
[[% set version = 'v4.6.14' %]]
10933
## [[= product_name =]] [[= version =]]
11034
<div class="release-note__tags">
111-
<div class="release-note__tag release-note__tag--experience" data-filter="experience">Experience</div>
112-
<div class="release-note__tag release-note__tag--commerce" data-filter="commerce">Commerce</div>
35+
<div class="release-note__tag release-note__tag--experience" data-filter="experience">Experience</div>
36+
<div class="release-note__tag release-note__tag--commerce" data-filter="commerce">Commerce</div>
11337
</div>
11438
<div class="release-note__date">2024-11-28</div>
11539

@@ -120,8 +44,8 @@ description: Ibexa DXP v4.6 brings improvements to Commerce, PIM and Personaliza
12044
[[% set version = 'v4.6.13' %]]
12145
## [[= product_name =]] [[= version =]]
12246
<div class="release-note__tags">
123-
<div class="release-note__tag release-note__tag--lts-update" data-filter="lts-update">LTS Update</div>
124-
<div class="release-note__tag release-note__tag--new-feature" data-filter="new-feature">New feature</div>
47+
<div class="release-note__tag release-note__tag--lts-update" data-filter="lts-update">LTS Update</div>
48+
<div class="release-note__tag release-note__tag--new-feature" data-filter="new-feature">New feature</div>
12549
</div>
12650
<div class="release-note__date">2024-10-22</div>
12751

@@ -131,8 +55,8 @@ description: Ibexa DXP v4.6 brings improvements to Commerce, PIM and Personaliza
13155
<div class="release-note" markdown="1">
13256
## AI Actions
13357
<div class="release-note__tags">
134-
<div class="release-note__tag release-note__tag--lts-update" data-filter="lts-update">LTS Update</div>
135-
<div class="release-note__tag release-note__tag--new-feature" data-filter="new-feature">New feature</div>
58+
<div class="release-note__tag release-note__tag--lts-update" data-filter="lts-update">LTS Update</div>
59+
<div class="release-note__tag release-note__tag--new-feature" data-filter="new-feature">New feature</div>
13660
</div>
13761
<div class="release-note__date">2024-08-04</div>
13862

@@ -889,4 +813,4 @@ The following view matchers have been introduced in [[= product_name =]] v4.6.0:
889813
|---------------|------------------|---------------|
890814
| [[[= product_name_headless =]] v4.6](https://github.com/ibexa/headless/releases/tag/v4.6.0) | [[[= product_name_exp =]] v4.6](https://github.com/ibexa/experience/releases/tag/v4.6.0) | [[[= product_name_com =]] v4.6](https://github.com/ibexa/commerce/releases/tag/v4.6.0) |
891815

892-
</div>
816+
</div>

main.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,74 @@ def cards(pages, columns=1, style="cards", force_version=False):
118118
@env.macro
119119
def version_to_anchor(version : str = '') -> str:
120120
return version.replace('.', '')
121+
122+
@env.macro
123+
def release_notes_filters(header : str, categories : list[str]) -> str:
124+
filters = "".join(
125+
["""
126+
<div
127+
class="release-notes-filters__visible-item release-notes-filters__visible-item--hidden"
128+
data-filter="filter-{category_slug}"
129+
>
130+
{category}
131+
<button type="button" class="release-notes-filters__visible-item-remove"></button>
132+
</div>
133+
""".format(category_slug=slugify(category), category=category) for category in categories])
134+
135+
categories_dropdown = "".join(
136+
["""
137+
<div class="release-notes-filters__item">
138+
<input type="checkbox" id="filter-{category_slug}" />
139+
<label for="filter-{category_slug}">{category}</label>
140+
</div>
141+
""".format(category_slug=slugify(category), category=category) for category in categories]
142+
)
143+
144+
return """
145+
<div class="release-notes-header">
146+
<h1>{header}</h1>
147+
<div class="release-notes-filters">
148+
<div class="release-notes-filters__visible-items">
149+
{visible_filters}
150+
</div>
151+
<div class="release-notes-filters__widget">
152+
<button type="button" class="release-notes-filters__btn">
153+
<span class="release-notes-filters__btn-icon">
154+
<svg width="16" height="16"><use xlink:href="../../images/icons.svg#filters" /></svg>
155+
</span>
156+
Filters
157+
</button>
158+
<div class="release-notes-filters__items">
159+
{categories_dropdown}
160+
</div>
161+
</div>
162+
</div>
163+
</div>
164+
""".format(header=header, visible_filters=filters, categories_dropdown=categories_dropdown)
165+
166+
@env.macro
167+
def release_note_entry_begin(header : str, date: str, categories : list[str]) -> str:
168+
category_badges = "".join(
169+
[
170+
"""
171+
<div class="release-note__tag release-note__tag--{category_slug}" data-filter="{category_slug}">{category}</div>
172+
""".format(category_slug=slugify(category), category=category)
173+
for category in categories
174+
]
175+
)
176+
177+
return """
178+
<div class="release-note" markdown="1">
179+
## {header}
180+
<div class="release-note__tags">
181+
{category_badges}
182+
</div>
183+
<div class="release-note__date">{date}</div>
184+
""".format(header=header, date=date, category_badges=category_badges)
185+
186+
@env.macro
187+
def release_note_entry_end() -> str:
188+
return "</div>"
189+
190+
def slugify(text: str) -> str:
191+
return text.lower().replace(' ', '-')

0 commit comments

Comments
 (0)