Skip to content

Commit e1bfc83

Browse files
committed
Improvements on the article wiki page
1 parent 966381e commit e1bfc83

File tree

8 files changed

+80
-52
lines changed

8 files changed

+80
-52
lines changed

src/main/java/de/holarse/backend/view/ArticleView.java

+18
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import de.holarse.backend.db.ArticleRevision;
44
import de.holarse.backend.db.Attachment;
5+
import org.apache.commons.lang3.StringUtils;
6+
57
import java.time.LocalDateTime;
68
import java.util.ArrayList;
79
import java.util.List;
@@ -18,6 +20,8 @@ public class ArticleView {
1820
private String title5;
1921
private String title6;
2022
private String title7;
23+
24+
private List<String> alternativeTitles = new ArrayList<>();
2125

2226
private String content;
2327
private LocalDateTime created;
@@ -44,6 +48,13 @@ public static ArticleView of(final ArticleRevision ar) {
4448
av.setCreated(ar.getCreated().toLocalDateTime());
4549
av.setUpdated(ar.getUpdated().toLocalDateTime());
4650

51+
if (StringUtils.isNotBlank(ar.getTitle2())) { av.getAlternativeTitles().add(ar.getTitle2()); }
52+
if (StringUtils.isNotBlank(ar.getTitle3())) { av.getAlternativeTitles().add(ar.getTitle3()); }
53+
if (StringUtils.isNotBlank(ar.getTitle4())) { av.getAlternativeTitles().add(ar.getTitle4()); }
54+
if (StringUtils.isNotBlank(ar.getTitle5())) { av.getAlternativeTitles().add(ar.getTitle5()); }
55+
if (StringUtils.isNotBlank(ar.getTitle6())) { av.getAlternativeTitles().add(ar.getTitle6()); }
56+
if (StringUtils.isNotBlank(ar.getTitle7())) { av.getAlternativeTitles().add(ar.getTitle7()); }
57+
4758
return av;
4859
}
4960

@@ -167,4 +178,11 @@ public void setWebsiteLinks(List<AttachmentView> websiteLinks) {
167178
this.websiteLinks = websiteLinks;
168179
}
169180

181+
public List<String> getAlternativeTitles() {
182+
return alternativeTitles;
183+
}
184+
185+
public void setAlternativeTitles(List<String> alternativeTitles) {
186+
this.alternativeTitles = alternativeTitles;
187+
}
170188
}

