From fb65616789184564cbf211581f50f603e2b05d4f Mon Sep 17 00:00:00 2001 From: Robin Sheat Date: Thu, 16 Aug 2012 16:57:29 +0200 Subject: [PATCH] Bug 8646 - prevent the highlighter from going infinite loop On certain search queries, for example http://koha-intra/cgi-bin/koha/catalogue/search.pl?kw=idx&q=ti:book%20 the highlighter starts going into an infinite loop until the browser decides to kill it. This patch prevents the bad input going to the highlighter. It also includes the fix on the OPAC, even though the issue doesn't come up there. Better to be safe... --- .../prog/en/modules/catalogue/results.tt | 5 +++++ .../prog/en/modules/opac-results-grouped.tt | 5 +++++ .../opac-tmpl/prog/en/modules/opac-results.tt | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt index 1ebc862..390732f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt @@ -96,6 +96,11 @@ $(".addtocart").show(); toHighlight = $("p,span.results_summary,a.title"); var query_desc = "[% query_desc |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"; q_array = query_desc.split(" "); + // ensure that we don't have "" at the end of the array, which can + // break the highlighter + while (q_array.length > 0 && q_array[q_array.length-1] == "") { + q_array = q_array.splice(0,-1); + } highlightOn(); $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ;}); $("#highlight_toggle_off").show().click(function() {highlightOff();}); diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results-grouped.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results-grouped.tt index 99c31bd..f8755ad 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results-grouped.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results-grouped.tt @@ -58,6 +58,11 @@ $(document).ready(function(){ [% IF ( query_desc ) %] var query_desc = "[% query_desc |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"; q_array = query_desc.split(" "); + // ensure that we don't have "" at the end of the array, which can + // break the highlighter + while (q_array.length > 0 && q_array[q_array.length-1] == "") { + q_array = q_array.splice(0,-1); + } highlightOn(); $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ;}); $("#highlight_toggle_off").show().click(function() {highlightOff();}); diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt index 67b1686..a2751cb 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt @@ -203,6 +203,11 @@ $(document).ready(function(){ [% IF ( query_desc ) %][% IF ( OpacHighlightedWords ) %]var query_desc = "[% query_desc |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"; q_array = query_desc.split(" "); + // ensure that we don't have "" at the end of the array, which can + // break the highlighter + while (q_array.length > 0 && q_array[q_array.length-1] == "") { + q_array = q_array.splice(0,-1); + } highlightOn(); $("#highlight_toggle_on" ).hide().click(function() {highlightOn() ;}); $("#highlight_toggle_off").show().click(function() {highlightOff();});[% END %][% END %] -- 1.7.9.5