From 1a91431d39dce6eaa2dd60fa17977693a30fec8f Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 17 Jul 2012 13:26:33 +0200 Subject: [PATCH] Query param searches for GridFieldAddExistingAutocompleter Fixes issues with query construction in JS when the search URL already contains GET paramters (e.g. when using the 'translatable' module). --- forms/gridfield/GridFieldAddExistingAutocompleter.php | 4 ++-- javascript/GridField.js | 2 +- .../forms/gridfield/GridFieldAddExistingAutocompleterTest.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/forms/gridfield/GridFieldAddExistingAutocompleter.php b/forms/gridfield/GridFieldAddExistingAutocompleter.php index 7f1782c7c..06b2bca68 100644 --- a/forms/gridfield/GridFieldAddExistingAutocompleter.php +++ b/forms/gridfield/GridFieldAddExistingAutocompleter.php @@ -156,7 +156,7 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF */ public function getURLHandlers($gridField) { return array( - 'search/$ID' => 'doSearch', + 'search' => 'doSearch', ); } @@ -181,7 +181,7 @@ class GridFieldAddExistingAutocompleter implements GridField_HTMLProvider, GridF // TODO Replace with DataList->filterAny() once it correctly supports OR connectives foreach($searchFields as $searchField) { - $stmts[] .= sprintf('"%s" LIKE \'%s%%\'', $searchField, $request->param('ID')); + $stmts[] .= sprintf('"%s" LIKE \'%s%%\'', $searchField, Convert::raw2sql($request->getVar('gridfield_relationsearch'))); } $results = $allList->where(implode(' OR ', $stmts))->subtract($gridField->getList()); $results = $results->sort($searchFields[0], 'ASC'); diff --git a/javascript/GridField.js b/javascript/GridField.js index a5d37752a..51f706620 100644 --- a/javascript/GridField.js +++ b/javascript/GridField.js @@ -301,7 +301,7 @@ "X-Pjax" : 'Partial' }, type: "GET", - url: suggestionUrl+'/'+request.term, + url: suggestionUrl, data: form.serialize()+'&'+escape(searchField.attr('name'))+'='+escape(searchField.val()), success: function(data) { response( $.map(JSON.parse(data), function( name, id ) { diff --git a/tests/forms/gridfield/GridFieldAddExistingAutocompleterTest.php b/tests/forms/gridfield/GridFieldAddExistingAutocompleterTest.php index caec12193..d5c870822 100644 --- a/tests/forms/gridfield/GridFieldAddExistingAutocompleterTest.php +++ b/tests/forms/gridfield/GridFieldAddExistingAutocompleterTest.php @@ -15,7 +15,7 @@ class GridFieldAddExistingAutocompleterTest extends FunctionalTest { $btns = $parser->getBySelector('.ss-gridfield #action_gridfield_relationfind'); $response = $this->post( - 'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/Team 2', + 'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/?gridfield_relationsearch=Team 2', array( (string)$btns[0]['name'] => 1 ) @@ -26,7 +26,7 @@ class GridFieldAddExistingAutocompleterTest extends FunctionalTest { $this->assertEquals(array($team2->ID => 'Team 2'), $result); $response = $this->post( - 'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/Unknown', + 'GridFieldAddExistingAutocompleterTest_Controller/Form/field/testfield/search/?gridfield_relationsearch=Unknown', array( (string)$btns[0]['name'] => 1 )