You are here

function active_tags_field_widget_form in Active Tags 7.2

Implements hook_field_widget_form().

File

./active_tags.module, line 31
Active Tags widget for free tagging taxonomies

Code

function active_tags_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $settings = $instance['widget']['settings'];
  $tags = array();
  foreach ($items as $item) {
    $tags[$item['tid']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['tid']);
  }
  $element += array(
    '#type' => 'item',
    '#markup' => '',
    '#element_validate' => array(
      'active_tags_taxonomy_autocomplete_validate',
    ),
  );
  $element['field_terms'] = array(
    '#markup' => theme('active_tags_term_list_remove', array(
      'terms' => $tags,
    )),
  );
  $element['term_entry'] = array(
    '#type' => 'textfield',
    '#default_value' => '',
    '#autocomplete_path' => $settings['autocomplete_path'] . '/' . $field['field_name'],
    '#size' => $settings['size'],
    '#maxlength' => 1024,
    '#attributes' => array(
      'class' => array(
        'at-term-entry',
      ),
    ),
    '#theme_wrappers' => array(),
  );
  $element['add_button'] = array(
    '#type' => 'button',
    '#value' => t('Add'),
    '#attributes' => array(
      'class' => array(
        'at-add-btn',
      ),
    ),
  );
  $element['terms'] = array(
    '#type' => 'hidden',
    '#default_value' => taxonomy_implode_tags($tags),
    '#size' => $settings['size'],
    '#maxlength' => 1024,
    //'#element_validate' => array('active_tags_taxonomy_autocomplete_validate'),
    '#attributes' => array(
      'class' => array(
        'at-terms',
      ),
    ),
    '#theme_wrappers' => array(),
  );
  drupal_add_css(drupal_get_path('module', 'active_tags') . '/active_tags.css');
  drupal_add_js(array(
    'activeTags' => array(
      'mode' => $settings['mode'],
    ),
  ), 'setting');
  drupal_add_js(drupal_get_path('module', 'active_tags') . '/active_tags.js');
  return $element;
}