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/libvirt.css | 40 ++++++++++++++++++++++++++++++++++++++++
docs/main.js | 44 ++++++++++++++++++++++++++++++++++++++++++++
docs/mobile.css | 7 +++++++
docs/page.xsl | 15 +++++++++++----
4 files changed, 102 insertions(+), 4 deletions(-)
diff --git a/docs/libvirt.css b/docs/libvirt.css
index ed797d5d91..c53825019a 100644
--- a/docs/libvirt.css
+++ b/docs/libvirt.css
@@ -542,3 +542,43 @@ 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
index 723e2fb16d..2c4443de90 100644
--- a/docs/main.js
+++ b/docs/main.js
@@ -22,4 +22,48 @@ function pageload() {
}
}
});
+
+ /* 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");
+ form.setAttribute("action", "https://google.com/search");
+
+ newq = document.createElement("input");
+ newq.setAttribute("type", "hidden");
+ newq.setAttribute("name", "q");
+ 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") {
+ newq.value = "site:libvirt.org " + q.value;
+ } else if (what == "wiki") {
+ newq.value = "site:wiki.libvirt.org " + q.value;
+ } else if (what == "lists") {
+ newq.value = "site:redhat.com inurl:/archives/libvir " + q.value;
+ }
+
+ document.body.appendChild(form);
+ form.submit();
+
+ return false;
}
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 679e3f6822..39ac095e53 100644
--- a/docs/page.xsl
+++ b/docs/page.xsl
@@ -126,11 +126,18 @@
</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="whatlists" value="lists"/><label
for="whatlists">Mailing lists</label></span>
+ </div>
</div>
</div>
<div id="footer">
--
2.20.1