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

(-)a/Koha/SearchField.pm (+12 lines)
Lines 69-74 sub search_marc_maps { Link Here
69
    return $marc_map_fields;
69
    return $marc_map_fields;
70
}
70
}
71
71
72
=head3 is_mapped
73
74
my $is_mapped = $search_field->is_mapped
75
76
=cut
77
78
sub is_mapped {
79
    my ( $self ) = @_;
80
81
    return $self->search_marc_maps()->count ? 1 : 0;
82
}
83
72
=head3 is_mapped_biblios
84
=head3 is_mapped_biblios
73
85
74
my $is_mapped_biblios = $search_field->is_mapped_biblios
86
my $is_mapped_biblios = $search_field->is_mapped_biblios
(-)a/admin/searchengine/elasticsearch/mappings.pl (-3 / +11 lines)
Lines 97-102 if ( $op eq 'edit' ) { Link Here
97
97
98
    eval {
98
    eval {
99
99
100
        Koha::SearchFields->search()->delete;
101
100
        for my $i ( 0 .. scalar(@field_name) - 1 ) {
102
        for my $i ( 0 .. scalar(@field_name) - 1 ) {
101
            my $field_name = $field_name[$i];
103
            my $field_name = $field_name[$i];
102
            my $field_label = $field_label[$i];
104
            my $field_label = $field_label[$i];
Lines 105-113 if ( $op eq 'edit' ) { Link Here
105
            my $field_staff_client = $field_staff_client[$i];
107
            my $field_staff_client = $field_staff_client[$i];
106
            my $field_opac = $field_opac[$i];
108
            my $field_opac = $field_opac[$i];
107
109
108
            my $search_field = Koha::SearchFields->find( { name => $field_name }, { key => 'name' } );
110
            my $search_field = Koha::SearchFields->find_or_create({
109
            $search_field->label($field_label);
111
                name => $field_name,
110
            $search_field->type($field_type);
112
                label => $field_label,
113
                type => $field_type,
114
            });
111
115
112
            if (!length($field_weight)) {
116
            if (!length($field_weight)) {
113
                $search_field->weight(undef);
117
                $search_field->weight(undef);
Lines 257-262 my @all_search_fields; Link Here
257
while ( my $search_field = $search_fields->next ) {
261
while ( my $search_field = $search_fields->next ) {
258
    my $search_field_unblessed = $search_field->unblessed;
262
    my $search_field_unblessed = $search_field->unblessed;
259
    $search_field_unblessed->{mapped_biblios} = 1 if $search_field->is_mapped_biblios;
263
    $search_field_unblessed->{mapped_biblios} = 1 if $search_field->is_mapped_biblios;
264
265
    $search_field_unblessed->{is_mapped} = $schema->resultset('SearchMarcToField')->search(
266
        { search_field_id => $search_field->id })->count;
267
260
    push @all_search_fields, $search_field_unblessed;
268
    push @all_search_fields, $search_field_unblessed;
261
}
269
}
262
270
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt (-1 / +52 lines)
Lines 58-66 Link Here
58
                } );
58
                } );
59
            }
59
            }
60
        });
60
        });
61
61
        $("#facet_biblios > table").tableDnD( {
62
        $("#facet_biblios > table").tableDnD( {
62
            onDragClass: "dragClass",
63
            onDragClass: "dragClass",
63
        } );
64
        } );
65
66
        $('.add-search-field').click(function() {
67
            var table = $(this).closest('table');
68
            var line = $(this).closest("tr");
69
            var name = $(line).find('input[data-id="search_field_name"]').val();
70
            var label = $(line).find('input[data-id="search_field_name"]').val();
71
            if ( name.length > 0 && label.length > 0 ) {
72
                var new_line = clone_line( line );
73
                new_line.appendTo($('table[data-index_name=search_fields]>tbody'));
74
                $('.delete').click(function() {
75
                    $(this).parents('tr').remove();
76
                });
77
                clean_line(line);
78
79
                $(table).tableDnD( {
80
                    onDragClass: "dragClass",
81
                } );
82
            }
83
        });
64
    });
84
    });
