commit d143f27f7e7395c1b32057da763aa89d99e0b458 Author: ijortengab Date: Wed Sep 3 18:23:52 2014 +0700 configuration per entity type per bundle diff --git a/numbered_multivalue_fields.module b/numbered_multivalue_fields.module index 929db43..df021fd 100755 --- a/numbered_multivalue_fields.module +++ b/numbered_multivalue_fields.module @@ -79,22 +79,11 @@ function numbered_multivalue_fields_field_list() { */ function numbered_multivalue_fields_preprocess_field_multiple_value_form(&$variables) { // Give token here, to pass from preprocess theme_table. - $element = &$variables['element']; - $field_multivalue = $element['#cardinality'] > 1 || $element['#cardinality'] == FIELD_CARDINALITY_UNLIMITED; - - // Load Numbered Field list. - $numbered_field_list = numbered_multivalue_fields_field_list(); - - // If field is within the field list then use our - // numbered theme else use the default. - $numbered = FALSE; - if (in_array($element['#field_name'], $numbered_field_list)) { - $numbered = TRUE; - } - if ($field_multivalue && $numbered) { + $element = &$variables['element']; + if ($element['#cardinality'] > 1 || $element['#cardinality'] == FIELD_CARDINALITY_UNLIMITED) { foreach (element_children($element) as $key) { - if (is_numeric($key)) { - $element[$key]['value']['#post_render'][] = 'numbered_multivalue_fields_token'; + if (is_numeric($key) && isset($element[$key]['#numbered_multivalue_fields']) && $element[$key]['#numbered_multivalue_fields']) { + $element[$key]['value']['#post_render'][] = 'numbered_multivalue_fields_post_render'; } } } @@ -103,7 +92,7 @@ function numbered_multivalue_fields_preprocess_field_multiple_value_form(&$varia /** * Post process render to give token. */ -function numbered_multivalue_fields_token($html, $element) { +function numbered_multivalue_fields_post_render($html, $element) { $html = '[numbered_multivalue_fields]' . $html; return $html; } @@ -142,3 +131,67 @@ function numbered_multivalue_fields_preprocess_table(&$variables) { $variables['header'][0]['colspan'] = 3; } } + +/** + * Implements hook_field_info_alter(). + */ +function numbered_multivalue_fields_field_info_alter(&$info) { + // Add the 'numbered_multivalue_fields' instance setting to all field types. + foreach ($info as $field_type => &$field_type_info) { + $field_type_info += array('instance_settings' => array()); + $field_type_info['instance_settings'] += array( + 'numbered_multivalue_fields' => '', + ); + } +} + +/** + * Implements hook_form_FORM_ID_alter(). + * + * Add a checkbox for the 'numbered_multivalue_fields' instance settings on the 'Edit + * field instance' form. + */ +function numbered_multivalue_fields_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) { + + $instance = $form['#instance']; + + if (empty($form['#field']['locked'])) { + + $form['instance']['numbered_multivalue_fields'] = array( + '#type' => 'checkbox', + '#title' => t('Numbered multivalue fields'), + '#description' => t("Please add description here."), + '#default_value' => isset($instance['numbered_multivalue_fields']) ? $instance['numbered_multivalue_fields'] : '', + + // Hidden when the 'Number of values' is 1. + '#states' => array( + 'invisible' => array( + ':input[name="field[cardinality]"]' => array('value' => '1'), + ), + ), + ); + + } +} + +/** + * Implements hook_field_widget_form_alter(). + */ +function numbered_multivalue_fields_field_widget_form_alter(&$element, &$form_state, $context) { + // mydebug($element,'$element @ ' . __FUNCTION__, 'f:debug_4'); + // mydebug($form_state,'$form_state @ ' . __FUNCTION__, 'f:debug_4'); + // mydebug($context,'$context @ ' . __FUNCTION__, 'f:debug_4'); + // return; + // $instance = module_exists('i18n_custom_add_another') ? i18n_string_object_translate('field_instance', $context['instance']) : $context['instance']; + + $field = $context['field']; + $instance = $context['instance']; + // mydebug($field['cardinality'],'$cardinality @ ' . __FUNCTION__, 'f:debug_7'); + if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $field['cardinality'] > 1) { + // mydebug($field['cardinality'],'$cardinality @ ' . __FUNCTION__, 'f:debug_8'); + if (!empty($instance['numbered_multivalue_fields'])) { + $element['#numbered_multivalue_fields'] = $instance['numbered_multivalue_fields']; + } + } + // mydebug($element,'$element @ ' . __FUNCTION__, 'f:debug_6'); +} \ No newline at end of file