Lines 90-101
if ( $op eq 'cud-edit' ) {
Link Here
|
90 |
|
90 |
|
91 |
$schema->storage->txn_begin; |
91 |
$schema->storage->txn_begin; |
92 |
|
92 |
|
93 |
my @field_name = $input->multi_param('search_field_name'); |
93 |
my @field_name = $input->multi_param('search_field_name'); |
94 |
my @field_label = $input->multi_param('search_field_label'); |
94 |
my @field_label = $input->multi_param('search_field_label'); |
95 |
my @field_type = $input->multi_param('search_field_type'); |
95 |
my @field_type = $input->multi_param('search_field_type'); |
96 |
my @field_weight = $input->multi_param('search_field_weight'); |
96 |
my @field_weight = $input->multi_param('search_field_weight'); |
97 |
my @field_staff_client = $input->multi_param('search_field_staff_client'); |
97 |
my @field_staff_client = $input->multi_param('search_field_staff_client'); |
98 |
my @field_opac = $input->multi_param('search_field_opac'); |
98 |
my @field_opac = $input->multi_param('search_field_opac'); |
99 |
|
99 |
|
100 |
my @index_name = $input->multi_param('mapping_index_name'); |
100 |
my @index_name = $input->multi_param('mapping_index_name'); |
101 |
my @search_field_name = $input->multi_param('mapping_search_field_name'); |
101 |
my @search_field_name = $input->multi_param('mapping_search_field_name'); |
Lines 112-177
if ( $op eq 'cud-edit' ) {
Link Here
|
112 |
Koha::SearchFields->search()->delete; |
112 |
Koha::SearchFields->search()->delete; |
113 |
|
113 |
|
114 |
for my $i ( 0 .. scalar(@field_name) - 1 ) { |
114 |
for my $i ( 0 .. scalar(@field_name) - 1 ) { |
115 |
my $field_name = $field_name[$i]; |
115 |
my $field_name = $field_name[$i]; |
116 |
my $field_label = $field_label[$i]; |
116 |
my $field_label = $field_label[$i]; |
117 |
my $field_type = $field_type[$i]; |
117 |
my $field_type = $field_type[$i]; |
118 |
my $field_weight = $field_weight[$i]; |
118 |
my $field_weight = $field_weight[$i]; |
119 |
my $field_staff_client = $field_staff_client[$i]; |
119 |
my $field_staff_client = $field_staff_client[$i]; |
120 |
my $field_opac = $field_opac[$i]; |
120 |
my $field_opac = $field_opac[$i]; |
121 |
|
121 |
|
122 |
my $search_field = Koha::SearchFields->find_or_create({ |
122 |
my $search_field = Koha::SearchFields->find_or_create( |
123 |
name => $field_name, |
123 |
{ |
124 |
label => $field_label, |
124 |
name => $field_name, |
125 |
type => $field_type, |
125 |
label => $field_label, |
126 |
}); |
126 |
type => $field_type, |
|
|
127 |
} |
128 |
); |
127 |
|
129 |
|
128 |
if (!length($field_weight)) { |
130 |
if ( !length($field_weight) ) { |
129 |
$search_field->weight(undef); |
131 |
$search_field->weight(undef); |
130 |
} |
132 |
} elsif ( $field_weight <= 0 || !looks_like_number($field_weight) ) { |
131 |
elsif ($field_weight <= 0 || !looks_like_number($field_weight)) { |
|
|
132 |
push @errors, { type => 'error', code => 'invalid_field_weight', 'weight' => $field_weight }; |
133 |
push @errors, { type => 'error', code => 'invalid_field_weight', 'weight' => $field_weight }; |
133 |
} |
134 |
} else { |
134 |
else { |
|
|
135 |
$search_field->weight($field_weight); |
135 |
$search_field->weight($field_weight); |
136 |
} |
136 |
} |
137 |
$search_field->staff_client($field_staff_client ? 1 : 0); |
137 |
$search_field->staff_client( $field_staff_client ? 1 : 0 ); |
138 |
$search_field->opac($field_opac ? 1 : 0); |
138 |
$search_field->opac( $field_opac ? 1 : 0 ); |
139 |
|
139 |
|
140 |
my $facet_order = first { $faceted_field_names[$_] eq $field_name } 0 .. $#faceted_field_names; |
140 |
my $facet_order = first { $faceted_field_names[$_] eq $field_name } 0 .. $#faceted_field_names; |
141 |
$search_field->facet_order(defined $facet_order ? $facet_order + 1 : undef); |
141 |
$search_field->facet_order( defined $facet_order ? $facet_order + 1 : undef ); |
142 |
$search_field->store; |
142 |
$search_field->store; |
143 |
} |
143 |
} |
144 |
|
144 |
|
145 |
Koha::SearchMarcMaps->search( { marc_type => $marc_type, } )->delete; |
145 |
Koha::SearchMarcMaps->search( { marc_type => $marc_type, } )->delete; |
146 |
my @facetable_fields = Koha::SearchEngine::Elasticsearch->get_facetable_fields(); |
146 |
my @facetable_fields = Koha::SearchEngine::Elasticsearch->get_facetable_fields(); |
147 |
my @facetable_field_names = map { $_->name } @facetable_fields; |
147 |
my @facetable_field_names = map { $_->name } @facetable_fields; |
148 |
|
148 |
|
149 |
my $mandatory_before = Koha::SearchFields->search({mandatory=>1})->count; |
149 |
my $mandatory_before = Koha::SearchFields->search( { mandatory => 1 } )->count; |
150 |
my $mandatory_after = 0; |
150 |
my $mandatory_after = 0; |
151 |
my %seen_fields; |
151 |
my %seen_fields; |
152 |
for my $i ( 0 .. scalar(@index_name) - 1 ) { |
152 |
for my $i ( 0 .. scalar(@index_name) - 1 ) { |
153 |
my $index_name = $index_name[$i]; |
153 |
my $index_name = $index_name[$i]; |
154 |
my $search_field_name = $search_field_name[$i]; |
154 |
my $search_field_name = $search_field_name[$i]; |
155 |
my $mapping_marc_field = $mapping_marc_field[$i]; |
155 |
my $mapping_marc_field = $mapping_marc_field[$i]; |
156 |
my $mapping_facet = $mapping_facet[$i]; |
156 |
my $mapping_facet = $mapping_facet[$i]; |
157 |
$mapping_facet = ( grep { $_ eq $search_field_name } @facetable_field_names ) ? $mapping_facet : 0; |
157 |
$mapping_facet = ( grep { $_ eq $search_field_name } @facetable_field_names ) ? $mapping_facet : 0; |
158 |
my $mapping_suggestible = $mapping_suggestible[$i]; |
158 |
my $mapping_suggestible = $mapping_suggestible[$i]; |
159 |
my $mapping_sort = $mapping_sort[$i]; |
159 |
my $mapping_sort = $mapping_sort[$i]; |
160 |
my $mapping_search = $mapping_search[$i]; |
160 |
my $mapping_search = $mapping_search[$i]; |
161 |
my $mapping_filter = $mapping_filter[$i]; |
161 |
my $mapping_filter = $mapping_filter[$i]; |
162 |
|
162 |
|
163 |
my $search_field = Koha::SearchFields->find({ name => $search_field_name }, { key => 'name' }); |
163 |
my $search_field = Koha::SearchFields->find( { name => $search_field_name }, { key => 'name' } ); |
164 |
$mandatory_after++ if $search_field->mandatory && !defined $seen_fields{$search_field_name}; |
164 |
$mandatory_after++ if $search_field->mandatory && !defined $seen_fields{$search_field_name}; |
165 |
$seen_fields{$search_field_name} = 1; |
165 |
$seen_fields{$search_field_name} = 1; |
166 |
|
166 |
|
167 |
# TODO Check mapping format |
167 |
# TODO Check mapping format |
168 |
$mapping_marc_field =~ s/\s//g; |
168 |
$mapping_marc_field =~ s/\s//g; |
169 |
|
169 |
|
170 |
my $marc_field = Koha::SearchMarcMaps->find_or_create({ |
170 |
my $marc_field = Koha::SearchMarcMaps->find_or_create( |
171 |
index_name => $index_name, |
171 |
{ |
172 |
marc_type => $marc_type, |
172 |
index_name => $index_name, |
173 |
marc_field => $mapping_marc_field |
173 |
marc_type => $marc_type, |
174 |
}); |
174 |
marc_field => $mapping_marc_field |
|
|
175 |
} |
176 |
); |
175 |
$search_field->add_to_search_marc_maps( |
177 |
$search_field->add_to_search_marc_maps( |
176 |
$marc_field, |
178 |
$marc_field, |
177 |
{ |
179 |
{ |
Lines 185-192
if ( $op eq 'cud-edit' ) {
Link Here
|
185 |
} |
187 |
} |
186 |
push @errors, { type => 'error', code => 'missing_mandatory_fields' } if $mandatory_after < $mandatory_before; |
188 |
push @errors, { type => 'error', code => 'missing_mandatory_fields' } if $mandatory_after < $mandatory_before; |
187 |
}; |
189 |
}; |
188 |
if ($@ || @errors) { |
190 |
if ( $@ || @errors ) { |
189 |
push @errors, { type => 'error', code => 'error_on_update', message => $@, }; # FIXME $@ can be empty but @errors |
191 |
push @errors, |
|
|
192 |
{ type => 'error', code => 'error_on_update', message => $@, }; # FIXME $@ can be empty but @errors |
190 |
$schema->storage->txn_rollback; |
193 |
$schema->storage->txn_rollback; |
191 |
} else { |
194 |
} else { |
192 |
push @messages, { type => 'message', code => 'success_on_update' }; |
195 |
push @messages, { type => 'message', code => 'success_on_update' }; |