]> luflow.net public git repositories - flow-web.git/blob - templates/blog_overview.stpl
Initial commit.
[flow-web.git] / templates / blog_overview.stpl
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <meta http-equiv="X-UA-Compatible" content="IE-edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <meta name="keywords" content="luflow Blog, <%= self.overview_keywords %>, page <%= self.overview_current_page %>">
8 <meta name="description" content="<%= self.overview_title %> Page <%= self.overview_current_page %>">
9 <link type="application/atom+xml" rel="alternate" title="luflow.net — Activity Feed" href="/feeds/blog.atom">
10 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
11 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
12 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
13 <link rel="icon" type="image/svg+xml" sizes="any" href="/static/img/icon.svg" />
14 <link rel="manifest" href="/site.webmanifest">
15 <link rel="stylesheet" href="/static/css/common.css">
16 <link rel="stylesheet" href="/static/css/item-preview.css">
17 <link rel="stylesheet" href="/static/css/buttons.css">
18 <link rel="stylesheet" href="/static/css/breadcrumbs.css">
19 <link rel="stylesheet" href="/static/css/header.css">
20 <link rel="stylesheet" href="/static/css/footer.css">
21 <link rel="stylesheet" href="/static/css/page.css">
22 <link rel="stylesheet" href="/static/css/sidebar.css">
23 <title><%= self.overview_title %> Page <%= self.overview_current_page %> | luflow.net</title>
24 </head>
25 <body>
26 <div id="content">
27
28 <% include!("./partials/header.stpl"); %>
29
30 <% include!("./partials/blog_overview_breadcrumbs.stpl"); %>
31
32 <main>
33 <section class="page-post centered-text">
34 <h2><%= self.overview_title %><span class="page-number-indicator"> (Page <%= self.overview_current_page %> of <%= self.overview_num_pages %>)</span></h2>
35 <div class="sheet">
36 <%
37 if self.overview_type == 1 {
38 if let Some(indices) = self.topic_blog_indices.get(&self.overview_topic) {
39 for i in self.overview_offset..self.overview_offset + self.overview_num_posts {
40 let index = match indices.get(i) {
41 Some(value) => value,
42 _ => panic!("Did not find blog post for index: {}", i),
43 };
44 let post = match self.blog_posts.get(*index) {
45 Some(value) => value,
46 _ => panic!("Did not find blog post for index: {}", i),
47 };
48 %>
49 <a class="item-preview" href="/<%= post.base_dir %>/<%= post.url %>/">
50 <h3 lang="en"><%= post.title %></h3>
51 <p class="item-date"><%= post.published.to_string() %></p>
52 <p class="item-summary" lang="en"><%= post.snippet %></p>
53 </a>
54 <%
55 }
56 }
57 } else if self.overview_type == 2 {
58 if let Some(indices) = self.year_blog_indices.get(&self.overview_year) {
59 for i in self.overview_offset..self.overview_offset + self.overview_num_posts {
60 let index = match indices.get(i) {
61 Some(value) => value,
62 _ => panic!("Did not find blog post for index: {}", i),
63 };
64 let post = match self.blog_posts.get(*index) {
65 Some(value) => value,
66 _ => panic!("Did not find blog post for index: {}", i),
67 };
68 %>
69 <a class="item-preview" href="/<%= post.base_dir %>/<%= post.url %>/">
70 <h3 lang="en"><%= post.title %></h3>
71 <p class="item-date"><%= post.published.to_string() %></p>
72 <p class="item-summary" lang="en"><%= post.snippet %></p>
73 </a>
74 <%
75 }
76 }
77 } else if self.overview_type == 0 {
78 for i in self.overview_offset..self.overview_offset + self.overview_num_posts {
79 let post = match self.blog_posts.get(i) {
80 Some(value) => value,
81 _ => panic!("Did not find blog post for index: {}", i),
82 };
83 %>
84 <a class="item-preview" href="/<%= post.base_dir %>/<%= post.url %>/">
85 <h3 lang="en"><%= post.title %></h3>
86 <p class="item-date"><%= post.published.to_string() %></p>
87 <p class="item-summary" lang="en"><%= post.snippet %></p>
88 </a>
89 <%
90 }
91 } else {
92 panic!("overview_type: {} is not implemented!", self.overview_type);
93 }
94 %>
95
96 <nav class="page-selector">
97 <h3 class="a11y-offset">Page <%= self.overview_current_page %> of <%= self.overview_num_pages %>. Go to another page: </h3>
98 <%
99 for i in 1..self.overview_num_pages + 1 {
100 let mut page_url = format!("/{}/page/{}/", self.base_dir, i);
101 if self.overview_type == 1 {
102 page_url = format!("/{}/topic/{}/page/{}/", self.base_dir, self.overview_topic_sanitized, i);
103 } else if self.overview_type == 2 {
104 page_url = format!("/{}/year/{}/page/{}/", self.base_dir, self.overview_year, i);
105 }
106
107 let mut button_class = "button-little";
108 if i == self.overview_current_page {
109 button_class = "button-little button-little-active";
110 }
111 %>
112 <a class="<%= button_class %>" href="<%= page_url %>"><%= i %></a>
113 <% } %>
114 </nav>
115 </div>
116
117 <section class="side-bar">
118 <h3 class="a11y-offset">Blog menu: </h3>
119 <ul class="bar-list">
120 <h4 class="bar-title bar-title-top">Get blog updates</h4>
121 <li class="bar-item">
122 <a class="bar-link feed-link" href="/feeds/blog.atom">Atom feed</a>
123 </li>
124 </ul>
125
126 <ul class="bar-list">
127 <h4 class="bar-title bar-title-top">Posts by topic</h4>
128 <%
129 for (i, topic) in self.topics.iter().enumerate() {
130 let mut topic_sanitized = String::from("");
131 if let Some(value) = self.topics_sanitized.get(i) {
132 topic_sanitized = String::from(value);
133 }
134
135 let mut num_blog_posts_topic = 0;
136 if let Some(indices) = self.topic_blog_indices.get(topic) {
137 num_blog_posts_topic = indices.len();
138 }
139
140 let topic_url = format!("/{}/topic/{}/", self.base_dir, topic_sanitized);
141 %>
142 <li class="bar-item">
143 <a class="bar-link" href="<%= topic_url %>"><%= topic %> (<%= num_blog_posts_topic %>)</a>
144 </li>
145 <% } %>
146 </ul>
147
148 <ul class="bar-list">
149 <h4 class="bar-title bar-title-top">Posts by year</h4>
150 <%
151 for year in &self.years {
152 let mut num_blog_posts_year = 0;
153 if let Some(indices) = self.year_blog_indices.get(year) {
154 num_blog_posts_year = indices.len();
155 }
156
157 let year_url = format!("/{}/year/{}/", self.base_dir, year);
158 %>
159 <li class="bar-item">
160 <a class="bar-link" href="<%= year_url %>"><%= year %> (<%= num_blog_posts_year %>)</a>
161 </li>
162 <% } %>
163 </ul>
164 </section>
165 </section>
166 </main>
167
168 <% include!("./partials/footer.stpl"); %>
169
170 </div>
171
172 <% include!("./partials/script_core.stpl"); %>
173 <script>
174 // make menu item active visually:
175 let menuItem = document.getElementById("Blog");
176 if (menuItem)
177 {
178 menuItem.classList.add("menu-item-active");
179 }
180 </script>
181
182 </body>
183 </html>
184