#445: Fix links to result pages when using the search function of HTML built with the `dirhtml` builder.

This commit is contained in:
Georg Brandl 2010-06-13 21:35:42 +02:00
parent 762741244d
commit c88cb38f42
4 changed files with 29 additions and 7 deletions

View File

@ -1,6 +1,9 @@
Release 0.6.8 (in development) Release 0.6.8 (in development)
============================== ==============================
* #445: Fix links to result pages when using the search function
of HTML built with the ``dirhtml`` builder.
* #444: In templates, properly re-escape values treated with the * #444: In templates, properly re-escape values treated with the
"striptags" Jinja filter. "striptags" Jinja filter.

View File

@ -750,6 +750,10 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder):
return outfilename return outfilename
def prepare_writing(self, docnames):
StandaloneHTMLBuilder.prepare_writing(self, docnames)
self.globalcontext['no_search_suffix'] = True
class SerializingHTMLBuilder(StandaloneHTMLBuilder): class SerializingHTMLBuilder(StandaloneHTMLBuilder):
""" """

View File

@ -109,7 +109,7 @@
URL_ROOT: '{{ url_root }}', URL_ROOT: '{{ url_root }}',
VERSION: '{{ release|e }}', VERSION: '{{ release|e }}',
COLLAPSE_MODINDEX: false, COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '{{ file_suffix }}', FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
HAS_SOURCE: {{ has_source|lower }} HAS_SOURCE: {{ has_source|lower }}
}; };
</script> </script>

View File

@ -424,10 +424,23 @@ var Search = {
if (results.length) { if (results.length) {
var item = results.pop(); var item = results.pop();
var listItem = $('<li style="display:none"></li>'); var listItem = $('<li style="display:none"></li>');
listItem.append($('<a/>').attr( if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
'href', // dirhtml builder
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + var dirname = item[0] + '/';
highlightstring + item[2]).html(item[1])); if (dirname.match(/\/index\/$/)) {
dirname = dirname.substring(0, dirname.length-6);
} else if (dirname == 'index/') {
dirname = '';
}
listItem.append($('<a/>').attr('href',
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
highlightstring + item[2]).html(item[1]));
} else {
// normal html builders
listItem.append($('<a/>').attr('href',
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
highlightstring + item[2]).html(item[1]));
}
if (item[3]) { if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>')); listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem); Search.output.append(listItem);
@ -437,8 +450,10 @@ var Search = {
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
item[0] + '.txt', function(data) { item[0] + '.txt', function(data) {
listItem.append($.makeSearchSummary(data, searchterms, hlterms)); if (data != '') {
Search.output.append(listItem); listItem.append($.makeSearchSummary(data, searchterms, hlterms));
Search.output.append(listItem);
}
listItem.slideDown(5, function() { listItem.slideDown(5, function() {
displayNextItem(); displayNextItem();
}); });