summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorMax Kanat-Alexander <mkanat@bugzilla.org>2011-10-15 15:02:36 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2011-10-15 15:02:36 +0200
commit6f26a0f26f0e068754ab7b0ff29cf3e313d1f867 (patch)
treecc2eae405dea1811cc9b414dcb8df11fa03ce4b9 /js
parentae0de61f9ed7319d26c4dc03eadbb604b3baae1a (diff)
downloadbugzilla-6f26a0f26f0e068754ab7b0ff29cf3e313d1f867.tar.gz
bugzilla-6f26a0f26f0e068754ab7b0ff29cf3e313d1f867.tar.xz
Bug 674416: Custom searches in query.cgi are lost when clicking the "Back" button in Firefox when viewing a buglist
r=glob a=mkanat
Diffstat (limited to 'js')
-rw-r--r--js/custom-search.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/js/custom-search.js b/js/custom-search.js
index 800150440..394e0eb32 100644
--- a/js/custom-search.js
+++ b/js/custom-search.js
@@ -32,6 +32,8 @@ var ANY_ALL_SELECT_CLASS = 'any_all_select';
function custom_search_not_changed(id) {
var container = document.getElementById('custom_search_not_container_' + id);
YAHOO.util.Dom.removeClass(container, 'custom_search_advanced');
+
+ fix_query_string(container);
}
function custom_search_new_row() {
@@ -53,6 +55,7 @@ function custom_search_new_row() {
// Always make sure there's only one row with this id.
row.id = null;
row.parentNode.appendChild(clone);
+ fix_query_string(row);
return clone;
}
@@ -100,6 +103,8 @@ function custom_search_open_paren() {
var new_margin = parseInt(int_match[0]) + PAREN_INDENT_EM;
YAHOO.util.Dom.setStyle(row, 'margin-left', new_margin + 'em');
YAHOO.util.Dom.removeClass('cp_container', 'bz_default_hidden');
+
+ fix_query_string(any_all_container);
}
function custom_search_close_paren() {
@@ -124,6 +129,23 @@ function custom_search_close_paren() {
if (new_margin == 0) {
YAHOO.util.Dom.addClass('cp_container', 'bz_default_hidden');
}
+
+ fix_query_string(new_row);
+}
+
+// When a user goes Back in their browser after searching, some browsers
+// (Chrome, as of September 2011) do not remember the DOM that was created
+// by the Custom Search JS. (In other words, their whole entered Custom
+// Search disappears.) The solution is to update the History object,
+// using the query string, which query.cgi can read to re-create the page
+// exactly as the user had it before.
+function fix_query_string(form_member) {
+ if (!(window.history && window.history.replaceState))
+ return;
+
+ var form = YAHOO.util.Dom.getAncestorByTagName(form_member, 'form');
+ var query = YAHOO.util.Connect.setForm(form);
+ window.history.replaceState(null, document.title, '?' + query);
}