From 0ca766e9c965b50921e098128a08c713f477f11b Mon Sep 17 00:00:00 2001 From: jekkos Date: Wed, 25 Sep 2019 00:17:55 +0200 Subject: [PATCH] Trigger validation when creating items in bulk (#2521) --- application/views/items/form.php | 262 ++++++++++++++++--------------- 1 file changed, 133 insertions(+), 129 deletions(-) diff --git a/application/views/items/form.php b/application/views/items/form.php index 30cab1291..fb58d68bf 100644 --- a/application/views/items/form.php +++ b/application/views/items/form.php @@ -457,8 +457,6 @@ $(document).ready(function() focus: fill_value }); - - var fill_value = function(event, ui) { event.preventDefault(); $("input[name='low_sell_item_id']").val(ui.item.value); @@ -493,136 +491,142 @@ $(document).ready(function() return value.match(/(\||:)/g) == null; }, "lang->line('attributes_attribute_value_invalid_chars'); ?>"); - $('#item_form').validate($.extend({ - submitHandler: function(form, event) { - $(form).ajaxSubmit({ - success: function(response) { - var stay_open = dialog_support.clicked_id() != 'submit'; - if(stay_open) - { - // set action of item_form to url without item id, so a new one can be created - $('#item_form').attr('action', ""); - // use a whitelist of fields to minimize unintended side effects - $(':text, :password, :file, #description, #item_form').not('.quantity, #reorder_level, #tax_name_1, #receiving_quantity, ' + - '#tax_percent_name_1, #category, #reference_number, #name, #cost_price, #unit_price, #taxed_cost_price, #taxed_unit_price, #definition_name, [name^="attribute_links"]').val(''); - // de-select any checkboxes, radios and drop-down menus - $(':input', '#item_form').removeAttr('checked').removeAttr('selected'); - } - else - { - dialog_support.hide(); - } - table_support.handle_submit('', response, stay_open); - }, - dataType: 'json' - }); - }, + var init_validation = function() { + $('#item_form').validate($.extend({ + submitHandler: function(form, event) { + $(form).ajaxSubmit({ + success: function(response) { + var stay_open = dialog_support.clicked_id() != 'submit'; + if(stay_open) + { + // set action of item_form to url without item id, so a new one can be created + $('#item_form').attr('action', ""); + // use a whitelist of fields to minimize unintended side effects + $(':text, :password, :file, #description, #item_form').not('.quantity, #reorder_level, #tax_name_1, #receiving_quantity, ' + + '#tax_percent_name_1, #category, #reference_number, #name, #cost_price, #unit_price, #taxed_cost_price, #taxed_unit_price, #definition_name, [name^="attribute_links"]').val(''); + // de-select any checkboxes, radios and drop-down menus + $(':input', '#item_form').removeAttr('checked').removeAttr('selected'); + } + else + { + dialog_support.hide(); + } + table_support.handle_submit('', response, stay_open); + init_validation(); + }, + dataType: 'json' + }); + }, - errorLabelContainer: '#error_message_box', + errorLabelContainer: '#error_message_box', - rules: - { - name: 'required', - category: 'required', - item_number: - { - required: false, - remote: - { - url: "", - type: 'POST', - data: { - 'item_id' : "item_id; ?>", - 'item_number' : function() - { - return $('#item_number').val(); - }, - } - } - }, - cost_price: - { - required: true, - remote: "" - }, - unit_price: - { - required: true, - remote: "" - }, - $location_detail) - { - ?> - : - { - required: true, - remote: "" - }, - - receiving_quantity: - { - required: true, - remote: "" - }, - reorder_level: - { - required: true, - remote: "" - }, - tax_percent: - { - required: true, - remote: "" - } - }, + rules: + { + name: 'required', + category: 'required', + item_number: + { + required: false, + remote: + { + url: "", + type: 'POST', + data: { + 'item_id' : "item_id; ?>", + 'item_number' : function() + { + return $('#item_number').val(); + }, + } + } + }, + cost_price: + { + required: true, + remote: "" + }, + unit_price: + { + required: true, + remote: "" + }, + $location_detail) + { + ?> + : + { + required: true, + remote: "" + }, + + receiving_quantity: + { + required: true, + remote: "" + }, + reorder_level: + { + required: true, + remote: "" + }, + tax_percent: + { + required: true, + remote: "" + } + }, + + messages: + { + name: "lang->line('items_name_required'); ?>", + item_number: "lang->line('items_item_number_duplicate'); ?>", + category: "lang->line('items_category_required'); ?>", + cost_price: + { + required: "lang->line('items_cost_price_required'); ?>", + number: "lang->line('items_cost_price_number'); ?>" + }, + unit_price: + { + required: "lang->line('items_unit_price_required'); ?>", + number: "lang->line('items_unit_price_number'); ?>" + }, + $location_detail) + { + ?> + : + { + required: "lang->line('items_quantity_required'); ?>", + number: "lang->line('items_quantity_number'); ?>" + }, + + receiving_quantity: + { + required: "lang->line('items_quantity_required'); ?>", + number: "lang->line('items_quantity_number'); ?>" + }, + reorder_level: + { + required: "lang->line('items_reorder_level_required'); ?>", + number: "lang->line('items_reorder_level_number'); ?>" + }, + tax_percent: + { + required: "lang->line('items_tax_percent_required'); ?>", + number: "lang->line('items_tax_percent_number'); ?>" + } + } + }, form_support.error)); + }; + + init_validation(); - messages: - { - name: "lang->line('items_name_required'); ?>", - item_number: "lang->line('items_item_number_duplicate'); ?>", - category: "lang->line('items_category_required'); ?>", - cost_price: - { - required: "lang->line('items_cost_price_required'); ?>", - number: "lang->line('items_cost_price_number'); ?>" - }, - unit_price: - { - required: "lang->line('items_unit_price_required'); ?>", - number: "lang->line('items_unit_price_number'); ?>" - }, - $location_detail) - { - ?> - : - { - required: "lang->line('items_quantity_required'); ?>", - number: "lang->line('items_quantity_number'); ?>" - }, - - receiving_quantity: - { - required: "lang->line('items_quantity_required'); ?>", - number: "lang->line('items_quantity_number'); ?>" - }, - reorder_level: - { - required: "lang->line('items_reorder_level_required'); ?>", - number: "lang->line('items_reorder_level_number'); ?>" - }, - tax_percent: - { - required: "lang->line('items_tax_percent_required'); ?>", - number: "lang->line('items_tax_percent_number'); ?>" - } - } - }, form_support.error)); });