Skip to content

Commit c689333

Browse files
feat: rework the scripts to make it closer to docsy
1 parent 08be904 commit c689333

File tree

5 files changed

+143
-154
lines changed

5 files changed

+143
-154
lines changed

assets/js/k8s-search.js

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
document.querySelector('html').classList.add('search');
2+
3+
document.addEventListener('DOMContentLoaded', function() {
4+
let searchTerm = new URLSearchParams(window.location.search).get('q');
5+
let fetchingElem = document.getElementById('bing-results-container');
6+
7+
if (!searchTerm) {
8+
if (fetchingElem) fetchingElem.style.display = 'none';
9+
}
10+
});
11+
12+
window.renderGoogleSearchResults = () => {
13+
var cx = '013288817511911618469:elfqqbqldzg';
14+
var gcse = document.createElement('script');
15+
gcse.type = 'text/javascript';
16+
gcse.async = true;
17+
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx;
18+
var s = document.getElementsByTagName('script')[0];
19+
s.parentNode.insertBefore(gcse, s);
20+
}
21+
22+
window.renderPageFindSearchResults = () => {
23+
let urlParams = new URLSearchParams(window.location.search);
24+
let searchTerm = urlParams.get("q") || "";
25+
let sidebarSearch = document.querySelector('.td-sidebar__search');
26+
if (sidebarSearch) {
27+
sidebarSearch.remove();
28+
}
29+
document.getElementById('search').style.display = 'block';
30+
pagefind = new PagefindUI({ element: "#search", showImages: false });
31+
if (searchTerm) {
32+
pagefind.triggerSearch(searchTerm);
33+
}
34+
35+
document.querySelector("#search input").addEventListener("input", function() {
36+
var inputValue = this.value;
37+
var queryStringVar = "q";
38+
updateQueryString(queryStringVar, inputValue);
39+
});
40+
}
41+
42+
function updateQueryString(key, value) {
43+
var baseUrl = window.location.href.split("?")[0];
44+
var queryString = window.location.search.slice(1);
45+
var urlParams = new URLSearchParams(queryString);
46+
47+
if (urlParams.has(key)) {
48+
urlParams.set(key, value);
49+
} else {
50+
urlParams.append(key, value);
51+
}
52+
53+
var newUrl = baseUrl + "?" + urlParams.toString();
54+
// Update the browser history (optional)
55+
history.replaceState(null, '', newUrl);
56+
}
57+
58+
// China Verification.
59+
var path = "path=/;"
60+
d = new Date()
61+
d.setTime(d.getTime() + (7 * 24 * 60 * 60 * 1000))
62+
expires = "expires=" + d.toUTCString()
63+
64+
function getCookie(name) {
65+
var value = "; " + document.cookie;
66+
var parts = value.split("; " + name + "=");
67+
if (parts.length == 2) return parts.pop().split(";").shift();
68+
else return "";
69+
}
70+
71+
async function checkBlockedSite(url) {
72+
const controller = new AbortController();
73+
const timeout = setTimeout(() => {
74+
controller.abort();
75+
}, 5000); // Timeout set to 5000ms (5 seconds)
76+
77+
try {
78+
const response = await fetch(url, { method: 'HEAD', mode: 'no-cors', signal: controller.signal });
79+
// If we reach this point, the site is accessible (since mode: 'no-cors' doesn't allow us to check response.ok)
80+
clearTimeout(timeout);
81+
return false;
82+
} catch (error) {
83+
// If an error occurs, it's likely the site is blocked
84+
return true;
85+
}
86+
}
87+
88+
async function loadSearch() {
89+
if (getCookie("can_google") === "") {
90+
const isGoogleBlocked = await checkBlockedSite("https://www.google.com/favicon.ico");
91+
if ( isGoogleBlocked ) {
92+
// Google is blocked.
93+
document.cookie = "can_google=false;" + path + expires
94+
window.renderPageFindSearchResults()
95+
} else {
96+
// Google is not blocked.
97+
document.cookie = "can_google=true;" + path + expires
98+
window.renderGoogleSearchResults()
99+
}
100+
} else if (getCookie("can_google") == "false") {
101+
window.renderPageFindSearchResults()
102+
} else {
103+
window.renderGoogleSearchResults()
104+
}
105+
}
106+
107+
(function ($) {
108+
"use strict";
109+
110+
var Search = {
111+
init: function () {
112+
$(document).ready(function () {
113+
// Fill the search input form with the current search keywords
114+
const searchKeywords = new URLSearchParams(location.search).get('q');
115+
if (searchKeywords !== null && searchKeywords !== '') {
116+
const searchInput = document.querySelector('.td-search-input');
117+
searchInput.focus();
118+
searchInput.value = searchKeywords;
119+
}
120+
121+
// Set a keydown event
122+
$(document).on("keypress", ".td-search-input", function (e) {
123+
if (e.keyCode !== 13) {
124+
return;
125+
}
126+
127+
var query = $(this).val();
128+
var searchPage = $(this).data('search-page') + "?q=" + query;
129+
document.location = searchPage;
130+
131+
return false;
132+
});
133+
});
134+
},
135+
};
136+
137+
Search.init();
138+
})(jQuery);
139+
140+
window.onload = loadSearch;

assets/js/search.js

Lines changed: 0 additions & 45 deletions
This file was deleted.

layouts/_default/search.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
</script>
3939
<gcse:searchresults-only></gcse:searchresults-only>
4040
{{ else if .Site.Params.k8s_search }}
41-
<script src="{{ "js/search.js" | relURL }}"></script>
4241
<script src="/pagefind/pagefind-ui.js"></script>
4342
<gcse:searchresults-only linktarget="_parent">
4443
<div id="search" style="display:none"></div>

layouts/partials/scripts.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
{{ if .Site.Params.offlineSearch }}
3535
{{ $jsSearch = resources.Get "js/offline-search.js" }}
3636
{{ end }}
37+
{{ if .Site.Params.k8s_search }}
38+
{{ $jsSearch = resources.Get "js/k8s-search.js" }}
39+
{{ end }}
3740
{{ $js := (slice $jsBs $jsBase $jsAnchor $jsSearch) | resources.Concat "js/main.js" -}}
3841
{{ if hugo.IsProduction -}}
3942
{{ $js := $js | minify | fingerprint -}}

static/js/search.js

Lines changed: 0 additions & 108 deletions
This file was deleted.

0 commit comments

Comments
 (0)