diff --git a/taxonomy_manager.module b/taxonomy_manager.module
index 99acdb4..119f1cf 100755
--- a/taxonomy_manager.module
+++ b/taxonomy_manager.module
@@ -1001,7 +1001,7 @@ function taxonomy_manager_tree_validate($form, &$form_state) {
else if (is_numeric($form['#value'])) {
$selected[$form['#value']] = $form['#value'];
}
-
+
$vid = $form['#vid'];
foreach ($selected as $tid) {
if (!_taxonomy_manager_tree_term_valid($tid, $vid)) {
@@ -1061,6 +1061,150 @@ function _taxonomy_manager_term_get_lang($tid) {
}
/**
+ * Implements hook_field_widget_info().
+ *
+ * Allows the taxonomy_manager_tree form element to be used within Drupal 7 Field API.
+ */
+function taxonomy_manager_field_widget_info() {
+ return array(
+ 'taxonomy_manager_tree' => array(
+ 'label' => t('Taxonomy manager tree'),
+ 'description' => t('Allows selection of terms via a dynamic tree of checkboxes, where parent
+ terms can be expanded and child terms loaded via AJAX.'),
+ 'field types' => array('taxonomy_term_reference'),
+ 'behaviors' => array(
+ 'multiple values' => FIELD_BEHAVIOR_CUSTOM,
+ ),
+ ),
+ );
+}
+
+/**
+ * Implements hook_field_widget_form().
+ *
+ * Describes a form widget built on the taxonomy_manager_tree type form element, usable with
+ * taxonomy term reference fields via Field API.
+ *
+ * @param $form
+ * @param $form_state
+ * @param $field
+ * @param $instance
+ * @param $langcode
+ * @param $items
+ * @param $delta
+ * @param $element
+ *
+ * @return array a form definition
+ */
+function taxonomy_manager_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $default = array();
+ if (is_array($items) && !empty($items)) {
+ foreach($items as $item) {
+ $default[$item['tid']] = $item['tid'];
+ }
+ }
+ $element += array(
+ '#type' => 'taxonomy_manager_tree',
+ '#vid' => substr($field['settings']['allowed_values'][0]['vocabulary'], 11),
+ '#required' => FALSE,
+ '#tree_is_required' => $field['settings']['required'],
+ '#multiple' => ($field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED) ?
+ TRUE: FALSE,
+ '#pager' => TRUE,
+ '#title' => $instance['label'],
+ '#description' => $instance['description'],
+ '#default_value' => $default,
+ '#terms_to_expand' => $default,
+ );
+ if (isset($element['#title']) && !empty($element['#title'])) {
+ $element['#prefix'] = '' . t($element['#title']) . '
';
+ unset($element['#title']);
+ }
+ if (isset($element['#description']) && !empty($element['#description'])) {
+ $element['#suffix'] = '