trinion_suo-1.0.x-dev/src/Controller/CourseStructureAdminController.php

src/Controller/CourseStructureAdminController.php
<?php

declare(strict_types=1);

namespace Drupal\trinion_suo\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\node\Entity\Node;

final class CourseStructureAdminController extends ControllerBase {

  /**
   * Builds the response.
   */
  public function __invoke(Node $node): array {
    $cours_tid = $node->get('field_ts_kategoriya_kursa')->getValue()[0]['target_id'];
    $categories = \Drupal::service("trinion_suo.course")->getCategories($cours_tid);
    $rows = [];
    foreach ($categories as $cat) {
      $rows[] = [
        'data' => [
          $cat['name'],
          [
            'data' => $cat['term']->getWeight(),
            'class' => ['inline-change'],
            'data-field' => 'weight',
            'id' => 'weight-' . $cat['term']->id()
          ],
          $cat['length'],
          ['colspan' => 7]
        ],
        'data-id' => $cat['term']->id(),
        'data-type' => 'taxonomy_term',
      ];
      foreach ($cat['sub_categories'] as $sub_cat) {
        $rows[] = [
          'data' => [
            [
              'data' => '',
              'class' => ['inline-change'],
              'data-field' => 'category',
              'id' => 'category-' . $sub_cat['term']->id()
            ],
            ['colspan' => 2],
            $sub_cat['name'],
            [
              'data' => $sub_cat['term']->getWeight(),
              'class' => ['inline-change'],
              'data-field' => 'weight',
              'id' => 'weight-' . $sub_cat['term']->id()
            ],
            $sub_cat['length'],
            ['colspan' => 4],
          ],
          'data-id' => $sub_cat['term']->id(),
          'data-type' => 'taxonomy_term',
        ];
        foreach ($sub_cat['lessons'] as $less) {
          if ($less->bundle() == 'urok_kursa') {
            if ($less->get('field_ts_vid_uroka')->getString() == 'Видео')
              $less_type = 'video';
            elseif ($less->get('field_ts_vid_uroka')->getString() == 'Практическое задание')
              $less_type = 'praktika';
            else
              $less_type = 'text';
          }
          else {
            $less_type = 'test';
          }
          $rows[] = [
            'data' => [
              ['colspan' => 3],
              [
                'data' => '',
                'class' => ['inline-change'],
                'data-field' => 'lesson',
                'id' => 'lesson-' . $less->id()
              ],
              ['colspan' => 2],
              $less_type,
              $less->label(),
              [
                'data' => $less->get('field_ts_lesson_number')->getString(),
                'class' => ['inline-change'],
                'data-field' => 'field_ts_lesson_number',
                'id' => 'field_ts_lesson_number-' . $less->id()
              ],
              [
                'data' => $less->hasField('field_ts_length') ? $less->get('field_ts_length')->getString() : 0,
                'class' => [$less->hasField('field_ts_length') ? 'inline-change' : ''],
                'data-field' => 'field_ts_length',
                'id' => 'field_ts_length-' . $less->id()
              ],
            ],
            'data-id' => $less->id(),
            'data-type' => 'node',
          ];
        }
      }
    }

    $build['content'][] = [
      '#theme' => 'table',
      '#header' => ['Категория', 'Вес', 'svg_clock', 'Занятие', 'Вес', 'svg_clock', '', 'Урок', 'Вес', 'svg_clock', ],
      '#rows' => $rows,
      '#attributes' => [
        'border' => 0,
        'class' => ['t-changed-table'],
        'data-course-structure-table' => TRUE,
      ],
    ];

    return $build;
  }

  public function getTitle(Node $node) {
    return $node->label();
  }
}

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

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