You are here

public function ShortenShortenForm::buildForm in Shorten URLs 8.2

Same name and namespace in other branches
  1. 8 src/Form/ShortenShortenForm.php \Drupal\shorten\Form\ShortenShortenForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/ShortenShortenForm.php, line 24

Class

ShortenShortenForm
Builds a form which allows shortening of a URL via the UI.

Namespace

Drupal\shorten\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
  $form_state_values = $form_state
    ->getValues();
  $storage =& $form_state
    ->getStorage();
  $form['#attached']['library'][] = 'shorten/shorten';

  // Form elements between ['opendiv'] and ['closediv'] will be refreshed via AHAH on form submission.
  $form['opendiv'] = [
    '#markup' => '<div id="shorten_replace">',
  ];
  if (empty($storage)) {
    $storage = [
      'step' => 0,
    ];
  }
  if (isset($storage['short_url'])) {

    // This whole "step" business keeps the form element from being cached.
    $form['shortened_url_' . $storage['step']] = [
      '#type' => 'textfield',
      '#title' => t('Shortened URL'),
      '#default_value' => $storage['short_url'],
      '#size' => 25,
      '#attributes' => [
        'class' => [
          'shorten-shortened-url',
        ],
      ],
    ];
  }
  $form['url_' . $storage['step']] = [
    '#type' => 'textfield',
    '#title' => t('URL'),
    '#default_value' => '',
    '#required' => TRUE,
    '#size' => 25,
    '#maxlength' => 2048,
    '#attributes' => [
      'class' => [
        'shorten-long-url',
      ],
    ],
  ];

  // Form elements between ['opendiv'] and ['closediv'] will be refreshed via AHAH on form submission.
  $form['closediv'] = [
    '#markup' => '</div>',
  ];
  $last_service = NULL;
  if (isset($storage['service'])) {
    $last_service = $storage['service'];
  }
  $service = _shorten_service_form($last_service);
  if (is_array($service)) {
    $form['service'] = $service;
  }
  $form['shorten'] = [
    '#type' => 'submit',
    '#value' => t('Shorten'),
    '#ajax' => [
      'callback' => 'shorten_save_js',
      'wrapper' => 'shorten_replace',
      'effect' => 'fade',
      'method' => 'replace',
    ],
  ];
  return $form;
}