Skip to content

Commit 33de277

Browse files
authored
Merge pull request #663 from redis/DOC-4272
DOC-4272 Add support for versioned products
2 parents 99053d0 + 7a62b8d commit 33de277

File tree

6 files changed

+222
-0
lines changed

6 files changed

+222
-0
lines changed

assets/css/index.css

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -969,4 +969,103 @@ code {
969969
/* no-click turns off border and click event on small icons */
970970
a[href*="#no-click"], img[src*="#no-click"] {
971971
@apply border-none cursor-default pointer-events-none no-underline;
972+
}
973+
974+
/* Version selector in side menu */
975+
.menu__version-selector {
976+
float: right;
977+
left: 18px;
978+
padding: 0 22px 0;
979+
position: relative;
980+
top: -28px;
981+
z-index: 1;
982+
border: 1px solid #dfdfdf;
983+
}
984+
985+
.menu__version-selector button {
986+
background: transparent;
987+
border: none;
988+
font-size: 13px;
989+
outline: none;
990+
}
991+
992+
.menu__version-selector button span.menu__version-selector__toggler {
993+
display: none;
994+
font-size: 8px;
995+
transform: translateY(-1px) translateX(2px);
996+
}
997+
998+
.menu__version-selector span.menu__version-selector__toggler.opener {
999+
display: inline-block;
1000+
}
1001+
1002+
.menu__version-selector span.menu__version-selector__toggler.closer {
1003+
display: none;
1004+
}
1005+
1006+
.menu__version-selector .menu__version-selector__list {
1007+
background: #f7f7f7;
1008+
border: 1px solid #dfdfdf;
1009+
border-top: none;
1010+
display: none;
1011+
font-size: 13px;
1012+
left: -1px;
1013+
position: absolute;
1014+
width: calc(100% + 2px);
1015+
z-index: 1;
1016+
}
1017+
1018+
.menu__version-selector .menu__version-selector__list a {
1019+
color: #868484;
1020+
display: block;
1021+
padding-left: 10px;
1022+
width: 100%;
1023+
}
1024+
1025+
.menu__version-selector .menu__version-selector__list a:hover {
1026+
color: #000;
1027+
}
1028+
1029+
.menu__version-selector .menu__version-selector__list a.selected-version {
1030+
display: none;
1031+
}
1032+
1033+
.menu__version-selector.open {
1034+
border: 1px solid #dfdfdf;
1035+
}
1036+
1037+
.menu__version-selector.open .menu__version-selector__toggler.opener {
1038+
display: none;
1039+
}
1040+
1041+
.menu__version-selector.open .menu__version-selector__toggler.closer {
1042+
display: inline-block;
1043+
}
1044+
1045+
.menu__version-selector.open .menu__version-selector__list {
1046+
display: block;
1047+
}
1048+
1049+
.menu__version-selector > li .menu-divider {
1050+
border-top: 1px solid #5d6876;
1051+
height: 1px;
1052+
left: 20px;
1053+
margin-left: 0 !important;
1054+
position: absolute;
1055+
top: 10px;
1056+
width: calc(100% - 20px);
1057+
}
1058+
1059+
.menu__version-selector > li > .children {
1060+
display: none;
1061+
}
1062+
1063+
.menu__version-selector > li.parent > .children {
1064+
display: flex;
1065+
position: relative;
1066+
padding-top: 60px;
1067+
}
1068+
1069+
.dd-item .highlight:hover {
1070+
color: #5961ff;
9721071
}

insert_url_frontmatter.bash

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
dir="$1"
3+
pages="$(find $dir -name "*.md")"
4+
5+
for page in $pages; do
6+
if [[ "$page" =~ \/_index.md$ ]]; then
7+
url=$(sed "s/_index.md$/'/; s/^content/'/"<<< $page)
8+
else
9+
url=$(sed "s/.md$/\/'/; s/^content/'/"<<< $page)
10+
fi
11+
# skip if url property is already present
12+
if ! grep -q "$url" $page; then
13+
awk -v url="$url" '$1 == "---" {delim++; if (delim==2){printf "%s\n", "url: "url}} {print}' $page > tmp.md
14+
mv tmp.md $page
15+
fi
16+
done

layouts/operate/list.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,6 @@ <h1>
5454
</section>
5555
</div>
5656
{{ partial "docs-toc.html" . }}
57+
{{ partial "scripts.html" . }}
5758
</main>
5859
{{ end }}

layouts/operate/single.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,6 @@ <h1>
4040
</section>
4141
</div>
4242
{{ partial "docs-toc.html" . }}
43+
{{ partial "scripts.html" . }}
4344
</main>
4445
{{ end }}

layouts/partials/docs-nav.html

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,31 @@
1717
{{ end -}}
1818
<span>{{.LinkTitle}}</span>
1919
</a>
20+
{{if (eq (.Params.linkTitle) "Redis for Kubernetes")}}
21+
<div id="versionSelectorKubernetes" class="menu__version-selector version-selector-control" onclick="_openVersionSelector('Kubernetes')" style="display: none;">
22+
<button class="menu__version-selector-btn version-selector-control">
23+
<span id="versionSelectorKubernetesValue" class="version-selector-control">latest</span>
24+
<span class="menu__version-selector__toggler opener version-selector-control">&#x25BC;</span>
25+
<span class="menu__version-selector__toggler closer version-selector-control">&#x25B2;</span>
26+
</button>
27+
<div id="versionDropdownKubernetes" class="menu__version-selector__list version-selector-control">
28+
<a href="https://redis.io/docs/latest/operate/kubernetes/" id="kubernetes-version-select-latest" onclick="_setSelectedVersion('kubernetes', 'latest')">latest</a>
29+
</div>
30+
</div>
31+
{{else if (eq (.Params.linkTitle) "Redis Software")}}
32+
<div id="versionSelectorRs" class="menu__version-selector version-selector-control" onclick="_openVersionSelector('Rs')" style="display: none;">
33+
<button class="menu__version-selector-btn version-selector-control">
34+
<span id="versionSelectorRsValue" class="version-selector-control">latest</span>
35+
<span class="menu__version-selector__toggler opener version-selector-control">&#x25BC;</span>
36+
<span class="menu__version-selector__toggler closer version-selector-control">&#x25B2;</span>
37+
</button>
38+
<div id="versionDropdownRs" class="menu__version-selector__list version-selector-control">
39+
<a href="https://redis.io/docs/latest/operate/rs/" id="rs-version-select-latest" onclick="_setSelectedVersion('rs', 'latest')">latest</a>
40+
</div>
41+
</div>
2042
</li>
43+
44+
{{end}}
2145
{{ if and (gt (len $childPages) 0) (or $isActive $isActivePath)}}
2246
<ul class="child-list">
2347
{{ template "li" (dict "page" $page "pages" $childPages) }}

layouts/partials/scripts.html

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<!-- Code for version selectors -->
2+
3+
<script>
4+
window.onload = function(){
5+
var currentUrl = window.location.href
6+
const regex_kubernetes = new RegExp('/docs/latest/operate/kubernetes/.*')
7+
const regex_rs = new RegExp('/docs/latest/operate/rs/.*')
8+
9+
if (regex_kubernetes.test(currentUrl)){
10+
// unhide kubernetes version selector
11+
document.getElementById( 'versionSelectorKubernetes' ).style.display = '';
12+
}
13+
else if (regex_rs.test(currentUrl)) {
14+
// unhide rs version selector
15+
document.getElementById( 'versionSelectorRs' ).style.display = '';
16+
}
17+
}
18+
19+
function _setSelectedVersion(product, ver) {
20+
if (ver) {
21+
var i = document.getElementById(product + '-version-select-' + ver);
22+
if (i) {
23+
i.classList.toggle('selected-version');
24+
}
25+
}
26+
}
27+
28+
function _getVersion(product) {
29+
return document.getElementById("versionSelector" + product + "Value").innerText
30+
}
31+
32+
function _openVersionSelector(product) {
33+
var productLowercase = product.toLowerCase()
34+
35+
document.getElementById("versionSelector" + product).classList.toggle('open');
36+
37+
// get currently selected version
38+
var currentVersion = _getVersion(product)
39+
40+
if (currentVersion != "latest") {
41+
currentVersion = currentVersion.substring(1)
42+
}
43+
44+
// get current url
45+
var currentUrl = window.location.href
46+
47+
// get version dropdown children
48+
var versionsDropdown = document.getElementById("versionDropdown" + product).children
49+
var versionsDropdownLength = versionsDropdown.length
50+
51+
const regex = new RegExp(String.raw`^.+\/operate\/${productLowercase}`,"g");
52+
const versionRegex = /^(\/\d+\.\d+(?:\.\d+)?(?:\-\d+)?)?/g;
53+
54+
// for each version in dropdown, edit its href link
55+
for (var i= 0; i < versionsDropdownLength; i ++) {
56+
if (versionsDropdown[i].innerText == "latest") {
57+
url_start = versionsDropdown[i].href.match(regex)
58+
url_end = currentUrl.replace(regex,"").replace(versionRegex,"")
59+
versionsDropdown[i].href = url_start + url_end
60+
}
61+
else {
62+
var versionDropdown = versionsDropdown[i].innerText.substring(1)
63+
url_start = versionsDropdown[i].href.match(regex)
64+
url_end = currentUrl.replace(regex,"").replace(versionRegex,("/" + versionDropdown))
65+
versionsDropdown[i].href = url_start + url_end
66+
}
67+
}
68+
}
69+
70+
window.onclick = function (e) {
71+
if (!e.target.matches('.version-selector-control')) {
72+
var d = document.getElementsByClassName('menu__version-selector');
73+
var i;
74+
for (i = 0; i < d.length; i++) {
75+
if (d[i].classList.contains('open')) {
76+
d[i].classList.remove('open');
77+
}
78+
}
79+
}
80+
}
81+
</script>

0 commit comments

Comments
 (0)