porting from 22.1 as per Andrey's request from 04.08 * sphinx google search * fixes * fixes * fix version tabs Co-authored-by: Nikolay Tyukaev <nikolay.tyukaev@intel.com>
This commit is contained in:
parent
1b5756a4d7
commit
22398ac9cd
5
docs/_static/css/custom.css
vendored
5
docs/_static/css/custom.css
vendored
@ -115,3 +115,8 @@ div.highlight {
|
|||||||
max-width: 1800px;
|
max-width: 1800px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main .searchForm {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
98
docs/_static/css/gsearch.css
vendored
Normal file
98
docs/_static/css/gsearch.css
vendored
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
/* Google Search */
|
||||||
|
|
||||||
|
div.gs-result {
|
||||||
|
padding: 15px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-result::after {
|
||||||
|
clear: both;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-title > a {
|
||||||
|
color: #2171b8;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-title > a:visited {
|
||||||
|
color: #609;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-url {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #1E9F40;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-cursor {
|
||||||
|
margin-top: 40px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.gs-cursor-page {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.gs-cursor-page-previous {
|
||||||
|
margin-right: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.gs-cursor-page-next {
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-cursor a.active {
|
||||||
|
color: #2171b8;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-media {
|
||||||
|
float: left;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-media img {
|
||||||
|
max-width: 60px;
|
||||||
|
max-height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-file-format-box {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.gs-file-format {
|
||||||
|
color: #6e6e6e;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-file-type {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gs-no-results {
|
||||||
|
border: 1px solid rgb(255,204,51);
|
||||||
|
background-color: rgb(255,244,194);
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Version tabs */
|
||||||
|
|
||||||
|
#gs-tabs-area {
|
||||||
|
margin-top:2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.gs-tab {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0px 10px;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.gs-tab-active {
|
||||||
|
border-bottom: 2px solid #2171b8;
|
||||||
|
pointer-events: none;
|
||||||
|
cursor: default;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #2171b8 !important;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
5
docs/_static/js/custom.js
vendored
5
docs/_static/js/custom.js
vendored
@ -45,6 +45,7 @@ $(document).ready(function () {
|
|||||||
addTableSort();
|
addTableSort();
|
||||||
}
|
}
|
||||||
addLegalNotice();
|
addLegalNotice();
|
||||||
|
updateSearchForm();
|
||||||
createSphinxTabSets();
|
createSphinxTabSets();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -108,6 +109,10 @@ function getCurrentVersion() {
|
|||||||
return encodeURI(wordAfterDomain);
|
return encodeURI(wordAfterDomain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateSearchForm() {
|
||||||
|
var currentVersion = getCurrentVersion();
|
||||||
|
$('.searchForm').append('<input type="hidden" name="version" value="' + currentVersion + '">');
|
||||||
|
}
|
||||||
|
|
||||||
function createVersions() {
|
function createVersions() {
|
||||||
var currentVersion = getCurrentVersion();
|
var currentVersion = getCurrentVersion();
|
||||||
|
376
docs/_static/js/gsearch.js
vendored
Normal file
376
docs/_static/js/gsearch.js
vendored
Normal file
@ -0,0 +1,376 @@
|
|||||||
|
/* API config */
|
||||||
|
var cx = '012886673101693426607:wjpczzz2qi3';
|
||||||
|
var path = 'https://content.googleapis.com/discovery/v1/apis/customsearch/v1/rest';
|
||||||
|
var apiKey = 'AIzaSyBpwSxfoP2T_EK62wwNhZ9zyxUzeRjmOwA';
|
||||||
|
|
||||||
|
|
||||||
|
var potKeywords = ['int8', '8-bit', '8 bit', 'quantization', 'quantized',
|
||||||
|
'quantizer', 'fakequantize', 'fq', 'model optimization',
|
||||||
|
'low precision', 'low-precision', 'lower precision', 'pot',
|
||||||
|
'compression', 'calibration', 'post-training', 'post training'];
|
||||||
|
|
||||||
|
// get the docs versions stored in versions_raw.js
|
||||||
|
var versions;
|
||||||
|
try {
|
||||||
|
versions = JSON.parse(data);
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
versions = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
function hasPotTerms(query) {
|
||||||
|
q = query.toLowerCase();
|
||||||
|
return potKeywords.some(function(k) {
|
||||||
|
k = k.toLowerCase();
|
||||||
|
return q.indexOf(k) != -1;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function boostPage(name, pages, pos) {
|
||||||
|
var tmp;
|
||||||
|
pages = pages || [];
|
||||||
|
for (var i = 1; i < pages.length; i++) {
|
||||||
|
if (name === getPageName(pages[i].link)) {
|
||||||
|
tmp = pages[pos];
|
||||||
|
pages[pos] = pages[i];
|
||||||
|
pages[i] = tmp;
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPageName(url) {
|
||||||
|
urlArr = url.split('/');
|
||||||
|
return urlArr[urlArr.length - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getURLParameter(name) {
|
||||||
|
return decodeURIComponent((new RegExp('[?|&]'+name+
|
||||||
|
'='+'([^&;]+?)(&|#|;|$)').exec(location.search)
|
||||||
|
||[,""])[1].replace(/\+/g, '%20'))||null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function search(query, selectedVersion, page, key) {
|
||||||
|
// make a query to Google Search API and render the results
|
||||||
|
var start = getStartIndex(page); // get start index from page number
|
||||||
|
var documentationHost = 'https://docs.openvino.ai';
|
||||||
|
if (selectedVersion === 'ALL') {
|
||||||
|
var siteSearch = documentationHost;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var siteSearch = documentationHost + '/' + selectedVersion;
|
||||||
|
}
|
||||||
|
var path = 'https://www.googleapis.com/customsearch/v1?cx=' + cx + '&q=' + query + '&siteSearch=' + siteSearch + '&start=' + start;
|
||||||
|
var hasPot = hasPotTerms(query);
|
||||||
|
if (hasPot) {
|
||||||
|
path += '&qt="pot"';
|
||||||
|
}
|
||||||
|
|
||||||
|
return async function() {
|
||||||
|
await gapi.client.init({
|
||||||
|
'apiKey': apiKey,
|
||||||
|
}).then(function() {
|
||||||
|
return gapi.client.request({
|
||||||
|
'path': path
|
||||||
|
})
|
||||||
|
}).then(function(response) {
|
||||||
|
handleResponse(response, selectedVersion, hasPot);
|
||||||
|
}, function(err) {
|
||||||
|
console.log(err);
|
||||||
|
handleNoResults();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPageNum(index) {
|
||||||
|
// get page number from page index
|
||||||
|
return Math.floor((index-1) / 10) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStartIndex(page) {
|
||||||
|
// get start index from page number
|
||||||
|
return (page - 1) * 10 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleNoResults() {
|
||||||
|
var $noResults = $('<div>', {'class': 'gs-no-results', 'text': 'No Results'});
|
||||||
|
$('#searchinfo').append($noResults);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleResponse(response, selectedVersion, hasPot) {
|
||||||
|
var result = response.result;
|
||||||
|
var searchInformation = result.searchInformation;
|
||||||
|
var totalResults = parseInt(searchInformation.totalResults);
|
||||||
|
var limit = null;
|
||||||
|
var previousPage, nextPage;
|
||||||
|
previousPage = nextPage = null;
|
||||||
|
var queries = result.queries;
|
||||||
|
var request = queries.request[0];
|
||||||
|
var searchTerms = request.searchTerms;
|
||||||
|
var startIndex = request.startIndex;
|
||||||
|
var currentPage = getPageNum(startIndex);
|
||||||
|
|
||||||
|
$('#searchinfo').text('Search Results for "' + searchTerms + '"');
|
||||||
|
$('#searchfield').val(searchTerms);
|
||||||
|
if (queries.hasOwnProperty('nextPage')) {
|
||||||
|
nextPage = getPageNum(queries.nextPage[0].startIndex);
|
||||||
|
if (nextPage > 10) {
|
||||||
|
nextPage = null;
|
||||||
|
limit = currentPage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
limit = currentPage;
|
||||||
|
}
|
||||||
|
if (queries.hasOwnProperty('previousPage')) {
|
||||||
|
previousPage = getPageNum(queries.previousPage[0].startIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
var count = parseInt(request.count);
|
||||||
|
totalResults = (count + totalResults) > 100 ? 100 : totalResults;
|
||||||
|
var query = request.searchTerms;
|
||||||
|
var totalPages = Math.ceil(totalResults / count);
|
||||||
|
var items = response.result.items;
|
||||||
|
if (hasPot) {
|
||||||
|
boostPage('pot_README.html', items, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add version tabs
|
||||||
|
addVersionTabs(selectedVersion, query);
|
||||||
|
|
||||||
|
if (!(totalPages || items)) {
|
||||||
|
handleNoResults();
|
||||||
|
totalPages = limit;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// render the results
|
||||||
|
renderResults(items);
|
||||||
|
}
|
||||||
|
addPagination(query, selectedVersion, currentPage, previousPage, nextPage, totalPages, limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addVersionTabs(selectedVersion, query) {
|
||||||
|
// remove latest
|
||||||
|
var tab_versions = [{'version': 'ALL'}];
|
||||||
|
var latestVersion;
|
||||||
|
if (versions.length) {
|
||||||
|
tab_versions = [{'version': 'ALL'}].concat(versions.slice(1));
|
||||||
|
latestVersion = tab_versions[2].version;
|
||||||
|
if (selectedVersion === 'latest') {
|
||||||
|
selectedVersion = versions[2].version;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var i = 0; i < tab_versions.length; i++) {
|
||||||
|
var href;
|
||||||
|
var $elem = $('<a>', { 'class': 'gs-tab', 'href': 'search.html?version=' + tab_versions[i].version + '&query=' + query, 'text': tab_versions[i].version });
|
||||||
|
if (tab_versions[i].version === 'ALL') {
|
||||||
|
href = 'search.html?query=' + query;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
href = 'search.html?query=' + query + '&version=' + tab_versions[i].version
|
||||||
|
}
|
||||||
|
var $elem = $('<a>', { 'class': 'gs-tab', 'href': href, 'text': tab_versions[i].version });
|
||||||
|
if (selectedVersion === tab_versions[i].version) {
|
||||||
|
$elem.addClass('gs-tab-active');
|
||||||
|
}
|
||||||
|
if (latestVersion === tab_versions[i].version) {
|
||||||
|
$elem.text('latest (' + $elem.text() + ')');
|
||||||
|
}
|
||||||
|
$('#gs-tabs-area').append($elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderResults(items) {
|
||||||
|
var $elements = $('<div>', {'class': 'gs-results'});
|
||||||
|
$.each(items, function(i, item) {
|
||||||
|
// result item
|
||||||
|
var $resultItem = $('<div>', {'class': 'gs-result' });
|
||||||
|
var $title = $('<div>', {'class': 'gs-title'});
|
||||||
|
$title.append($('<a>', {'target': '_blank', 'href': item['link'], 'html': item['htmlTitle']}));
|
||||||
|
var $url = $('<div>', {'class': 'gs-url', 'html': item['link']});
|
||||||
|
var $context = $('<div>', {'class': 'gs-context'});
|
||||||
|
var $snippet = $('<div>', {'class': 'gs-snippet', 'html': item['htmlSnippet'].replace(/\<br\>/g, '')});
|
||||||
|
|
||||||
|
// media
|
||||||
|
if (item.pagemap.hasOwnProperty('cse_thumbnail')) {
|
||||||
|
var $media = $('<div>', {'class': 'gs-media'});
|
||||||
|
var cse_thumbnail = item.pagemap.cse_thumbnail[0];
|
||||||
|
var $link = $('<a>', {'href': item['link'], 'target': '_blank'});
|
||||||
|
var $image = $('<img>', { 'src': cse_thumbnail.src, 'alt': 'Thumbnail image' });
|
||||||
|
$link.append($image);
|
||||||
|
$media.append($link);
|
||||||
|
$context.append($media);
|
||||||
|
}
|
||||||
|
|
||||||
|
// file format
|
||||||
|
if (item.hasOwnProperty('fileFormat')) {
|
||||||
|
var $ffBox = $('<div>', {'class': 'gs-file-format-box'});
|
||||||
|
var $fileFormat = $('<span>', {'class': 'gs-file-format', 'text': 'File format: '});
|
||||||
|
var $type = $('<span>', {'class': 'gs-file-type', 'text': item['fileFormat']});
|
||||||
|
$ffBox.append($fileFormat);
|
||||||
|
$ffBox.append($type);
|
||||||
|
$context.append($ffBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
$context.append($snippet);
|
||||||
|
|
||||||
|
$resultItem.append($title);
|
||||||
|
$resultItem.append($url);
|
||||||
|
$resultItem.append($context);
|
||||||
|
$elements.append($resultItem);
|
||||||
|
|
||||||
|
});
|
||||||
|
$('#searchresults').append($elements);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addPagination(query, selectedVersion, currentPage, previousPage, nextPage, totalPages, limit) {
|
||||||
|
function getPageList(currentPage, totalPages, limit) {
|
||||||
|
var x, left, right, pageList;
|
||||||
|
left = right = currentPage;
|
||||||
|
pageList = [];
|
||||||
|
x = 1;
|
||||||
|
while (x < 10 && x < totalPages) {
|
||||||
|
if (left > 1) {
|
||||||
|
left--;
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
if (right < totalPages) {
|
||||||
|
right++;
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (limit === currentPage) {
|
||||||
|
right = currentPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
var diff = (right - left) + 1;
|
||||||
|
var rest = 10 - diff;
|
||||||
|
|
||||||
|
if (rest !== 0) {
|
||||||
|
left = left - rest < 1 ? 1 : left - rest;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = left; i <= right; i++) {
|
||||||
|
pageList.push(i);
|
||||||
|
}
|
||||||
|
return pageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
var pageList = getPageList(currentPage, totalPages, limit);
|
||||||
|
|
||||||
|
var $cursor = $('<div>', {'class': 'gs-cursor'});
|
||||||
|
|
||||||
|
if (previousPage) {
|
||||||
|
var $previous = $('<a>', {
|
||||||
|
'text': 'Previous',
|
||||||
|
'class': 'gs-cursor-page-previous',
|
||||||
|
'href': 'search.html?query=' + query + '&page=' + previousPage + '&version=' + selectedVersion
|
||||||
|
});
|
||||||
|
$cursor.append($previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
var $page;
|
||||||
|
for(var i = 0; i < pageList.length; i++) {
|
||||||
|
$page = $('<a>', {
|
||||||
|
'class': 'gs-cursor-page',
|
||||||
|
'href': 'search.html?query=' + query + '&page=' + pageList[i] + '&version=' + selectedVersion,
|
||||||
|
'text': pageList[i]
|
||||||
|
});
|
||||||
|
if (currentPage === pageList[i]) {
|
||||||
|
$page.addClass('active');
|
||||||
|
}
|
||||||
|
$cursor.append($page);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextPage) {
|
||||||
|
var $next = $('<a>', {
|
||||||
|
'text': 'Next',
|
||||||
|
'class': 'gs-cursor-page-next',
|
||||||
|
'href': 'search.html?query=' + query + '&page=' + nextPage + '&version=' + selectedVersion
|
||||||
|
});
|
||||||
|
$cursor.append($next);
|
||||||
|
}
|
||||||
|
$('#searchresults').append($cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
function trim(s) {
|
||||||
|
return s?s.replace(/^\s\s*/, '').replace(/\s\s*$/, ''):'';
|
||||||
|
}
|
||||||
|
|
||||||
|
var entityMap = {
|
||||||
|
"&": "&",
|
||||||
|
"<": "<",
|
||||||
|
">": ">",
|
||||||
|
'"': '"',
|
||||||
|
"'": ''',
|
||||||
|
"/": '/'
|
||||||
|
};
|
||||||
|
|
||||||
|
function escapeHtml(s) {
|
||||||
|
return String(s).replace(/[&<>"'\/]/g, function (s) {
|
||||||
|
return entityMap[s];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function versionExists(v) {
|
||||||
|
for (var i = 0; i < versions.length; i++) {
|
||||||
|
if (versions[i].version === v) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCurrentPath() {
|
||||||
|
var windowLocationArr = window.location.href.split("/");
|
||||||
|
var currentPath = encodeURI(
|
||||||
|
windowLocationArr[windowLocationArr.length - 1].replace(
|
||||||
|
window.location.hash,
|
||||||
|
""
|
||||||
|
));
|
||||||
|
return currentPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getURLParameter(name) {
|
||||||
|
return decodeURIComponent((new RegExp('[?|&]'+name+
|
||||||
|
'='+'([^&;]+?)(&|#|;|$)').exec(location.search)
|
||||||
|
||[,""])[1].replace(/\+/g, '%20'))||null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
// remove duplicate search
|
||||||
|
$('#top > #MSearchField').remove();
|
||||||
|
|
||||||
|
var query = trim(getURLParameter('query'));
|
||||||
|
if (!query) {
|
||||||
|
handleNoResults();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var page = trim(getURLParameter('page')) || 1;
|
||||||
|
var selectedVersion = trim(getURLParameter('version'));
|
||||||
|
if (versionExists(selectedVersion)) {
|
||||||
|
if (versions[1] && selectedVersion === versions[1].version) {
|
||||||
|
selectedVersion = 'latest';
|
||||||
|
}
|
||||||
|
if (window.location.pathname.startsWith('/cn')) {
|
||||||
|
selectedVersion = 'cn/' + selectedVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
selectedVersion = 'ALL';
|
||||||
|
}
|
||||||
|
|
||||||
|
// the key is used to store and retrieve data from sessionStorage
|
||||||
|
var key = getCurrentPath();
|
||||||
|
|
||||||
|
var data;
|
||||||
|
if (key in sessionStorage) {
|
||||||
|
try {
|
||||||
|
data = JSON.parse(sessionStorage[key]);
|
||||||
|
}
|
||||||
|
catch(err) {};
|
||||||
|
}
|
||||||
|
gapi.load('client', search(query, selectedVersion,page, key));
|
||||||
|
});
|
4
docs/_templates/search-field.html
vendored
Normal file
4
docs/_templates/search-field.html
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<form class="searchForm bd-search d-flex align-items-center" action="{{ pathto('search') }}" method="get">
|
||||||
|
<i class="icon fas fa-search"></i>
|
||||||
|
<input type="search" class="form-control" name="query" id="search-input" placeholder="{{ _(theme_search_bar_text) }}" aria-label="{{ theme_search_bar_text }}" autocomplete="off" >
|
||||||
|
</form>
|
31
docs/_templates/search.html
vendored
Normal file
31
docs/_templates/search.html
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{%- extends "layout.html" %}
|
||||||
|
{% set title = _('Search') %}
|
||||||
|
{%- block scripts %}
|
||||||
|
{{ super() }}
|
||||||
|
<link rel="stylesheet" href="{{ pathto('_static/css/gsearch.css', 1) }}" type="text/css" />
|
||||||
|
<script src="https://apis.google.com/js/api.js"></script>
|
||||||
|
<script src="{{ pathto('_static/js/gsearch.js', 1) }}"></script>
|
||||||
|
{%- endblock %}
|
||||||
|
{% block body %}
|
||||||
|
<h1 id="search-documentation">{{ _('Search') }}</h1>
|
||||||
|
<p id="searchinfo">
|
||||||
|
Search Results...
|
||||||
|
</p>
|
||||||
|
<div id="gs-tabs-area"></div>
|
||||||
|
{% block scriptwarning %}
|
||||||
|
<div id="fallback" class="admonition warning">
|
||||||
|
<script>$('#fallback').hide();</script>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% block searchbox %}
|
||||||
|
<form class="searchForm" action="" method="get">
|
||||||
|
<input id="searchfield" type="text" name="query" aria-labelledby="search-documentation" value="" />
|
||||||
|
<input type="submit" value="{{ _('search') }}" />
|
||||||
|
<span id="search-progress" style="padding-left: 10px"></span>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
||||||
|
{% block searchresults %}
|
||||||
|
<div id="gs-tabs-area"></div>
|
||||||
|
<div id="searchresults"></div>
|
||||||
|
{% endblock %}
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user