You are here

class LingotekSettingsDefaultsForm in Lingotek Translation 3.4.x

Same name and namespace in other branches
  1. 8 src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  2. 8.2 src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  3. 4.0.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  4. 3.0.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  5. 3.1.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  6. 3.2.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  7. 3.3.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  8. 3.5.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  9. 3.6.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  10. 3.7.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm
  11. 3.8.x src/Form/LingotekSettingsDefaultsForm.php \Drupal\lingotek\Form\LingotekSettingsDefaultsForm

Configure text display settings for this page.

Hierarchy

Expanded class hierarchy of LingotekSettingsDefaultsForm

1 file declares its use of LingotekSettingsDefaultsForm
LingotekSetupController.php in src/Controller/LingotekSetupController.php

File

src/Form/LingotekSettingsDefaultsForm.php, line 10

Namespace

Drupal\lingotek\Form
View source
class LingotekSettingsDefaultsForm extends LingotekConfigFormBase {
  protected $defaults_labels = [];
  protected $defaults;
  protected $resources;
  public function init() {
    $config = \Drupal::configFactory()
      ->getEditable('lingotek.settings');
    $this->defaults = $config
      ->get('default');
    $this->resources = $this->lingotek
      ->getResources();

    // Make visible only those options that have more than one choice
    if (count($this->resources['project']) > 1) {
      $this->defaults_labels['project'] = t('Default Project');
    }
    elseif (count($this->resources['project']) == 1) {
      $config
        ->set('default.project', current(array_keys($this->resources['project'])));
    }
    if (count($this->resources['vault']) > 1) {
      $this->defaults_labels['vault'] = t('Default Vault');
    }
    elseif (count($this->resources['vault']) == 1) {
      $config
        ->set('default.vault', current(array_keys($this->resources['vault'])));
    }
    if (count($this->resources['workflow']) > 1) {
      $this->defaults_labels['workflow'] = t('Default Workflow');
    }
    elseif (count($this->resources['workflow']) == 1) {
      $config
        ->set('default.workflow', current(array_keys($this->resources['workflow'])));
    }
    if (count($this->resources['filter']) > 1) {
      $this->defaults_labels['filter'] = t('Default Filter');
      $this->defaults_labels['subfilter'] = t('Default Subfilter');
    }
    else {
      $config
        ->set('default.filter', 'drupal_default');
      $config
        ->set('default.subfilter', 'drupal_default');
    }

    // Set workflow to machine translation every time regardless if there's more than one choice
    $machine_translation = array_search('Machine Translation', $this->resources['workflow']);
    if ($machine_translation) {
      $config
        ->set('default.workflow', $machine_translation);
    }
    $config
      ->save();
  }

  /**
   * {@inheritdoc}
   */
  public function getFormID() {
    return 'lingotek.settings_defaults';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $this
      ->init();
    foreach ($this->defaults_labels as $key => $label) {
      $resources_key = $key === 'subfilter' ? 'filter' : $key;
      asort($this->resources[$resources_key]);
      switch ($key) {
        case 'filter':
        case 'subfilter':
          $options = [
            'project_default' => $this
              ->t('Use Project Default'),
            'drupal_default' => $this
              ->t('Use Drupal Default'),
          ] + $this->resources[$resources_key];
          break;
        case 'workflow':
          $options = [
            'project_default' => $this
              ->t('Project Default'),
          ] + $this->resources[$resources_key];
          break;
        default:
          $options = $this->resources[$key];
          break;
      }
      $form[$key] = [
        '#title' => $label,
        '#type' => 'select',
        '#options' => $options,
        '#required' => TRUE,
      ];
      if (isset($this->defaults[$key])) {
        $form[$key]['#default_value'] = $this->defaults[$key];
      }
    }
    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this
      ->configFactory()
      ->getEditable('lingotek.settings');
    $form_values = $form_state
      ->getValues();
    foreach ($this->defaults_labels as $key => $label) {
      $config
        ->set('default.' . $key, $form_values[$key]);
    }
    $config
      ->save();

    // Since the lingotek module is newly installed, assign the callback
    $this
      ->setCallbackUrl($config);
    $form_state
      ->setRedirect('lingotek.dashboard');
    parent::submitForm($form, $form_state);
  }

  /**
   * @param $config
   */
  protected function setCallbackUrl($config) {
    $new_callback_url = \Drupal::urlGenerator()
      ->generateFromRoute('lingotek.notify', [], [
      'absolute' => TRUE,
    ]);
    $config
      ->set('account.callback_url', $new_callback_url);
    $new_response = $this->lingotek
      ->setProjectCallBackUrl($config
      ->get('default.project'), $new_callback_url);
    $config
      ->save();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigFormBaseTrait::config protected function Retrieves a configuration object.
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
FormBase::$configFactory protected property The config factory. 3
FormBase::$requestStack protected property The request stack. 1
FormBase::$routeMatch protected property The route match.
FormBase::configFactory protected function Gets the config factory for this form. 3
FormBase::container private function Returns the service container.
FormBase::currentUser protected function Gets the current user.
FormBase::getRequest protected function Gets the request object.
FormBase::getRouteMatch protected function Gets the route match.
FormBase::logger protected function Gets the logger for a specific channel.
FormBase::redirect protected function Returns a redirect response object for the specified route.
FormBase::resetConfigFactory public function Resets the configuration factory.
FormBase::setConfigFactory public function Sets the config factory for this form.
FormBase::setRequestStack public function Sets the request stack object to use.
FormBase::validateForm public function Form validation handler. Overrides FormInterface::validateForm 72
FormInterface::getFormId public function Returns a unique string identifying the form. 264
LingotekConfigFormBase::$lingotek protected property
LingotekConfigFormBase::$linkGenerator protected property The link generator.
LingotekConfigFormBase::$urlGenerator protected property The URL generator.
LingotekConfigFormBase::create public static function Instantiates a new instance of this class. Overrides ConfigFormBase::create 5
LingotekConfigFormBase::getEditableConfigNames public function Gets the configuration names that will be editable. Overrides ConfigFormBaseTrait::getEditableConfigNames
LingotekConfigFormBase::__construct public function Constructs a \Drupal\lingotek\Form\LingotekConfigFormBase object. Overrides ConfigFormBase::__construct 5
LingotekSettingsDefaultsForm::$defaults protected property
LingotekSettingsDefaultsForm::$defaults_labels protected property
LingotekSettingsDefaultsForm::$resources protected property
LingotekSettingsDefaultsForm::buildForm public function Form constructor. Overrides ConfigFormBase::buildForm
LingotekSettingsDefaultsForm::getFormID public function
LingotekSettingsDefaultsForm::init public function 1
LingotekSettingsDefaultsForm::setCallbackUrl protected function
LingotekSettingsDefaultsForm::submitForm public function Form submission handler. Overrides ConfigFormBase::submitForm 1
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.