Allow targetting the search scope to the website, wiki or mailing lists
only. When javascript is disabled this should gracefully fallback to
only searching the website.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/js/main.js | 77 ++++++++++++++++++++++++++++++++++++++++++++++++
docs/libvirt.css | 39 ++++++++++++++++++++++++
docs/main.js | 25 ----------------
docs/mobile.css | 7 +++++
docs/page.xsl | 16 +++++++---
5 files changed, 135 insertions(+), 29 deletions(-)
create mode 100644 docs/js/main.js
delete mode 100644 docs/main.js
diff --git a/docs/js/main.js b/docs/js/main.js
new file mode 100644
index 0000000000..aea7c999fc
--- /dev/null
+++ b/docs/js/main.js
@@ -0,0 +1,77 @@
+function pageload() {
+ window.addEventListener('scroll', function(e){
+ var distanceY = window.pageYOffset || document.documentElement.scrollTop
+ var shrinkOn = 94
+ home = document.getElementById("home");
+ links = document.getElementById("jumplinks");
+ search = document.getElementById("search");
+ body = document.getElementById("body");
+ if (distanceY > shrinkOn) {
+ if (home.className != "navhide") {
+ body.className = "navhide"
+ home.className = "navhide"
+ links.className = "navhide"
+ search.className = "navhide"
+ }
+ } else {
+ if (home.className == "navhide") {
+ body.className = ""
+ home.className = ""
+ links.className = ""
+ search.className = ""
+ }
+ }
+ });
+
+ /* Setting this class makes the advanced search options visible */
+ advancedSearch = document.getElementById("advancedsearch")
+ advancedSearch.className = "advancedsearch"
+
+ simpleSearch = document.getElementById("simplesearch")
+ simplesearch.addEventListener("submit", advancedsearch)
+}
+
+function advancedsearch(e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ form = document.createElement("form");
+ form.setAttribute("method", "get");
+
+ newq = document.createElement("input");
+ newq.setAttribute("type", "hidden");
+ form.appendChild(newq);
+
+ q = document.getElementById("searchq");
+ whats = document.getElementsByName("what");
+ what = "website";
+ for (var i = 0; i < whats.length; i++) {
+ if (whats[i].checked) {
+ what = whats[i].value;
+ break;
+ }
+ }
+
+ if (what == "website") {
+ form.setAttribute("action", "https://google.com/search");
+ newq.setAttribute("name", "q");
+ newq.value = "site:libvirt.org " + q.value;
+ } else if (what == "wiki") {
+ form.setAttribute("action",
"https://wiki.libvirt.org/index.php");
+ newq.setAttribute("name", "search");
+ newq.value = q.value;
+ } else if (what == "devs") {
+ form.setAttribute("action", "https://google.com/search");
+ newq.setAttribute("name", "q");
+ newq.value = "site:redhat.com inurl:/archives/libvir-list " + q.value;
+ } else if (what == "users") {
+ form.setAttribute("action", "https://google.com/search");
+ newq.setAttribute("name", "q");
+ newq.value = "site:redhat.com inurl:/archives/libvirt-users " +
q.value;
+ }
+
+ document.body.appendChild(form);
+ form.submit();
+
+ return false;
+}
diff --git a/docs/libvirt.css b/docs/libvirt.css
index ed797d5d91..0d2d5f8ace 100644
--- a/docs/libvirt.css
+++ b/docs/libvirt.css
@@ -542,3 +542,42 @@ dl.mail dt a:hover {
td.enumvalue {
white-space: nowrap;
}
+
+#advancedsearch {
+ display: none;
+ vertical-align: bottom;
+ position: absolute;
+ padding: 1em;
+ padding-top: 0em;
+ margin-top: 0em;
+ top: 100px;
+ right: 0px;
+ width: 13em;
+ text-align: left;
+ color: white;
+ background: rgb(0, 95, 97);
+ border-left: 3px solid rgb(60, 133, 124);
+ border-bottom: 3px solid rgb(60, 133, 124);
+}
+
+/* Use div.advancedsearch, not #advancedsearch because the
+ * 'advancedsearch' class is set dynamically when javascript
+ * loads. This ensures that the advancedsearch options are
+ * not displayed when javascript is disabled.
+*/
+#search:hover div.advancedsearch {
+ display: table;
+}
+
+#advancedsearch span {
+ display: block;
+}
+
+#advancedsearch input[type=radio] {
+ height: inherit;
+ display: inline;
+}
+
+#advancedsearch label {
+ display: inline;
+}
diff --git a/docs/main.js b/docs/main.js
deleted file mode 100644
index 723e2fb16d..0000000000
--- a/docs/main.js
+++ /dev/null
@@ -1,25 +0,0 @@
-function pageload() {
- window.addEventListener('scroll', function(e){
- var distanceY = window.pageYOffset || document.documentElement.scrollTop
- var shrinkOn = 94
- home = document.getElementById("home");
- links = document.getElementById("jumplinks");
- search = document.getElementById("search");
- body = document.getElementById("body");
- if (distanceY > shrinkOn) {
- if (home.className != "navhide") {
- body.className = "navhide"
- home.className = "navhide"
- links.className = "navhide"
- search.className = "navhide"
- }
- } else {
- if (home.className == "navhide") {
- body.className = ""
- home.className = ""
- links.className = ""
- search.className = ""
- }
- }
- });
-}
diff --git a/docs/mobile.css b/docs/mobile.css
index 85ca497525..366d0f1a5d 100644
--- a/docs/mobile.css
+++ b/docs/mobile.css
@@ -15,6 +15,7 @@
margin: 0px;
background: white;
padding: 0px;
+ height: 2em;
}
#search form {
padding: 5px;
@@ -91,4 +92,10 @@
float: none;
margin-bottom: 2em;
}
+ #advancedsearch {
+ margin-top: 4em;
+ border: 0px;
+ background: white;
+ color: black;
+ }
}
diff --git a/docs/page.xsl b/docs/page.xsl
index 136f3106e4..65ddeb2bb7 100644
--- a/docs/page.xsl
+++ b/docs/page.xsl
@@ -126,11 +126,19 @@
</ul>
</div>
<div id="search">
- <form
action="https://www.google.com/search"
enctype="application/x-www-form-urlencoded" method="get">
- <input name="sitesearch" type="hidden"
value="libvirt.org"/>
- <input name="q" type="text" size="12"
value=""/>
- <input type="submit" value="Go"/>
+ <form id="simplesearch"
action="https://www.google.com/search"
enctype="application/x-www-form-urlencoded" method="get">
+ <div>
+ <input id="searchsite" name="sitesearch"
type="hidden" value="libvirt.org"/>
+ <input id="searchq" name="q" type="text"
size="12" value=""/>
+ <input name="submit" type="submit"
value="Go"/>
+ </div>
</form>
+ <div id="advancedsearch">
+ <span><input type="radio" name="what"
id="whatwebsite" checked="checked"
value="website"/><label
for="whatwebsite">Website</label></span>
+ <span><input type="radio" name="what"
id="whatwiki" value="wiki"/><label
for="whatwiki">Wiki</label></span>
+ <span><input type="radio" name="what"
id="whatdevs" value="devs"/><label
for="whatdevs">Developers list</label></span>
+ <span><input type="radio" name="what"
id="whatusers" value="users"/><label
for="whatusers">Users list</label></span>
+ </div>
</div>
</div>
<div id="footer">
--
2.20.1