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>
28 <% include!("./partials/header.stpl"); %>
30 <% include!("./partials/blog_overview_breadcrumbs.stpl"); %>
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>
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) {
42 _ => panic!("Did not find blog post for index: {}", i),
44 let post = match self.blog_posts.get(*index) {
46 _ => panic!("Did not find blog post for index: {}", i),
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>
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) {
62 _ => panic!("Did not find blog post for index: {}", i),
64 let post = match self.blog_posts.get(*index) {
66 _ => panic!("Did not find blog post for index: {}", i),
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>
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) {
81 _ => panic!("Did not find blog post for index: {}", i),
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>
92 panic!("overview_type: {} is not implemented!", self.overview_type);
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>
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);
107 let mut button_class = "button-little";
108 if i == self.overview_current_page {
109 button_class = "button-little button-little-active";
112 <a class="<%= button_class %>" href="<%= page_url %>"><%= i %></a>
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>
126 <ul class="bar-list">
127 <h4 class="bar-title bar-title-top">Posts by topic</h4>
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);
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();
140 let topic_url = format!("/{}/topic/{}/", self.base_dir, topic_sanitized);
142 <li class="bar-item">
143 <a class="bar-link" href="<%= topic_url %>"><%= topic %> (<%= num_blog_posts_topic %>)</a>
148 <ul class="bar-list">
149 <h4 class="bar-title bar-title-top">Posts by year</h4>
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();
157 let year_url = format!("/{}/year/{}/", self.base_dir, year);
159 <li class="bar-item">
160 <a class="bar-link" href="<%= year_url %>"><%= year %> (<%= num_blog_posts_year %>)</a>
168 <% include!("./partials/footer.stpl"); %>
172 <% include!("./partials/script_core.stpl"); %>
174 // make menu item active visually:
175 let menuItem = document.getElementById("Blog");
178 menuItem.classList.add("menu-item-active");