forked from openshift/openshift-docs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* avoids search iframe for sensible rendering on iOS devices * modifies the main search page in similar manner Signed-off-by: Jiri Fiala <[email protected]>
- Loading branch information
1 parent
a91890c
commit ee15c5a
Showing
9 changed files
with
257 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,105 @@ | ||
function hcSearchCategory(label, version) { | ||
// optional version filters search results for a single specific product version | ||
// currently can be used with OCP and Origin only | ||
// currently can be used with OCP and OKD docs only | ||
|
||
var modalSearch = document.getElementById("hc-search-modal"); | ||
var searchBtn = document.getElementById("hc-search-btn"); | ||
var closeModal = document.getElementById("hc-modal-close"); | ||
var searchResults = document.getElementById("hc-search-results"); | ||
var query = document.getElementById("hc-search-input"); | ||
// elements used repeatedly: | ||
var modalSearch = $("#hc-search-modal"); | ||
var searchBtn = $("#hc-search-btn"); | ||
var closeModal = $("#hc-modal-close"); | ||
var query = $("#hc-search-input"); | ||
|
||
// pressing enter in the input = search btn click | ||
query.addEventListener("keyup", function(event) { | ||
query.keyup( function(event) { | ||
event.preventDefault(); | ||
if (event.keyCode == 13) { | ||
searchBtn.click(); | ||
} | ||
}); | ||
|
||
//prepare iframe (without source) | ||
var iframe = document.createElement("iframe"); | ||
iframe.frameBorder=0; | ||
iframe.width="100%"; | ||
iframe.height=0.7*window.innerHeight; | ||
iframe.id="search-result-iframe"; | ||
|
||
// open the modal and finalize the iframe on click | ||
searchBtn.onclick = function() { | ||
if (query.value) { | ||
modalSearch.style.display = "block"; | ||
// limit search to a signle version, if specified | ||
var urlFilter = (typeof version === "undefined" || version == "Branch Build") ? "" : (" url:*\\/" + version + "\\/*"); | ||
var iframeSrc = "https://help.openshift.com/customsearch.html?q=" + | ||
encodeURIComponent(query.value) + | ||
encodeURIComponent(urlFilter) + | ||
"&l=" + encodeURIComponent(label); | ||
iframe.setAttribute("src", iframeSrc); | ||
searchResults.appendChild(iframe); | ||
// open the modal and fetch the first set of results on click | ||
searchBtn.click(function() { | ||
if (query.val()) { | ||
// remove any results from previous searches | ||
$("#hc-search-results").empty(); | ||
var searchParams = { | ||
si: 0, | ||
q: query.val(), | ||
label: label, | ||
urlFilter: (typeof version === "undefined" || version == "Branch Build") ? "" : (" url:*\\/" + version + "\\/*") | ||
}; | ||
modalSearch.show(); | ||
hcsearch(searchParams); | ||
} | ||
}); | ||
|
||
// hide search modal by 'X' or by clicking outside of the modal | ||
closeModal.click(function() { | ||
modalSearch.hide(); | ||
}); | ||
$(window).click(function(event) { | ||
if ($(event.target).is(modalSearch)) { | ||
modalSearch.hide(); | ||
} | ||
} | ||
}); | ||
} // hcSearchCategory(label, version) | ||
|
||
// fetch search results | ||
function hcsearch(searchParams) { | ||
// elements used repeatedly | ||
var hcMoreBtn = $("#hc-search-more-btn"); | ||
var hcSearchIndicator = $("#hc-search-progress-indicator"); | ||
var hcSearchResult = $("#hc-search-results"); | ||
|
||
// hide search modal | ||
closeModal.onclick = function() { | ||
modalSearch.style.display = "none"; | ||
} | ||
// the "searchprovider" is to return a JSON response in the expected format | ||
var searchprovider = "https://help.openshift.com/search/search_custom.php"; | ||
var searchReq = { "q" : searchParams.q + searchParams.urlFilter, | ||
"l" : searchParams.label, | ||
"si" : searchParams.si } // q = query, l = label | ||
|
||
window.onclick = function(event) { | ||
if (event.target == modalSearch) { | ||
modalSearch.style.display = "none"; | ||
hcMoreBtn.hide(); | ||
hcSearchIndicator.show(); | ||
$.get(searchprovider, searchReq).done(function (hcsearchresults) { | ||
// GET success | ||
if (hcsearchresults == "") { | ||
// success, but no response (response code mismatch) | ||
$("#hc-search-result").append("<p><strong>An error occured while retrieving search results. Please try again later.</strong></p>"); | ||
hcSearchIndicator.hide(); | ||
} | ||
} | ||
} // hcSearchCategory(label) | ||
if (hcsearchresults.response.result) { | ||
// if there are any results | ||
$(hcsearchresults.response.result).each(function () { | ||
var row = '<div class="search-result-item"><a href="' + this.url + | ||
'" target="_blank">' + this.title + '</a>'; | ||
row += '<p class="excerpt">' + this.content_description.replace(/\<br\>/g, ' ') + '</p></div>'; | ||
hcSearchResult.append(row); | ||
}); | ||
if (hcsearchresults.response.page_number < hcsearchresults.response.page_count) { | ||
// if there are more results beyond the retrieved ones | ||
// index of the first item on the next page (first item = 0, first page = 1) | ||
searchParams.si = hcsearchresults.response.page_number * hcsearchresults.response.page_size; | ||
// replace any existing click handler with one to fetch the next set of results | ||
hcMoreBtn.off('click'); | ||
hcMoreBtn.click(function() { | ||
hcsearch(searchParams); | ||
}); | ||
hcMoreBtn.show(); | ||
} else { | ||
// no more results beyond the retrieved ones | ||
hcSearchResult.append("<p><strong>No more results.</strong></p>"); | ||
} | ||
} else { | ||
if (searchParams.si > 0) { | ||
// no results reurned, but some already displayed | ||
hcSearchResult.append("<p><strong>No more results.</strong></p>"); | ||
} else { | ||
// no results on initial search | ||
hcSearchResult.append("<p><strong>No results found. Try rewording your search.</strong></p>"); | ||
} | ||
} | ||
hcSearchIndicator.hide(); | ||
}).fail(function(response) { | ||
// GET error | ||
hcSearchResult.append("<p><strong>An error occured while retrieving search results. Please try again later.</strong></p>"); | ||
hcSearchIndicator.hide(); | ||
}); | ||
} // function hcsearch() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.