diff --git a/computed_field.module b/computed_field.module index c7bff05..5862db3 100644 --- a/computed_field.module +++ b/computed_field.module @@ -61,6 +61,7 @@ function computed_field_field_settings_form($field, $instance, $has_data) { $form = array(); $compute_func = 'computed_field_' . $field['field_name'] . '_compute'; $display_func = 'computed_field_' . $field['field_name'] . '_display'; + $validate_func = 'computed_field_' . $field['field_name'] . '_validate'; $settings = $field['settings']; $form['#element_validate'] = array('computed_field_field_settings_form_validate'); @@ -86,6 +87,21 @@ function computed_field_field_settings_form($field, $instance, $has_data) { '#markup' => t('This field is COMPUTED using @compute_func().', array('@compute_func' => $compute_func)), ); } + + $form['validate'] = array( + '#type' => 'textarea', + '#rows' => 15, + '#title' => t('Code for validation'), + '#default_value' => !empty($settings['validate']) ? $settings['validate'] : '', + '#access' => !function_exists($validate_func), + ); + if (function_exists($validate_func)) { + $form['validate_func'] = array( + '#type' => 'item', + '#markup' => t('This field is VALIDATED using @compute_func().', array('@compute_func' => $validate_func)), + ); + } + $form['display_format'] = array( '#type' => 'textarea', '#title' => t('Display Code (PHP)'), @@ -241,6 +257,21 @@ function computed_field_field_update($entity_type, $entity, $field, $instance, $ } /** + * Implements field hook_field_validate(). + */ +function computed_field_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) { + $validate_func = 'computed_field_'. $field['field_name'] .'_validate'; + if (function_exists($validate_func)) { + $validate_func($entity_type, $entity, $field, $instance, $langcode, &$items); + } + else { + if (isset($field['settings']['validate'])) { + eval($field['settings']['validate']); + } + } +} + +/** * Implements field hook_field_widget_info(). */ function computed_field_field_widget_info() { @@ -395,4 +426,3 @@ function _computed_field_compute_value($entity_type, $entity, $field, $instance, } } } -