65
</script>
85
</script>
66
<style>
86
<style>
Lines 161-167 a.add, a.delete { Link Here
161
                [% END %]
181
                [% END %]
162
            </ul>
182
            </ul>
163
            <div id="search_fields">
183
            <div id="search_fields">
164
              <table class="search_fields">
184
              <table class="search_fields" data-index_name="search_fields">
165
                <thead>
185
                <thead>
166
                  <tr>
186
                  <tr>
167
                    <th>Name</th>
187
                    <th>Name</th>
Lines 169-174 a.add, a.delete { Link Here
169
                    <th>Type</th>
189
                    <th>Type</th>
170
                    <th colspan="2">Searchable</th>
190
                    <th colspan="2">Searchable</th>
171
                    <th>Weight</th>
191
                    <th>Weight</th>
192
                    <th></th>
172
                  </tr>
193
                  </tr>
173
                  <tr>
194
                  <tr>
174
                    <th colspan=3>&nbsp;</th>
195
                    <th colspan=3>&nbsp;</th>
Lines 264-272 a.add, a.delete { Link Here
264
                            <input type="hidden" name="search_field_weight" value="">
285
                            <input type="hidden" name="search_field_weight" value="">
265
                        [% END %]
286
                        [% END %]
266
                      </td>
287
                      </td>
288
                      <td>
289
                        [% IF search_field.is_mapped %]
290
                          <a class="btn btn-default btn-xs disabled delete" style="cursor: pointer;"><i class="fa fa-trash"></i> Delete</a>
291
                        [% ELSE %]
292
                          <a class="btn btn-default btn-xs delete" style="cursor: pointer;"><i class="fa fa-trash"></i> Delete</a>
293
                        [% END %]
294
                      </td>
295
                      </td>
267
                    </tr>
296
                    </tr>
268
                  [% END %]
297
                  [% END %]
269
                </tbody>
298
                </tbody>
299
                <tfoot>
300
                  <tr>
301
                    <td>
302
                      <input type="text" data-id="search_field_name"/>
303
                    </td>
304
                    <td>
305
                      <input type="text" data-id="search_field_label"/>
306
                    </td>
307
                    <td>
308
                      <select data-id="search_field_type">
309
                        <option value=""></option>
310
                        <option value="string">String</option>
311
                        <option value="date">Date</option>
312
                        <option value="number">Number</option>
313
                        <option value="boolean">Boolean</option>
314
                        <option value="sum">Sum</option>
315
                      </select>
316
                    </td>
317
                    <td><input type="hidden" name="search_field_weight" value=""></td>
318
                    <td><a class="btn btn-default btn-xs add-search-field"><i class="fa fa-plus"></i> Add</a></td>
319
                  </tr>
320
                </tfoot>
270
              </table>
321
              </table>
271
            </div>
322
            </div>
272
            [% FOREACH index IN indexes %]
323
            [% FOREACH index IN indexes %]
(-)a/t/db_dependent/Koha/SearchField.t (-3 / +28 lines)
Lines 19-25 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 8;
22
use Test::More tests => 10;
23
23
24
use Koha::Database;
24
use Koha::Database;
25
use Koha::SearchFields;
25
use Koha::SearchFields;
Lines 38-43 my $sf = $builder->build({ Link Here
38
    source => 'SearchField',
38
    source => 'SearchField',
39
});
39
});
40
40
41
my $search_field = Koha::SearchFields->find($sf->{id});
42
ok(!$search_field->is_mapped, 'Search field 1 is not mapped');
43
44
my $auth_smm = $builder->build({
45
    source => 'SearchMarcMap',
46
    value => {
47
        index_name  => 'authorities',
48
        marc_type   => 'marc21',
49
        marc_field  => '200abde'
50
    }
51
});
52
53
my $auth_smtf = $builder->build({
54
    source => 'SearchMarcToField',
55
    value => {
56
        search_marc_map_id  => $auth_smm->{id},
57
        search_field_id     => $sf->{id}
58
    }
59
});
60
61
$search_field = Koha::SearchFields->find($sf->{id});
62
ok($search_field->is_mapped, 'Search field 1 is mapped');
63
64
Koha::SearchMarcMaps->search({})->delete;
65
$schema->resultset('SearchMarcToField')->search({})->delete;
66
41
my $smm = $builder->build({
67
my $smm = $builder->build({
42
    source => 'SearchMarcMap',
68
    source => 'SearchMarcMap',
43
    value => {
69
    value => {
Lines 72-78 my $smtf2 = $builder->build({ Link Here
72
    }
98
    }
73
});
99
});
74
100
75
my $search_field = Koha::SearchFields->find($sf->{id});
101
$search_field = Koha::SearchFields->find($sf->{id});
76
my $marc_maps = $search_field->search_marc_maps;
102
my $marc_maps = $search_field->search_marc_maps;
77
my $marc_map = $marc_maps->next;
103
my $marc_map = $marc_maps->next;
78
is($marc_maps->count, 1, 'search_marc_maps should return 1 marc map');
104
is($marc_maps->count, 1, 'search_marc_maps should return 1 marc map');
79
- 

Return to bug 20388