cloudwords-8.x-1.x-dev/src/Form/CloudwordsProjectOverviewForm.php

src/Form/CloudwordsProjectOverviewForm.php
<?php

namespace Drupal\cloudwords\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;

class CloudwordsProjectOverviewForm extends FormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'cloudwords_project_overview_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state) {

    $projects = FALSE;
    try {
      $projects = cloudwords_get_api_client()->get_open_projects();
    }
    
      catch (CloudwordsApiException $e) {
    }

//    $existing_ids = db_query("SELECT pid FROM {cloudwords_project} WHERE status NOT IN (:canceled)", [
//      ':canceled' => cloudwords_project_closed_statuses()
//      ])->fetchCol();
    $rows = [];

    if ($projects && $existing_ids) {
      foreach ($projects as $project) {
        if (in_array($project->getId(), $existing_ids)) {
          $params = $project->getParams();

          // Gather target languages. Wrap every 4 languages.
          $langs = [];
          $key = 0;
          foreach ($params['targetLanguages'] as $delta => $lang) {
            if ($delta % 4 === 0) {
              $key++;
            }
            $langs[$key][] = $lang['display'];
          }
          foreach ($langs as $delta => $lang) {
            $langs[$delta] = implode(', ', $langs[$delta]);
          }
//          $target_language = implode('<br />', $langs);
          // @FIXME
          // l() expects a Url object, created from a route name or external URI.
          // $row = array(
          //           'name' => l($params['name'], 'admin/structure/cloudwords/project/' . $params['id']),
          //           'status' => $params['status']['display'],
          //           'source_language' => isset($params['sourceLanguage']) ? $params['sourceLanguage']['display'] : '',
          //           'target_language' => $target_language,
          //         );
          $rows[] = $row;
        }
      }
    }

    $header = [
      ['data' => $this->t('Name'), 'field' => 'name'],
      [
        'data' => $this->t('Status'),
        'field' => 'status',
      ],
      ['data' => $this->t('Source language'), 'field' => 'source_language'],
      [
        'data' => $this->t('Target languages'),
        'field' => 'target_language',
        'sort' => 'desc',
      ],
    ];


    $order = tablesort_get_order($header);
    $sort = tablesort_get_sort($header);

    if (isset($order['sql'])):
      $sql = $order['sql'];
      if ($sort == 'desc') {
        usort($rows, function($a, $b) use($sql) {
          return strip_tags($a[$sql]) > strip_tags($b[$sql]) ? -1 : 1;
        });
      }
      if ($sort == 'asc') {
        usort($rows, function($a, $b) use ($sql) {
          return strip_tags($a[$sql]) < strip_tags($b[$sql]) ? -1 : 1;
        });
      }
    endif;


    $form['table'] = [
      '#theme' => 'table',
      '#header' => $header,
      '#rows' => $rows,
      '#attributes' => [
        'id' => 'cloudwords-project-table'
        ],
      '#empty' => $this->t('No projects available.'),
    ];

    return $form;
  }
  public function validateForm(array &$form, FormStateInterface $form_state) {
    // Validate submitted form data.
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Handle submitted form data.
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc