Skip to content

Commit 66ccc41

Browse files
author
Stephan Köninger
committed
chore(theme): update theme to support users / messages
1 parent 2be9b1a commit 66ccc41

34 files changed

+5340
-105
lines changed

_config.yml

+6-7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ root: /
1717
permalink: :title/
1818
permalink_defaults:
1919

20+
archive_generator:
21+
per_page: 10
22+
yearly: true
23+
monthly: false
24+
daily: false
25+
2026
# Directory
2127
source_dir: source
2228
public_dir: public
@@ -37,16 +43,9 @@ render_drafts: false
3743
post_asset_folder: false
3844
relative_link: false
3945
future: true
40-
highlight:
41-
enable: true
42-
line_number: true
43-
auto_detect: false
44-
tab_replace:
4546

4647
# Category & Tag
4748
default_category: uncategorized
48-
category_map:
49-
tag_map:
5049

5150
# Date / Time format
5251
## Hexo uses Moment.js to parse and display date

scaffolds/draft.md

-4
This file was deleted.

scaffolds/page.md

-4
This file was deleted.

scaffolds/post.md

-5
This file was deleted.

scripts/messages/index.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
hexo.extend.generator.register('messages', (locals) => {
2+
const messages = [];
3+
4+
locals.posts.forEach(post => {
5+
if (post.message) {
6+
if (Array.isArray(post.message.send)) {
7+
post.message.send.forEach(item => pushMessageBase64unique(messages, item));
8+
}
9+
if (Array.isArray(post.message.consume)) {
10+
post.message.consume.forEach(item => pushMessageBase64unique(messages, item));
11+
}
12+
}
13+
});
14+
15+
return messages.map(message => {
16+
let messageKey = new Buffer(message, 'base64').toString('ascii');
17+
let servicesSendingMessage = locals.posts.filter(post => post.message && Array.isArray(post.message.send) && post.message.send.includes(messageKey));
18+
let servicesConsumingMessage = locals.posts.filter(post => post.message && Array.isArray(post.message.consume) && post.message.consume.includes(messageKey));
19+
20+
return {
21+
path: `message/${message}/`,
22+
layout: ['message', 'index'],
23+
data: {
24+
title: messageKey,
25+
posts: {
26+
send: servicesSendingMessage,
27+
consume: servicesConsumingMessage
28+
}
29+
}
30+
};
31+
})
32+
33+
function pushMessageBase64unique(messages, item) {
34+
let searchElement = new Buffer(item).toString('base64');
35+
if (!messages.includes(searchElement)) {
36+
messages.push(searchElement)
37+
}
38+
}
39+
});
40+

scripts/users/index.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
hexo.extend.generator.register('users', (locals) => {
2+
const users = locals.posts.map(p => p.contributors)
3+
.reduce((prev, cur) => prev.concat(cur), [])
4+
.filter(user => !!user);
5+
6+
return users.map(user => {
7+
let posts = locals.posts.filter(post => (post.contributors || []).includes(user));
8+
return {
9+
path: `users/${user}/`,
10+
layout: ['user', 'index'],
11+
data: {
12+
title: user,
13+
posts: posts
14+
}
15+
};
16+
});
17+
});
18+

themes/service-docs/_config.yml

-36
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<div class="message has-after-label">
2+
<% if (message.send && message.send.length) { %>
3+
<div class="send">
4+
<ul class="list">
5+
<% message.send.forEach(function(send) { %>
6+
<li>
7+
<a href="/message/<%- new Buffer(send).toString('base64') %>">
8+
<span class="icon fa fa-upload"></span>
9+
<%= send %>
10+
</a>
11+
</li>
12+
<% }) %>
13+
</ul>
14+
</div>
15+
<% } %>
16+
<% if (message.consume && message.consume.length) { %>
17+
<div class="consume">
18+
<ul class="list">
19+
<% message.consume.forEach(function(consume) { %>
20+
<li>
21+
<a href="/message/<%- new Buffer(consume).toString('base64') %>">
22+
<span class="icon fa fa-download"></span>
23+
<%= consume %>
24+
</a>
25+
</li>
26+
<% }) %>
27+
</ul>
28+
</div>
29+
<% } %>
30+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<div class="service-summary">
2+
<h4><a href="/<%- service.slug %>/"><%- service.title %></a></h4>
3+
<div class="service-meta">
4+
<div class="row">
5+
<% if (service.languages && service.languages.length) { %>
6+
<ul class="horizontal-list language has-after-label">
7+
<% service.languages.forEach(function(languages) { %>
8+
<li><%= languages %></li>
9+
<% }) %>
10+
</ul>
11+
<% } %>
12+
13+
<% if (service.message) { %>
14+
<%- partial('_partial/service-messages', {message: service.message}) %>
15+
<% } %>
16+
</div>
17+
</div>
18+
</div>

