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

(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc (+9 lines)
Lines 99-103 Link Here
99
                <option value=[% s_o | html %]>[% display_name | $raw %]</option>
99
                <option value=[% s_o | html %]>[% display_name | $raw %]</option>
100
            [% END %]
100
            [% END %]
101
        [% END %]
101
        [% END %]
102
        [% IF Koha.Preference('ExtendedPatronAttributes') %]
103
            [% FOREACH attribute IN ExtendedAttributeTypes.all( staff_searchable => 1 ) %]
104
                [% IF searchfieldstype == "_ATTR_" _ attribute.code %]
105
                    <option value=[% "_ATTR_" _ attribute.code | html %] selected="selected">[% attribute.description | html %]</option>
106
                [% ELSE %]
107
                    <option value=[% "_ATTR_" _ attribute.code | html %]>[% attribute.description | html %]</option>
108
                [% END %]
109
            [% END %]
110
        [% END %]
102
    </select>
111
    </select>
103
[%- END -%]
112
[%- END -%]
(-)a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js (-7 / +17 lines)
Lines 548-554 function buildPatronSearchQuery(term, options) { Link Here
548
548
549
    let q = [];
549
    let q = [];
550
    let leading_wildcard;
550
    let leading_wildcard;
551
    let search_fields;
551
    let search_fields = [];
552
    let patterns = term.split(/[\s,]+/).filter(function (s) { return s.length });
552
    let patterns = term.split(/[\s,]+/).filter(function (s) { return s.length });
553
553
554
    // Bail if no patterns
554
    // Bail if no patterns
Lines 564-572 function buildPatronSearchQuery(term, options) { Link Here
564
        leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : '';
564
        leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : '';
565
    }
565
    }
566
566
567
    let searched_attribute_fields = [];
567
    // Search fields: If search_fields option exists, we use that
568
    // Search fields: If search_fields option exists, we use that
568
    if (typeof options !== 'undefined' && options.search_fields) {
569
    if (typeof options !== 'undefined' && options.search_fields) {
569
        search_fields = expandPatronSearchFields(options.search_fields);
570
        expand_fields = expandPatronSearchFields(options.search_fields);
571
        expand_fields.split('\|').forEach(function (field, i) {
572
            if( field.startsWith('_ATTR_') ){
573
                let attr_field = field.replace("_ATTR_","");
574
                searched_attribute_fields.push( attr_field );
575
            } else {
576
                search_fields.push( field );
577
            }
578
        });
570
    // If not, we use DefaultPatronSearchFields system preference instead
579
    // If not, we use DefaultPatronSearchFields system preference instead
571
    } else {
580
    } else {
572
        search_fields = defaultPatronSearchFields;
581
        search_fields = defaultPatronSearchFields;
Lines 576-582 function buildPatronSearchQuery(term, options) { Link Here
576
    let pattern_subquery_and = [];
585
    let pattern_subquery_and = [];
577
    patterns.forEach(function (pattern, i) {
586
    patterns.forEach(function (pattern, i) {
578
            let pattern_subquery_or = [];
587
            let pattern_subquery_or = [];
579
            search_fields.split('\|').forEach(function (field, i) {
588
            search_fields.forEach(function (field, i) {
580
                pattern_subquery_or.push(
589
                pattern_subquery_or.push(
581
                    { ["me." + field]: { 'like': leading_wildcard + pattern + '%' } }
590
                    { ["me." + field]: { 'like': leading_wildcard + pattern + '%' } }
582
                );
591
                );
Lines 593-601 function buildPatronSearchQuery(term, options) { Link Here
593
        });
602
        });
594
    q.push({ "-and": pattern_subquery_and });
603
    q.push({ "-and": pattern_subquery_and });
595
604
605
596
    // Add full search term for each search field
606
    // Add full search term for each search field
597
    let term_subquery_or = [];
607
    let term_subquery_or = [];
598
    search_fields.split('\|').forEach(function (field, i) {
608
    search_fields.forEach(function (field, i) {
599
        term_subquery_or.push(
609
        term_subquery_or.push(
600
            { ["me." + field]: { 'like': leading_wildcard + term + '%' } }
610
            { ["me." + field]: { 'like': leading_wildcard + term + '%' } }
601
        );
611
        );
Lines 603-615 function buildPatronSearchQuery(term, options) { Link Here
603
    q.push({ "-or": term_subquery_or });
613
    q.push({ "-or": term_subquery_or });
604
614
605
    // Add each pattern for each extended patron attributes
615
    // Add each pattern for each extended patron attributes
606
    if (typeof options !== 'undefined' && options.search_fields == 'standard' && options.extended_attribute_types && extendedPatronAttributes) {
616
    if ( typeof options !== 'undefined' && ( (options.search_fields == 'standard' && options.extended_attribute_types) || searched_attribute_fields ) && extendedPatronAttributes) {
617
        extended_attribute_codes_to_search = (searched_attribute_fields.length > 0) ? searched_attribute_fields : options.extended_attribute_types;
607
        extended_attribute_subquery_and = [];
618
        extended_attribute_subquery_and = [];
608
        patterns.forEach(function (pattern, i) {
619
        patterns.forEach(function (pattern, i) {
609
            let extended_attribute_sub_or = [];
620
            let extended_attribute_sub_or = [];
610
            extended_attribute_sub_or.push({
621
            extended_attribute_sub_or.push({
611
                "extended_attributes.value": { "like": leading_wildcard + pattern + '%' },
622
                "extended_attributes.value": { "like": leading_wildcard + pattern + '%' },
612
                "extended_attributes.code": options.extended_attribute_types
623
                "extended_attributes.code": extended_attribute_codes_to_search
613
            });
624
            });
614
            extended_attribute_subquery_and.push(extended_attribute_sub_or);
625
            extended_attribute_subquery_and.push(extended_attribute_sub_or);
615
        });
626
        });
616
- 

Return to bug 26916