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