You are here

public function ConfigForm::buildForm in GatherContent 8.4

Same name and namespace in other branches
  1. 8.5 src/Form/ConfigForm.php \Drupal\gathercontent\Form\ConfigForm::buildForm()
  2. 8 src/Form/ConfigForm.php \Drupal\gathercontent\Form\ConfigForm::buildForm()
  3. 8.3 src/Form/ConfigForm.php \Drupal\gathercontent\Form\ConfigForm::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 ConfigFormBase::buildForm

File

src/Form/ConfigForm.php, line 55

Class

ConfigForm
Class ConfigForm.

Namespace

Drupal\gathercontent\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('gathercontent.settings');
  $form['gathercontent_username'] = [
    '#type' => 'email',
    '#title' => $this
      ->t('GatherContent User Email Address'),
    '#description' => $this
      ->t('This is the email address you use to login to GatherContent. Your permissions will determine what accounts, projects and content is available.'),
    '#default_value' => $config
      ->get('gathercontent_username'),
    '#required' => TRUE,
  ];
  $form['gathercontent_api_key'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('GatherContent API key'),
    '#description' => Link::fromTextAndUrl($this
      ->t('Click to find out where you can generate your API Key'), Url::fromUri('https://gathercontent.com/developers/authentication/')),
    '#maxlength' => 64,
    '#size' => 64,
    '#default_value' => $config
      ->get('gathercontent_api_key'),
    '#required' => TRUE,
  ];
  $form['actions']['#type'] = 'actions';
  if (!$form_state
    ->isSubmitted()) {
    $account = $config
      ->get('gathercontent_account');
    if (!empty($account)) {
      $account = unserialize($account);
      $account = array_pop($account);
      $form['current_account'] = [
        '#type' => 'html_tag',
        '#tag' => 'div',
        '#value' => $this
          ->t('Current account is <strong>@account</strong>.', [
          '@account' => $account,
        ]),
      ];
    }
  }
  if ($form_state
    ->isSubmitted()) {

    /** @var \Cheppers\GatherContent\DataTypes\Account[] $data */
    $data = $this->client
      ->accountsGet();
    $accounts = [];
    if (!is_null($data)) {
      foreach ($data as $account) {
        $accounts[$account->id] = $account->name;
      }
      $form['account'] = [
        '#type' => 'select',
        '#options' => $accounts,
        '#title' => $this
          ->t('Select GatherContent Account'),
        '#required' => TRUE,
        '#description' => $this
          ->t('Multiple accounts will be listed if the GatherContent
       user has more than one account. Please select the account you want to
       import and update content from.'),
      ];
    }
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => is_null($data) ? $this
        ->t('Verify') : $this
        ->t('Save'),
      '#button_type' => 'primary',
    ];
  }
  else {
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => !empty($account) ? $this
        ->t('Change GatherContent Account') : $this
        ->t('Verify'),
      '#button_type' => 'primary',
    ];
  }
  if (!empty($account)) {
    $form['actions']['reset'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Reset credentials'),
    ];
  }

  // By default, render the form using theme_system_config_form().
  $form['#theme'] = 'system_config_form';
  return $form;
}