You are here

function advanced_link_process in Advanced Link 6

Process the advanced_link type element before displaying the field.

Build the form element. When creating a form using FAPI #process, note that $element['#value'] is already set.

The $fields array is in $form['#field_info'][$element['#field_name']].

1 string reference to 'advanced_link_process'
advanced_link_elements in ./advanced_link.module
Implements hook_elements().

File

./advanced_link.module, line 311
Defines simple advanced_link widget.

Code

function advanced_link_process($element, $edit, $form_state, $form) {
  $urls_allowed = $element['#field']['widget']['urls_allowed'];
  $field_name = $element['#field_name'];
  $type_name = $element['#type_name'];
  $field = $form['#field_info'][$element['#field_name']];
  $delta = $element['#delta'];
  $element['url'] = array(
    '#type' => 'textfield',
    '#maxlength' => LINK_URL_MAX_LENGTH,
    '#title' => t('URL'),
    // Increase width of field.
    '#attributes' => array(
      'style' => 'width: 100%',
    ),
    '#description' => $element['#description'],
    '#required' => $delta == 0 && $field['url'] !== 'optional' ? $element['#required'] : FALSE,
    '#default_value' => isset($element['#value']['url']) ? $element['#value']['url'] : NULL,
  );
  if ($urls_allowed != ADVANCED_LINK_EXTERNAL && advanced_link_autocomplete_access()) {
    $element['url']['#autocomplete_path'] = 'advanced_link/autocomplete/' . $element['#field_name'] . '/' . $element['#type_name'];
  }
  if ($field['title'] != 'none' && $field['title'] != 'value') {
    if (isset($field['widget']['title_list']) && trim($field['widget']['title_list'])) {
      $final_array_word = advanced_link_extract_allowed_values($field['widget']['title_list']);
      $element['title'] = array(
        '#type' => 'select',
        '#options' => $final_array_word,
        '#title' => t('Title'),
        '#required' => $delta == 0 && $field['title'] == 'required' ? $field['required'] : FALSE,
        '#default_value' => isset($element['#value']['title']) ? $element['#value']['title'] : NULL,
      );
    }
    else {
      $element['title'] = array(
        '#type' => 'textfield',
        '#maxlength' => $element['#field']['widget']['title_lenght'],
        '#title' => t('Title'),
        '#required' => $delta == 0 && $field['title'] == 'required' ? $field['required'] : FALSE,
        '#default_value' => isset($element['#value']['title']) ? $element['#value']['title'] : NULL,
      );
    }
  }

  // Initialize field attributes as an array if it is not an array yet.
  if (!is_array($field['attributes'])) {
    $field['attributes'] = array();
  }

  // Add default atrributes.
  $field['attributes'] += _advanced_link_default_attributes();
  $attributes = isset($element['#value']['attributes']) ? $element['#value']['attributes'] : $field['attributes'];
  if (!empty($field['attributes']['target']) && $field['attributes']['target'] == LINK_TARGET_USER) {
    $element['attributes']['target'] = array(
      '#type' => 'checkbox',
      '#title' => t('Open URL in a New Window'),
      '#return_value' => LINK_TARGET_NEW_WINDOW,
      '#default_value' => $attributes['target'],
    );
  }
  return $element;
}