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@xxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list