View | Details | Raw Unified | Return to bug 36633
Collapse All | Expand All

(-)a/Koha/REST/Plugin/Query.pm (-15 / +10 lines)
Lines 333-362 according to the following rules: Link Here
333
=cut
333
=cut
334
334
335
sub _build_order_atom {
335
sub _build_order_atom {
336
    my ( $args )   = @_;
336
    my ($args)     = @_;
337
    my $string     = $args->{string};
337
    my $string     = $args->{string};
338
    my $result_set = $args->{result_set};
338
    my $result_set = $args->{result_set};
339
339
340
    my $param = $string;
340
    my $param = $string;
341
    $param =~ s/^(\+|\-|\s)//;
341
    $param =~ s/^(\+|\-|\s)//;
342
    if ( $result_set ) {
342
343
        my $model_param = _from_api_param($param, $result_set);
343
    my $modifier;
344
    ( $param, $modifier ) = split '/', $param;
345
    if ($result_set) {
346
        my $model_param = _from_api_param( $param, $result_set );
344
        $param = $model_param if defined $model_param;
347
        $param = $model_param if defined $model_param;
345
    }
348
    }
346
349
347
    if ( $string =~ m/^\+/ or
350
    my $order = ( $string =~ m/^\+/ or $string =~ m/^\s/ ) ? 'asc' : ( $string =~ m/^\-/ ) ? 'desc' : '';
348
         $string =~ m/^\s/ ) {
351
    if ( $modifier && $modifier eq 'anti-the' ) {
349
        # asc order operator present
352
        return \"REGEXP_REPLACE(LOWER($param), '^(a|an|the)', '') $order";
350
        return { -asc => $param };
351
    }
352
    elsif ( $string =~ m/^\-/ ) {
353
        # desc order operator present
354
        return { -desc => $param };
355
    }
356
    else {
357
        # no order operator present
358
        return $param;
359
    }
353
    }
354
    return $order ? { "-$order" => $param } : $param;
360
}
355
}
361
356
362
=head3 _parse_embed
357
=head3 _parse_embed
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/holdshistory.tt (+1 lines)
Lines 221-226 Link Here
221
                            data: "biblio.title:biblio.subtitle:biblio.medium",
221
                            data: "biblio.title:biblio.subtitle:biblio.medium",
222
                            searchable: true,
222
                            searchable: true,
223
                            orderable: true,
223
                            orderable: true,
224
                            type: 'anti-the',
224
                            render: function (data, type, row, meta) {
225
                            render: function (data, type, row, meta) {
225
                                return $biblio_to_html(row.biblio, { link: 1 });
226
                                return $biblio_to_html(row.biblio, { link: 1 });
226
                            }
227
                            }
(-)a/koha-tmpl/intranet-tmpl/prog/js/datatables.js (-4 / +8 lines)
Lines 648-657 function _dt_default_ajax (params){ Link Here
648
                var orderArray = new Array();
648
                var orderArray = new Array();
649
                order.forEach(function (e,i) {
649
                order.forEach(function (e,i) {
650
                    var order_col      = e.column;
650
                    var order_col      = e.column;
651
                    var order_by       = options.columns[order_col].data;
651
                    var col            = options.columns[order_col];
652
                    order_by           = order_by.split(':');
652
                    var type           = col.type;
653
                    var order_by_modifier = '';
654
                    if ( type && type == 'anti-the' ) {
655
                        order_by_modifier = '/anti-the';
656
                    }
653
                    var order_dir      = e.dir == 'asc' ? '+' : '-';
657
                    var order_dir      = e.dir == 'asc' ? '+' : '-';
654
                    Array.prototype.push.apply(orderArray,order_by.map(x => order_dir + (!x.includes('.')?'me.'+x:x)));
658
                    var order_by       = col.data.split(':').map(x => order_dir + (!x.includes('.')?'me.'+x:x) + order_by_modifier);
659
                    Array.prototype.push.apply(orderArray, order_by);
655
                });
660
                });
656
                dataSet._order_by = orderArray.filter((v, i, a) => a.indexOf(v) === i).join(',');
661
                dataSet._order_by = orderArray.filter((v, i, a) => a.indexOf(v) === i).join(',');
657
            }
662
            }
658
- 

Return to bug 36633