Skip to content

Commit 175a027

Browse files
authored
DEV: improved implementation and bug fixes (discourse#3)
1 parent 628a523 commit 175a027

File tree

2 files changed

+70
-41
lines changed

2 files changed

+70
-41
lines changed

common/common.scss

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
@import "common/foundation/variables";
22

3-
.headerLink {
4-
list-style: none;
5-
a {
6-
padding: 6px 10px;
7-
color: $header_primary;
8-
font-size: $font-up-1;
9-
}
10-
}
11-
123
.d-header {
134
&.hide-menus {
145
.headerLink:not(.keep) {
156
display: none;
167
}
178
}
18-
.header-buttons {
19-
display: flex;
20-
align-items: center;
9+
}
10+
11+
.custom-header-links {
12+
display: inline-flex;
13+
align-items: center;
14+
margin: 0;
15+
.headerLink {
16+
list-style: none;
17+
a {
18+
padding: 6px 10px;
19+
color: $header_primary;
20+
font-size: $font-up-1;
21+
}
2122
}
2223
}
24+
2325
.desktop-view .vmo,
2426
.mobile-view .vdo {
2527
display: none !important;

common/header.html

Lines changed: 56 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,65 @@
11
<script type="text/discourse-plugin" version="0.8.20">
2-
let customHeaderLinks = settings.Custom_header_links;
2+
const customHeaderLinks = settings.Custom_header_links;
33

4-
customHeaderLinks.split("|").map(i => {
5-
let seg = $.map(i.split(","), $.trim),
6-
linkText = seg[0],
7-
linkTitle = seg[1],
8-
linkHref = seg[2],
9-
deviceClass = "." + seg[3],
10-
linkTarget = seg[4] === "self" ? "" : "_blank",
11-
keepOnScrollClass = seg[5] === "keep" ? ".keep" : "";
4+
if (!customHeaderLinks.length) return;
5+
6+
const h = require("virtual-dom").h;
7+
const headerLinks = [];
8+
9+
customHeaderLinks.split("|").map(i => {
10+
const seg = $.map(i.split(","), $.trim);
11+
const linkText = seg[0];
12+
const linkTitle = seg[1];
13+
const linkHref = seg[2];
14+
const deviceClass = `.${seg[3]}`;
15+
const linkTarget = seg[4] === "self" ? "" : "_blank";
16+
const keepOnScrollClass = seg[5] === "keep" ? ".keep" : "";
17+
const linkClass = `.${linkText.trim().toLowerCase().replace(/\s/gi, '-')}`;
18+
19+
if (!linkTarget) {
20+
headerLinks.push(
21+
h(
22+
`li.headerLink${deviceClass}${keepOnScrollClass}${linkClass}`,
23+
h(
24+
"a",
25+
{
26+
title: linkTitle,
27+
href: linkHref
28+
},
29+
linkText
30+
)
31+
)
32+
);
33+
} else {
34+
headerLinks.push(
35+
h(
36+
`li.headerLink${deviceClass}${keepOnScrollClass}${linkClass}`,
37+
h(
38+
"a",
39+
{
40+
title: linkTitle,
41+
href: linkHref,
42+
target: linkTarget
43+
},
44+
linkText
45+
)
46+
)
47+
);
48+
}
49+
});
1250

1351
api.decorateWidget("header-buttons:before", helper => {
1452
return helper.h(
15-
"li.headerLink" + deviceClass + keepOnScrollClass,
16-
helper.h(
17-
"a",
18-
{
19-
href: linkHref,
20-
title: linkTitle,
21-
target: linkTarget,
22-
attributes: { "data-auto-route": "true" }
23-
},
24-
linkText
25-
)
53+
"ul.custom-header-links", headerLinks
2654
);
2755
});
28-
});
2956

30-
api.decorateWidget("home-logo:after", helper => {
31-
let titleVisible = helper.attrs.minimized;
32-
if (titleVisible) {
33-
$(".d-header").addClass("hide-menus");
34-
} else {
35-
$(".d-header").removeClass("hide-menus");
36-
}
37-
});
57+
api.decorateWidget("home-logo:after", helper => {
58+
let titleVisible = helper.attrs.minimized;
59+
if (titleVisible) {
60+
$(".d-header").addClass("hide-menus");
61+
} else {
62+
$(".d-header").removeClass("hide-menus");
63+
}
64+
});
3865
</script>

0 commit comments

Comments
 (0)