src/main/java/de/holarse/backend/view/TagView.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ public class TagView {
66

77
private String name;
88
private String slug;
9+
private int useCount;
910

1011
public static TagView of(final Tag tag) {
1112
final TagView view = new TagView();
1213
view.setName(tag.getName());
1314
view.setSlug(tag.getSlug());
14-
15+
view.setUseCount(tag.getUseCount());
16+
1517
return view;
1618
}
1719

@@ -30,6 +32,12 @@ public String getSlug() {
3032
public void setSlug(String slug) {
3133
this.slug = slug;
3234
}
33-
34-
35+
36+
public int getUseCount() {
37+
return useCount;
38+
}
39+
40+
public void setUseCount(int useCount) {
41+
this.useCount = useCount;
42+
}
3543
}

src/main/java/de/holarse/web/controller/WikiController.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
package de.holarse.web.controller;
22

3-
import de.holarse.backend.db.Article;
4-
import de.holarse.backend.db.ArticleRevision;
5-
import de.holarse.backend.db.Attachment;
6-
import de.holarse.backend.db.NodeSlug;
7-
import de.holarse.backend.db.NodeStatus;
8-
import de.holarse.backend.db.Tag;
3+
import de.holarse.backend.db.*;
94
import de.holarse.backend.db.repositories.*;
105
import de.holarse.backend.types.AttachmentDataType;
116
import de.holarse.backend.types.NodeType;
@@ -112,6 +107,7 @@ public ModelAndView show(@PathVariable("slug") final String slug, final ModelAnd
112107
final Article article = articleRepository.findBySlug(slug).orElseThrow(EntityNotFoundException::new);
113108
final ArticleRevision articleRevision = article.getArticleRevision();
114109
final Set<Tag> tags = article.getTags();
110+
final List<TagGroup> relevantTagGroups = tags.stream().map(t -> t.getTagGroup()).toList();
115111
//final NodeSlug mainSlug = nodeSlugRepository.findMainSlug(article.getNodeId()).orElseThrow(EntityNotFoundException::new);
116112

117113
// TODO
@@ -134,7 +130,6 @@ public ModelAndView show(@PathVariable("slug") final String slug, final ModelAnd
134130
// View zusammenstellen
135131
final ArticleView view = ArticleView.of(articleRevision);
136132
view.setNodeId(article.getNodeId());
137-
view.setTags(tags.stream().map(t -> t.getName()).collect(Collectors.joining(", ")));
138133
view.setTagList(tags.stream().map(TagView::of).toList()); // TODO Sort by weight
139134
view.setContent(renderer.render(view.getContent(), null));
140135
//view.setSlug(mainSlug.getName());

src/main/webapp/WEB-INF/templates/sites/search/taggroups.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ <h5 class="mb-0">
1818
<div id="accordion-11-body-01" class="collapse show" role="tabpanel" aria-labelledby="accordion-11-heading-01">
1919
<div class="u-accordion__body g-color-gray-dark-v5">
2020
<span th:text="${tagGroup.description}"></span>
21-
<div th:replace="~{sites/search/tags :: taglist(tags=${tagGroup.tags})}"></div>
21+
<div th:replace="~{sites/shared/tags/list :: taglist(tags=${tagGroup.tags})}"></div>
2222
</div>
2323
</div>
2424
</div>

src/main/webapp/WEB-INF/templates/sites/search/tags.html

-22
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<div th:fragment="links(links)">
2-
<h2>Links</h2>
3-
<ul th:each="link : ${links}">
4-
<li><a href="" th:href="@{${link.data}}" th:text="${link.description}?: ${link.data}"></a></li>
5-
</ul>
2+
<div class="list-group" th:each="link : ${links}">
3+
<a class="list-group-item list-group-item-action" href="" th:href="@{${link.data}}" th:text="${link.description}?: ${link.data}"></a>
4+
</div>
65
</div>
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
1-
<div th:fragment="taglist(tags)">
2-
<ul th:each="tag : ${tags}">
3-
<li><a href="" th:href="@{/spielefinder/?(t=${tag.slug})}" th:text="${tag.name}"></a></li>
1+
<div th:fragment="tagcloud(tags)">
2+
<ul class="list-inline g-mb-40">
3+
<li class="list-inline-item my-2" th:each="tag : ${tags}">
4+
<a class="u-tags-v1 g-color-main g-brd-around g-brd-gray-light-v3 g-bg-gray-dark-v2--hover g-brd-gray-dark-v2--hover g-color-white--hover rounded g-py-4 g-px-10"
5+
href="" th:href="@{/spielefinder(t=${t},q=${q},a=${tag.slug},sort=${sort})}">
6+
<span th:text="${tag.name}"></span>
7+
<span class="d-inline-block g-font-size-12 g-min-width-40 g-brd-around g-color-gray-dark-v5 g-brd-gray-light-v3 text-center rounded g-px-10 g-py-3" th:text="${tag.useCount}">0</span>
8+
</a>
9+
</li>
410
</ul>
11+
</div>
12+
13+
<div th:fragment="taglist(tags)">
14+
<ul class="list-unstyled g-mb-40">
15+
<li class="my-3" th:each="tag : ${tags}">
16+
<a class="d-flex justify-content-between u-link-v5 g-color-gray-dark-v1 g-parent" href="#" th:href="@{/spielefinder(t=${t},q=${q},a=${tag.slug},sort=${sort})}">
17+
<span th:text="${tag.name}"></span>
18+
<span class="d-inline-block g-font-size-12 g-min-width-40 g-brd-around g-color-gray-dark-v5 g-brd-gray-light-v3 text-center rounded g-px-10 g-py-3" th:text="${tag.useCount}">0</span>
19+
</a>
20+
</li>
21+
</ul>
522
</div>

src/main/webapp/WEB-INF/templates/sites/wiki/show.html

+25-12
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
<!-- Login -->
22
<div class="row justify-content-center">
3-
<div class="col-sm-8 col-lg-5">
4-
<div class="u-shadow-v21 g-bg-white rounded g-py-40 g-px-30">
3+
<div class="col-sm-10">
4+
<div class="u-shadow-v21 g-bg-white rounded">
55

6-
<ul>
7-
<li class="submenuitem"><a href="#" data-th-href="@{/wiki/{nodeId}/edit(nodeId=${view.nodeId})}">bearbeiten</a></li>
8-
</ul>
9-
10-
<header class="text-center mb-4">
11-
<h2 class="h2 g-color-black g-font-weight-600" data-th-text="${view.title1}"></h2>
6+
<header class="u-heading-v2-1--bottom g-mb-30">
7+
<h2 class="u-heading-v2__title g-mb-10" data-th-text="${view.title1}">Lorem ipsum standard</h2>
8+
<div th:each="altTitle: ${view.alternativeTitles}">
9+
<h4 class="g-font-weight-200" data-th-text="${altTitle}"></h4>
10+
</div>
1211
</header>
12+
<section>
13+
<p data-th-text="${view.content}"></p>
14+
</section>
15+
</div>
16+
</div>
17+
<div class="col-sm-2">
18+
<ul class="list-group list-group-horizontal">
19+
<a href="#" class="list-group-item flex-fill" data-th-href="@{/wiki/{nodeId}/edit(nodeId=${view.nodeId})}">bearbeiten</a>
20+
<a href="#" class="list-group-item flex-fill">Änderungen</a>
21+
<a href="#" class="list-group-item flex-fill">Statistik</a>
22+
</ul>
1323

14-
<ul th:replace="~{sites/shared/tags/list :: taglist(tags=${view.tagList})}"></ul>
24+
<div class="u-heading-v1-2 g-bg-main g-brd-primary g-mb-20">
25+
<h2 class="h3 u-heading-v1__title">Tags</h2>
26+
</div>
27+
<ul th:replace="~{sites/shared/tags/list :: taglist(tags=${view.tagList})}"></ul>
1528

16-
<p data-th-text="${view.content}"></p>
17-
18-
<p th:replace="~{sites/shared/links :: links(links=${view.websiteLinks})}"></p>
29+
<div class="u-heading-v1-2 g-bg-main g-brd-primary g-mb-20">
30+
<h2 class="h3 u-heading-v1__title">Links</h2>
1931
</div>
32+
<p th:replace="~{sites/shared/links :: links(links=${view.websiteLinks})}"></p>
2033
</div>
2134
</div>
2235
<!-- End Login -->

0 commit comments

Comments
 (0)