Bug 31565: Fix datatables searching escape for exact search
To test: 1. Add a new patron category with categorycode 'TEST_CAT' 2. Add a patron to category 'TEST_CAT' 3. Go to Patrons search view 4. Under "Search for patron" filters, filter by category you created at step 1 5. Click Search 6. Observe no results 7. Apply this patch and reload 8. Repeat 3-5 9. Observe expected result Double check tests from Bug 30393 still work as expected: 10. Go to the cities page 11. Add two cities: - 'Cordoba %' - 'Buenos Aires _' - 'London \' 12. Use the column search on the name, alternating _, \ and % as the query => SUCCESS: Filtering works correctly! Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
277e19bd10
commit
41d0daaff8
1 changed files with 5 additions and 2 deletions
|
@ -578,8 +578,8 @@ jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
|
|||
|
||||
function build_query(col, value){
|
||||
|
||||
// escape SQL special characters
|
||||
value = value.replace(/(\%|\_|\\)/g, "\\$1" );
|
||||
// escape SQL special character \
|
||||
value = value.replace(/(\\)/g, "\\$1" );
|
||||
|
||||
var parts = [];
|
||||
var attributes = col.data.split(':');
|
||||
|
@ -590,6 +590,9 @@ jQuery.fn.dataTable.ext.errMode = function(settings, note, message) {
|
|||
if ( value.match(/^\^(.*)\$$/) ) {
|
||||
value = value.replace(/^\^/, '').replace(/\$$/, '');
|
||||
criteria = "exact";
|
||||
} else {
|
||||
// escape SQL LIKE special characters % and _
|
||||
value = value.replace(/(\%|\_)/g, "\\$1");
|
||||
}
|
||||
part[!attr.includes('.')?'me.'+attr:attr] = criteria === 'exact'
|
||||
? value
|
||||
|
|
Loading…
Reference in a new issue