From cad6ea7cfc66a4f3caddeb2e81cb247be36ed583 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 5 Mar 2013 13:52:20 +0100 Subject: [PATCH] Bug 9747: Fix sorting issues on z3950 search results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At least the BNF server returns results containing non-sorting characters (NSB SNE). In order to sort results according these characters, this patch adds a new Datatable function. Test plan: - search 'tintin' on the z3950 search (cataloguing/z3950_search.pl) - sort on title (default sort) and check that results are not well sorted. - apply this patch - do the same search and check that the first result is "Hergé. Les Aventures de Tintin..." The value of the cell is: ˆHergé. Les ‰Aventures de Tintin... Signed-off-by: Fridolyn SOMERS --- koha-tmpl/intranet-tmpl/prog/en/js/datatables.js | 25 +++++++++++++++++++- .../prog/en/modules/acqui/z3950_search.tt | 2 ++ .../prog/en/modules/cataloguing/z3950_search.tt | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js index 703944e..021b27c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js @@ -493,4 +493,27 @@ jQuery.extend( jQuery.fn.dataTableExt.oSort, { "title-string-desc": function ( a, b ) { return ((a < b) ? 1 : ((a > b) ? -1 : 0)); } -} ); \ No newline at end of file +} ); +/* Plugin to allow sorting by removing prefix between NSB and NSE characters +* +* Ex: "\x88The \x89Lord of the rings" sorted with "L" +* Mainly used in BNF catalogue +* +* In DataTables config: +* "aoColumns": [ +* { "sType": "nsb-nse" }, +* ] +*/ +jQuery.extend( jQuery.fn.dataTableExt.oSort, { + "nsb-nse-pre": function ( a ) { + var pattern = new RegExp("\x88.*\x89"); + return a.replace(pattern, "").toLowerCase(); + }, + "nsb-nse-asc": function ( a, b ) { + return jQuery.fn.dataTableExt.oSort['string-asc'](a, b); + }, + "nsb-nse-desc": function ( a, b ) { + return jQuery.fn.dataTableExt.oSort['string-desc'](a, b); + } +} ); + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/z3950_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/z3950_search.tt index 7ce0222..698f4b0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/z3950_search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/z3950_search.tt @@ -15,7 +15,9 @@ var resultst = $("#resultst").dataTable($.extend(true, {}, dataTablesDefaults, { "aoColumnDefs": [ { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false }, + { "aTargets": [ 1 ], "sType": "nsb-nse" }, ], + "aaSorting": [[ 1, "asc" ]], "bPaginate": false } ) ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt index 7e5b0af..d8d370e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_search.tt @@ -33,6 +33,7 @@ $(document).ready(function(){ "sDom": 't', "aoColumnDefs": [ { "aTargets": [ -1,-2,-3 ], "bSortable": false, "bSearchable": false }, + { "aTargets": [ 1 ], "sType": "nsb-nse" }, ], "aaSorting": [[ 1, "asc" ]], "bPaginate": false -- 1.7.10.4