diff --git a/og_vocab.module b/og_vocab.module index 54173ec..0c0aef0 100644 --- a/og_vocab.module +++ b/og_vocab.module @@ -1172,6 +1172,20 @@ function og_vocab_form_taxonomy_form_vocabulary_alter(&$form, $form_state) { '#description' => t('The type of form element you would like to present to the user when creating this field in the %type type.', array('%type' => $bundle_label)), ) + $states; + // Add any custom widget settings form for this field. + $field = field_info_field($og_vocab->field_name); + $widget = array( + 'type' => $og_vocab->settings['widget_type'], + 'settings' => !empty($og_vocab->settings['widget']['settings']) ? $og_vocab->settings['widget']['settings'] : array(), + ); + $instance = array('widget' => $widget); + $widget_type = field_info_widget_types($instance['widget']['type']); + // Add additional widget settings from the widget module. + $additions = module_invoke($widget_type['module'], 'field_widget_settings_form', $field, $instance); + if (is_array($additions)) { + $form['og_vocab']["$entity_type:$bundle"]['widget']['settings'] = $additions; + } + $form['og_vocab']["$entity_type:$bundle"]['required'] = array( '#type' => 'checkbox', '#title' => t('Required field'), @@ -1319,6 +1333,16 @@ function og_vocab_form_taxonomy_form_vocabulary_submit(&$form, $form_state) { foreach ($settings as $setting) { $og_vocab->settings[$setting] = $form_state['values']['og_vocab'][$key][$setting]; } + + // Now save any specific custom widget settings. + if (!empty($form_state['values']['og_vocab'][$key]['widget']['settings'])) { + foreach ($form_state['values']['og_vocab'][$key]['widget']['settings'] as $index => $settings) { + foreach ($settings as $setting_key => $setting) { + $og_vocab->settings['widget']['settings'][$index][$setting_key] = $form_state['values']['og_vocab'][$key]['widget']['settings'][$index][$setting_key]; + } + } + } + $og_vocab->field_name = $form_state['values']['og_vocab'][$key]['field_name']; $og_vocab->save(); }