Bug 18316: Fix field weight validation/deletion bug
authorDavid Gustafsson <david.gustafsson@ub.gu.se>
Fri, 1 Jun 2018 09:39:45 +0000 (11:39 +0200)
committerNick Clemens <nick@bywatersolutions.com>
Wed, 7 Nov 2018 22:16:58 +0000 (22:16 +0000)
Signed-off-by: Ere Maijala <ere.maijala@helsinki.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

admin/searchengine/elasticsearch/mappings.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt

index 8650201..e42cc38 100755 (executable)
@@ -72,7 +72,17 @@ if ( $op eq 'edit' ) {
             my $search_field = Koha::SearchFields->find( { name => $field_name }, { key => 'name' } );
             $search_field->label($field_label);
             $search_field->type($field_type);
-            $search_field->weight($field_weight) if looks_like_number($field_weight) && $field_weight > 0;
+
+            if (!length($field_weight)) {
+                $search_field->weight(undef);
+            }
+            elsif ($field_weight <= 0 || !looks_like_number($field_weight)) {
+                push @messages, { type => 'error', code => 'invalid_field_weight', 'weight' => $field_weight };
+            }
+            else {
+                $search_field->weight($field_weight);
+            }
+
             $search_field->store;
         }
 
index bb758bd..ac3facf 100644 (file)
@@ -79,6 +79,8 @@ a.add, a.delete {
         [% CASE 'error_on_delete' %]
           An error occurred when deleting the existing mappings. Nothing has been changed!
           (search field [% m.values.field_name | html %] with mapping [% m.values.marc_field | html %].)
+        [% CASE 'invalid_field_weight' %]
+          Invalid field weight "[% m.weight | html %]", must be a positive decimal number.
         [% CASE 'success_on_update' %]
           Mappings updated successfully.
         [% CASE 'success_on_reset' %]
@@ -200,7 +202,7 @@ a.add, a.delete {
                       </td>
                       <td>
                       [% IF search_field.mapped_biblios %]
-                        <input type="number" step="0.01" min="0" max="999" name="search_field_weight" value="[% search_field.weight %]" />
+                        <input type="number" step="0.01" min="0.01" max="999.99" name="search_field_weight" value="[% search_field.weight %]" />
                       [% ELSE %]
                         <input type="hidden" name="search_field_weight" value="">
                       [% END %]