You are here

class LingotekSetupController in Lingotek Translation 4.0.x

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

Returns responses for lingotek module setup routes.

Hierarchy

Expanded class hierarchy of LingotekSetupController

File

src/Controller/LingotekSetupController.php, line 16

Namespace

Drupal\lingotek\Controller
View source
class LingotekSetupController extends LingotekControllerBase {

  /**
   * Presents a connection page to Lingotek Services
   *
   * @return array
   *   The connection form.
   */
  public function accountPage() {
    if ($this
      ->setupCompleted()) {
      return $this->formBuilder
        ->getForm(LingotekSettingsAccountForm::class);
    }
    return [
      '#type' => 'markup',
      'markup' => $this->formBuilder
        ->getForm(LingotekSettingsConnectForm::class),
    ];
  }
  public function handshake(Request $request) {
    if (Request::METHOD_POST === $request
      ->getMethod()) {
      $body = Json::decode($request
        ->getContent());
      if (isset($body['access_token'])) {
        $accountConfig = \Drupal::configFactory()
          ->getEditable('lingotek.account');
        $accountConfig
          ->set('access_token', $body['access_token']);
        $accountConfig
          ->save();
        $account_info = $this
          ->fetchAccountInfo();
        $this
          ->saveAccountInfo($account_info);
        $this
          ->messenger()
          ->addStatus($this
          ->t('Your account settings have been saved.'));
        $this->logger
          ->notice('Account connected to Lingotek.');
        return new JsonResponse([
          'status' => TRUE,
          'message' => 'Account connected to Lingotek.',
        ]);
      }
      else {
        return new JsonResponse([
          'status' => FALSE,
          'message' => 'Account not connected to Lingotek.',
        ]);
      }
    }
    elseif (Request::METHOD_GET === $request
      ->getMethod()) {

      // Is a GET.
      $accountConfig = \Drupal::config('lingotek.account');
      if ($accountConfig
        ->get('access_token')) {

        // No need to show the username and token if everything worked correctly
        // Just go to the community page
        return $this
          ->redirect('lingotek.setup_community');
      }

      // Is a GET, but don't have the token yet.
      return [
        '#type' => 'markup',
        '#markup' => $this
          ->t('Connecting... Please wait to be redirected'),
        '#attached' => [
          'library' => [
            'lingotek/lingotek.connect',
          ],
        ],
      ];
    }
  }
  public function communityPage() {
    if ($redirect = $this
      ->checkSetup()) {
      return $redirect;
    }
    $communities = $this->lingotek
      ->getCommunities(TRUE);
    if (empty($communities)) {

      // TODO: Log an error that no communities exist.
      return $this
        ->redirect('lingotek.setup_account');
    }
    $accountConfig = \Drupal::configFactory()
      ->getEditable('lingotek.account');
    $accountConfig
      ->set('resources.community', $communities);
    $accountConfig
      ->save();
    if (count($communities) == 1) {

      // No choice necessary. Save and advance to next page.
      $accountConfig
        ->set('default.community', current(array_keys($communities)));
      $accountConfig
        ->save();

      // update resources based on newly selected community
      $this->lingotek
        ->getResources(TRUE);
      return $this
        ->redirect('lingotek.setup_defaults');
    }
    return [
      '#type' => 'markup',
      'markup' => $this->formBuilder
        ->getForm(LingotekSettingsCommunityForm::class),
    ];
  }
  public function defaultsPage() {
    if ($redirect = $this
      ->checkSetup()) {
      return $redirect;
    }
    $resources = $this->lingotek
      ->getResources();

    // No choice necessary. Save and advance to the next page.
    if (count($resources['project']) == 1 && count($resources['vault']) == 1) {
      $accountConfig = \Drupal::configFactory()
        ->getEditable('lingotek.account');
      $accountConfig
        ->set('default.project', current(array_keys($resources['project'])));
      $accountConfig
        ->set('default.vault', current(array_keys($resources['vault'])));
      $default_workflow = array_search('Machine Translation', $resources['workflow']);
      if ($default_workflow === FALSE) {
        $default_workflow = current(array_keys($resources['workflow']));
      }
      $accountConfig
        ->set('default.workflow', $default_workflow);

      // Assign the project callback
      $new_callback_url = \Drupal::urlGenerator()
        ->generateFromRoute('lingotek.notify', [], [
        'absolute' => TRUE,
      ]);
      $accountConfig
        ->set('callback_url', $new_callback_url);
      $accountConfig
        ->save();
      $new_response = $this->lingotek
        ->setProjectCallBackUrl($accountConfig
        ->get('default.project'), $new_callback_url);
      return $this
        ->redirect('lingotek.dashboard');
    }
    return [
      '#type' => 'markup',
      'markup' => $this->formBuilder
        ->getForm(LingotekSettingsDefaultsForm::class),
    ];
  }
  protected function saveToken($token) {
    if (!empty($token)) {
      \Drupal::configFactory()
        ->getEditable('lingotek.account')
        ->set('access_token', $token)
        ->save();
    }
  }
  protected function saveAccountInfo($account_info) {
    if (!empty($account_info)) {
      $accountConfig = \Drupal::configFactory()
        ->getEditable('lingotek.account');
      $accountConfig
        ->set('login_id', $account_info['login_id']);
      $accountConfig
        ->save();
    }
  }
  protected function fetchAccountInfo() {
    return $this->lingotek
      ->getAccountInfo();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route.
ControllerBase::state protected function Returns the state storage service.
LingotekControllerBase::$configFactory protected property The config factory. Overrides ControllerBase::$configFactory
LingotekControllerBase::$formBuilder protected property The form builder. Overrides ControllerBase::$formBuilder
LingotekControllerBase::$languageLocaleMapper protected property The language-locale mapper.
LingotekControllerBase::$logger protected property A logger instance.
LingotekControllerBase::$request protected property A Symfony request instance
LingotekControllerBase::connected public function Checks if site is connected to Lingotek.
LingotekControllerBase::create public static function Instantiates a new instance of this class. Overrides ControllerBase::create 6
LingotekControllerBase::__construct public function Constructs a LingotekControllerBase object. 6
LingotekSetupController::accountPage public function Presents a connection page to Lingotek Services
LingotekSetupController::communityPage public function
LingotekSetupController::defaultsPage public function
LingotekSetupController::fetchAccountInfo protected function
LingotekSetupController::handshake public function
LingotekSetupController::saveAccountInfo protected function
LingotekSetupController::saveToken protected function
LingotekSetupTrait::$lingotek protected property A lingotek connector object
LingotekSetupTrait::checkSetup protected function Verify the Lingotek Translation module has been properly initialized.
LingotekSetupTrait::setupCompleted public function Checks if Lingotek module is completely set up.
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.