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

(-)a/admin/searchengine/elasticsearch/mappings.pl (-7 / +15 lines)
Lines 61-74 if ( $op eq 'edit' ) { Link Here
61
61
62
    eval {
62
    eval {
63
63
64
        Koha::SearchFields->search()->delete;
65
64
        for my $i ( 0 .. scalar(@field_name) - 1 ) {
66
        for my $i ( 0 .. scalar(@field_name) - 1 ) {
65
            my $field_name = $field_name[$i];
67
            my $field_name = $field_name[$i];
66
            my $field_label = $field_label[$i];
68
            my $field_label = $field_label[$i];
67
            my $field_type = $field_type[$i];
69
            my $field_type = $field_type[$i];
68
            my $search_field = Koha::SearchFields->find( { name => $field_name }, { key => 'name' } );
70
            my $search_field = Koha::SearchFields->find_or_create({
69
            $search_field->label($field_label);
71
                name => $field_name,
70
            $search_field->type($field_type);
72
                label => $field_label,
71
            $search_field->store;
73
                type => $field_type
74
            });
72
        }
75
        }
73
76
74
        Koha::SearchMarcMaps->search( { marc_type => $marc_type, } )->delete;
77
        Koha::SearchMarcMaps->search( { marc_type => $marc_type, } )->delete;
Lines 133-143 for my $index_name (qw| biblios authorities |) { Link Here
133
    push @indexes, { index_name => $index_name, mappings => \@mappings };
136
    push @indexes, { index_name => $index_name, mappings => \@mappings };
134
}
137
}
135
138
136
my $search_fields = $schema->resultset('SearchField')->search;
139
my $all_search_fields = Koha::SearchFields->search( {}, { order_by => ['name'] } )->unblessed;
137
my @all_search_fields = $search_fields->search( {}, { order_by => ['name'] } );
140
foreach my $search_field ( @$all_search_fields ) {
141
    $search_field->{is_mapped} = $schema->resultset('SearchMarcToField')->search(
142
        { search_field_id => $search_field->{id} })->count;
143
}
144
145
138
$template->param(
146
$template->param(
139
    indexes           => \@indexes,
147
    indexes           => \@indexes,
140
    all_search_fields => \@all_search_fields,
148
    all_search_fields => $all_search_fields,
141
    messages          => \@messages,
149
    messages          => \@messages,
142
);
150
);
143
151
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt (-4 / +48 lines)
Lines 23-28 Link Here
23
        return new_line;
23
        return new_line;
24
    }
24
    }
25
25
26
    function valid_line( line, index_name ) {
27
        if ( index_name == 'search_fields' ) {
28
            var name = $(line).find('input[data-id="search_field_name"]').val();;
29
            var label = $(line).find('input[data-id="search_field_name"]').val();;
30
            if ( name.length > 0 && label.length > 0 ) {
31
                return true;
32
            }
33
            return false;
34
        }
35
36
        var marc_field = $(line).find('input[data-id="mapping_marc_field"]').val();
37
        if ( marc_field.length > 0 ) {
38
            return true;
39
        }
40
        return false;
41
    }
42
26
    $(document).ready(function() {
43
    $(document).ready(function() {
27
        $("#tabs").tabs();
44
        $("#tabs").tabs();
28
        $('.delete').click(function() {
45
        $('.delete').click(function() {
Lines 36-43 Link Here
36
            var table = $(this).closest('table');
53
            var table = $(this).closest('table');
37
            var index_name   = $(table).attr('data-index_name');
54
            var index_name   = $(table).attr('data-index_name');
38
            var line = $(this).closest("tr");
55
            var line = $(this).closest("tr");
39
            var marc_field = $(line).find('input[data-id="mapping_marc_field"]').val();
56
            if ( valid_line(line, index_name) ) {
40
            if ( marc_field.length > 0 ) {
41
                var new_line = clone_line( line );
57
                var new_line = clone_line( line );
42
                new_line.appendTo($('table[data-index_name="'+index_name+'"]>tbody'));
58
                new_line.appendTo($('table[data-index_name="'+index_name+'"]>tbody'));
43
                $('.delete').click(function() {
59
                $('.delete').click(function() {
Lines 120-131 a.add, a.delete { Link Here
120
                [% END %]
136
                [% END %]
121
            </ul>
137
            </ul>
122
            <div id="search_fields">
138
            <div id="search_fields">
123
              <table class="search_fields">
139
              <table class="search_fields" data-index_name="search_fields">
124
                <thead>
140
                <thead>
125
                  <tr>
141
                  <tr>
126
                    <th>Name</th>
142
                    <th>Name</th>
127
                    <th>Label</th>
143
                    <th>Label</th>
128
                    <th>Type</th>
144
                    <th>Type</th>
145
                    <th></th>
129
                  </tr>
146
                  </tr>
130
                </thead>
147
                </thead>
131
                <tbody>
148
                <tbody>
Lines 165-173 a.add, a.delete { Link Here
165
                          [% END %]
182
                          [% END %]
166
                        </select>
183
                        </select>
167
                      </td>
184
                      </td>
185
                      <td>
186
                        [% IF search_field.is_mapped %]
187
                          <a class="btn btn-default btn-xs disabled delete" style="cursor: pointer;"><i class="fa fa-trash"></i> Delete</a>
188
                        [% ELSE %]
189
                          <a class="btn btn-default btn-xs delete" style="cursor: pointer;"><i class="fa fa-trash"></i> Delete</a>
190
                        [% END %]
191
                      </td>
168
                    </tr>
192
                    </tr>
169
                  [% END %]
193
                  [% END %]
170
                </tbody>
194
                </tbody>
195
                <tfoot>
196
                  <tr>
197
                    <td>
198
                      <input type="text" data-id="search_field_name"/>
199
                    </td>
200
                    <td>
201
                      <input type="text" data-id="search_field_label"/>
202
                    </td>
203
                    <td>
204
                      <select data-id="search_field_type">
205
                        <option value=""></option>
206
                        <option value="string">String</option>
207
                        <option value="date">Date</option>
208
                        <option value="number">Number</option>
209
                        <option value="boolean">Boolean</option>
210
                        <option value="sum">Sum</option>
211
                      </select>
212
                    </td>
213
                    <td><a class="btn btn-default btn-xs add"><i class="fa fa-plus"></i> Add</a></td>
214
                  </tr>
215
                </tfoot>
171
              </table>
216
              </table>
172
            </div>
217
            </div>
173
            [% FOREACH index IN indexes %]
218
            [% FOREACH index IN indexes %]
174
- 

Return to bug 20388