From 045137e6e3793d98c5e5dae4eef0f46b5af881b3 Mon Sep 17 00:00:00 2001 From: Nick Schoonens Date: Tue, 1 Jan 2013 18:09:42 +1000 Subject: [PATCH] Added validation to height, length, weight fields. Changed from system_settings_form to normal form and added submit function to reset rules and commerce shipping cache. Removed stray '.' --- includes/commerce_australia_post.admin.inc | 46 ++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/includes/commerce_australia_post.admin.inc b/includes/commerce_australia_post.admin.inc index 579cfa7..acd3d26 100644 --- a/includes/commerce_australia_post.admin.inc +++ b/includes/commerce_australia_post.admin.inc @@ -87,22 +87,37 @@ function commerce_australia_post_settings_form($form, &$form_state) { .', + ', ); $form['actions']['submit'] = array( '#type' => 'submit', '#value' => t('Save configuration'), ); - return system_settings_form($form); + + return $form; } /* * Implements hook_form_validate(). */ function commerce_australia_post_settings_form_validate($form, &$form_state) { + $values = $form_state['values']; + if (!is_numeric($values['commerce_australia_post_default_package_size_length']) || $values['commerce_australia_post_default_package_size_length'] <= 0) { + form_set_error('commerce_australia_post_default_package_size_length', t('Length must be a positive number.')); + + } + if (!is_numeric($values['commerce_australia_post_default_package_size_width']) || $values['commerce_australia_post_default_package_size_width'] <= 0) { + form_set_error('commerce_australia_post_default_package_size_width', t('Width must be a positive number.')); + + } + if (!is_numeric($values['commerce_australia_post_default_package_size_height']) || $values['commerce_australia_post_default_package_size_height'] <= 0) { + form_set_error('commerce_australia_post_default_package_size_height', t('Height must be a positive number.')); + + } + // Ensure the default package size is less than the maximum $dimensions = array($values['commerce_australia_post_default_package_size_length'], $values['commerce_australia_post_default_package_size_width'], @@ -118,3 +133,30 @@ function commerce_australia_post_settings_form_validate($form, &$form_state) { } } +/* + * Implements hook_form_submit(). + */ +function commerce_australia_post_settings_form_submit($form, &$form_state) { + + $services = variable_get('commerce_australia_post_services', NULL); + + // If the selected services have changed then rebuild caches. + if ($services !== $form_state['values']['commerce_australia_post_services']) { + variable_set('commerce_australia_post_services', $form_state['values']['commerce_australia_post_services']); + + commerce_shipping_services_reset(); + entity_defaults_rebuild(); + rules_clear_cache(TRUE); + menu_rebuild(); + } + + variable_set('commerce_australia_post_api_key', $form_state['values']['commerce_australia_post_api_key']); + variable_set('commerce_australia_post_postal_code', $form_state['values']['commerce_australia_post_postal_code']); + variable_set('commerce_australia_post_default_package_size_length', $form_state['values']['commerce_australia_post_default_package_size_length']); + variable_set('commerce_australia_post_default_package_size_width', $form_state['values']['commerce_australia_post_default_package_size_width']); + variable_set('commerce_australia_post_default_package_size_height', $form_state['values']['commerce_australia_post_default_package_size_height']); + + + + drupal_set_message(t('The Australia Post configuration options have been saved.')); +} -- 1.8.0.2