themes/service-docs/layout/layout.ejs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<title>Titel</title>
7-
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
8-
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">
97
<%- css('css/style') %>
8+
<%- css('roboto/css/roboto') %>
9+
<%- css('font-awesome/css/font-awesome') %>
1010
</head>
1111
<body>
1212
<div class="wrapper">
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<article class="message">
2+
<header>
3+
<h1>
4+
Message: <%- page.title %>
5+
</h1>
6+
</header>
7+
<main>
8+
<div class="send">
9+
<h2><span class="fa fa-upload"></span> Sending</h2>
10+
<% page.posts.send.forEach(function(page) { %>
11+
<h4><a href="/<%- page.slug %>/"><%- page.title %></a></h4>
12+
<% }) %>
13+
</div>
14+
<div class="consume">
15+
<h2><span class="fa fa-download"></span> Consume</h2>
16+
<% page.posts.consume.forEach(function(page) { %>
17+
<h4><a href="/<%- page.slug %>/"><%- page.title %></a></h4>
18+
<% }) %>
19+
</div>
20+
</main>
21+
</article>

themes/service-docs/layout/post.ejs

+48-39
Original file line numberDiff line numberDiff line change
@@ -8,48 +8,57 @@
88
<% } %>
99
</h1>
1010
<div class="service-meta">
11-
<% if (page.languages && page.languages.length) { %>
12-
<ul class="horizontal-list language has-after-label">
13-
<% page.languages.forEach(function(languages) { %>
14-
<li><%= languages %></li>
15-
<% }) %>
16-
</ul>
17-
<% } %>
11+
<div class="row">
12+
<% if (page.languages && page.languages.length) { %>
13+
<ul class="horizontal-list language has-after-label">
14+
<% page.languages.forEach(function(languages) { %>
15+
<li><%= languages %></li>
16+
<% }) %>
17+
</ul>
18+
<% } %>
1819

19-
<% if (page.dependsOn && page.dependsOn.length) { %>
20-
<ul class="horizontal-list service has-after-label">
21-
<% page.dependsOn.forEach(function(service) { %>
22-
<li>
23-
<a href="/<%= service %>">
24-
<span class="icon fa fa-sitemap"></span>
25-
<%= service %>
26-
</a>
27-
</li>
28-
<% }) %>
29-
</ul>
30-
<% } %>
20+
<% if (page.uses && page.uses.length) { %>
21+
<ul class="horizontal-list service has-after-label">
22+
<% page.uses.forEach(function(service) { %>
23+
<li>
24+
<a href="/<%= service %>">
25+
<span class="icon fa fa-sitemap"></span>
26+
<%= service %>
27+
</a>
28+
</li>
29+
<% }) %>
30+
</ul>
31+
<% } %>
3132

32-
<% if (page.contributors && page.contributors.length) { %>
33-
<ul class="horizontal-list maintainer has-after-label">
34-
<% page.contributors.forEach(function(contributors) { %>
35-
<li>
36-
<span class="icon fa fa-user"></span>
37-
<%= contributors %>
38-
</li>
39-
<% }) %>
40-
</ul>
41-
<% } %>
33+
<% if (page.contributors && page.contributors.length) { %>
34+
<ul class="horizontal-list maintainer has-after-label">
35+
<% page.contributors.forEach(function(contributor) { %>
36+
<li>
37+
<a href="/users/<%= contributor %>">
38+
<span class="icon fa fa-user"></span>
39+
<%= contributor %>
40+
</a>
41+
</li>
42+
<% }) %>
43+
</ul>
44+
<% } %>
4245

43-
<% if (page.responsible && page.responsible.length) { %>
44-
<ul class="horizontal-list responsible has-after-label">
45-
<% page.responsible.forEach(function(responsible) { %>
46-
<li>
47-
<span class="icon fa fa-user"></span>
48-
<%= responsible %>
49-
</li>
50-
<% }) %>
51-
</ul>
52-
<% } %>
46+
<% if (page.responsible && page.responsible.length) { %>
47+
<ul class="horizontal-list responsible has-after-label">
48+
<% page.responsible.forEach(function(responsible) { %>
49+
<li>
50+
<span class="icon fa fa-user"></span>
51+
<%= responsible %>
52+
</li>
53+
<% }) %>
54+
</ul>
55+
<% } %>
56+
</div>
57+
<dic class="row">
58+
<% if (page.message) { %>
59+
<%- partial('_partial/service-messages', {message: page.message}) %>
60+
<% } %>
61+
</dic>
5362
</div>
5463
</header>
5564
<div class="service-description">

themes/service-docs/layout/user.ejs

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<article class="service">
2+
<header>
3+
<h1>
4+
User contributions: <%- page.title %>
5+
</h1>
6+
</header>
7+
<main>
8+
<% page.posts.forEach(function(page) { %>
9+
<%- partial('_partial/service-summary', {service: page}) %>
10+
<% }) %>
11+
</main>
12+
</article>

themes/service-docs/source/css/_layout.styl

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ navWidth = 200px;
1313
margin: 0 10px;
1414
}
1515

16-
main {
16+
> main {
1717
margin: 10px;
1818
margin-left: navWidth + 45;
1919
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
.message {
2+
main {
3+
display: flex;
4+
5+
h2 {
6+
margin-top: 0;
7+
}
8+
.send {
9+
flex: 1 0 0;
10+
}
11+
.consume {
12+
flex: 1 0 0;
13+
}
14+
}
15+
}

themes/service-docs/source/css/_nav.styl

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ nav {
1111
padding: 0;
1212

1313
a {
14+
overflow: hidden;
15+
text-overflow: ellipsis;
16+
white-space: nowrap;
1417
display: block;
1518
margin: 6px 0;
1619
color: #000;
1720
text-decoration: none;
1821
}
1922
}
20-
2123
}

0 commit comments

Comments
 (0)