tangled
alpha
login
or
join now
ericwood.org
/
photos-site
1
fork
atom
A little app to serve my photography from my personal website
1
fork
atom
overview
issues
pulls
pipelines
show tag list on blog index page
ericwood.org
2 months ago
3b966ca2
4dbd0668
0/0
Waiting for spindle ...
+33
-6
4 changed files
expand all
collapse all
unified
split
src
blog.rs
routes
blog
index.rs
views
blog
index
mod.rs
template.jinja
+11
src/blog.rs
reviewed
···
81
81
self.by_slug.values().cloned().collect()
82
82
}
83
83
84
84
+
pub fn all_tags(&self) -> Vec<(String, usize)> {
85
85
+
let mut tags: Vec<(String, usize)> = self
86
86
+
.by_tag
87
87
+
.iter()
88
88
+
.map(|(k, v)| (k.clone(), v.len()))
89
89
+
.collect();
90
90
+
tags.sort_by(|a, b| b.1.cmp(&a.1));
91
91
+
92
92
+
tags
93
93
+
}
94
94
+
84
95
pub fn get_by_slug(&self, slug: &str) -> Option<Arc<BlogPost>> {
85
96
self.by_slug.get(slug).cloned()
86
97
}
+3
-1
src/routes/blog/index.rs
reviewed
···
20
20
} else {
21
21
state.blog_store.all()
22
22
};
23
23
-
let view = BlogIndex::new(posts);
23
23
+
24
24
+
let tags = state.blog_store.all_tags();
25
25
+
let view = BlogIndex::new(posts, tags, query.tag.clone());
24
26
let html = view.render(&state.reloader)?;
25
27
26
28
Ok(Html(html))
+7
-3
src/views/blog/index/mod.rs
reviewed
···
7
7
8
8
pub struct BlogIndex {
9
9
posts: Vec<Arc<BlogPost>>,
10
10
+
tags: Vec<(String, usize)>,
11
11
+
tag: Option<String>,
10
12
}
11
13
12
14
impl BlogIndex {
13
13
-
pub fn new(posts: Vec<Arc<BlogPost>>) -> Self {
14
14
-
Self { posts }
15
15
+
pub fn new(posts: Vec<Arc<BlogPost>>, tags: Vec<(String, usize)>, tag: Option<String>) -> Self {
16
16
+
Self { posts, tags, tag }
15
17
}
16
18
}
17
19
···
21
23
reloader,
22
24
"views/blog/index",
23
25
context! {
24
24
-
posts => self.posts
26
26
+
posts => self.posts,
27
27
+
tags => self.tags,
28
28
+
tag => self.tag,
25
29
},
26
30
)?;
27
31
+12
-2
src/views/blog/index/template.jinja
reviewed
···
3
3
{% block title %}Blog{% endblock %}
4
4
5
5
{% block body %}
6
6
+
Tags:
7
7
+
<ul>
8
8
+
{% for t in tags %}
9
9
+
{% if t[0] != tag %}
10
10
+
<li>
11
11
+
<a href="/blog?tag={{ url_escape(t[0]) }}">{{ t[0] }} {{ t[1] }}</a>
12
12
+
</li>
13
13
+
{% endif %}
14
14
+
{% endfor %}
15
15
+
</ul>
6
16
<ul>
7
17
{% for post in posts %}
8
18
<li>
9
19
<a href="/blog/{{ post.slug }}">{{ post.title }}</a>
10
10
-
{% for tag in post.tags %}
11
11
-
<a href="/blog?tag={{ tag }}">{{ tag }}</a>
20
20
+
{% for t in post.tags %}
21
21
+
<a href="/blog?tag={{ url_escape(t) }}">{{ t }}</a>
12
22
{% endfor %}
13
23
</li>
14
24
{% endfor %}