View source  
  <?php
namespace Drupal\tmgmt_smartling_context_debug\Form;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class TmgmtSmartlingContextDebugForm extends FormBase {
  
  public function getFormId() {
    return 'tmgmt_smartling_context_debug_form';
  }
  
  public function buildForm(array $form, FormStateInterface $form_state) {
    $form['do_direct_output'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Show the context snapshot of the page in a browser.'),
      '#description' => 'If checked, the context will be shown on this page instead of being sent to Smartling.',
      '#default_value' => FALSE,
      '#required' => FALSE,
    ];
    $form['filename'] = [
      '#type' => 'textfield',
      '#title' => t('FileName'),
      '#description' => t('FileName of a Job'),
      '#default_value' => '',
      '#size' => 25,
      '#maxlength' => 25,
    ];
    $form['url'] = [
      '#type' => 'textfield',
      '#title' => t('URL'),
      '#description' => t('URL of the page to extract the context for'),
      '#default_value' => '',
      '#size' => 25,
      '#maxlength' => 125,
      '#required' => TRUE,
    ];
    $form['actions']['#type'] = 'actions';
    $form['actions']['submit'] = array(
      '#type' => 'submit',
      '#value' => $this
        ->t('Test context'),
      '#button_type' => 'primary',
    );
    return $form;
  }
  
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $settings = \Drupal::config('tmgmt.translator.smartling')
      ->get('settings');
    $filename = $form_state
      ->getValue('filename');
    $url = $form_state
      ->getValue('url');
    $current_user_name = \Drupal::currentUser()
      ->getAccountName();
    
    $context_uploader = \Drupal::getContainer()
      ->get('tmgmt_smartling.utils.context.uploader');
    if ($form_state
      ->getValue('do_direct_output')) {
      $html = $context_uploader
        ->getContextualizedPage($url, $settings, TRUE);
      \Drupal::getContainer()
        ->get('tmgmt_smartling.utils.context.user_auth')
        ->switchUser($current_user_name, TRUE);
      die($html);
    }
    elseif ($context_uploader
      ->isReadyAcceptContext($filename, $settings)) {
      $response = $context_uploader
        ->upload($url, $filename, $settings);
      \Drupal::getContainer()
        ->get('tmgmt_smartling.utils.context.user_auth')
        ->switchUser($current_user_name, TRUE);
      $message = print_r($response, TRUE);
      \Drupal::logger('tmgmt_smartling_context_debug')
        ->info($message);
      drupal_set_message('Smartling response: ' . $message);
    }
  }
}