You are here

function opigno_learning_path_get_step_list_aside in Opigno Learning path 3.x

Same name and namespace in other branches
  1. 8 opigno_learning_path.module \opigno_learning_path_get_step_list_aside()

Returns step list for page aside area.

1 call to opigno_learning_path_get_step_list_aside()
opigno_learning_path_preprocess_region in ./opigno_learning_path.module
Implements hook_preprocess_region().

File

./opigno_learning_path.module, line 746
Contains opigno_learning_path.module.

Code

function opigno_learning_path_get_step_list_aside() {
  $group_type = opigno_learning_path_get_group_type();
  $steps = [];
  $route = \Drupal::routeMatch();
  if (($entity = $route
    ->getParameter('group')) !== NULL) {

    /** @var \Drupal\group\Entity\GroupInterface $entity */
    $args = [
      'group' => $entity
        ->id(),
    ];
    $home_link = [
      '#type' => 'container',
      '#attributes' => [
        'class' => [
          'mb-4',
        ],
      ],
      'link' => Link::createFromRoute(t('Home'), 'entity.group.canonical', $args, [
        'attributes' => [
          'class' => [
            'btn',
            'btn-rounded',
            'd-flex',
          ],
        ],
      ])
        ->toRenderable(),
    ];
    $description_link = Link::createFromRoute(t('Description'), 'entity.group.edit_form', $args)
      ->toRenderable();
    $lp_manager_link = Link::createFromRoute(t('Learning Path Manager'), 'opigno_group_manager.manager.index', $args)
      ->toRenderable();
    $modules_link = Link::createFromRoute(t('Modules'), 'opigno_learning_path.learning_path_courses', $args)
      ->toRenderable();
    $activities_link = Link::createFromRoute(t('Activities'), 'opigno_learning_path.learning_path_modules', $args)
      ->toRenderable();
    $members_link = Link::createFromRoute(t('Members'), 'opigno_learning_path.membership.overview', $args)
      ->toRenderable();
  }
  elseif (($entity = $route
    ->getParameter('opigno_module')) !== NULL) {

    /** @var \Drupal\opigno_module\Entity\OpignoModule $entity */
    $args = [
      'opigno_module' => $entity
        ->id(),
    ];
    $description_link = Link::createFromRoute(t('Description'), 'opigno_module.edit', $args)
      ->toRenderable();
    $activities_link = Link::createFromRoute(t('Activities'), 'opigno_module.modules', $args)
      ->toRenderable();
    $activities_bank_link = Link::createFromRoute(t('Activities bank'), 'opigno_module.activities_bank', $args)
      ->toRenderable();
    $home_link = [];
    $lp_manager_link = [];
    $modules_link = [];
    $members_link = [];
  }
  else {
    $description_link = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => t('Description'),
    ];
    $lp_manager_link = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => t('Learning Path Manager'),
    ];
    $modules_link = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => t('Modules'),
    ];
    $activities_link = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => t('Activities'),
    ];
    $activities_bank_link = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => t('Activities bank'),
    ];
    $members_link = [
      '#type' => 'html_tag',
      '#tag' => 'span',
      '#value' => t('Members'),
    ];
    $home_link = [];
  }
  if ($group_type === 'learning_path') {
    $steps = [
      1 => $description_link,
      2 => $lp_manager_link,
      3 => $modules_link,
      4 => $activities_link,
      5 => $members_link,
    ];
    $user = \Drupal::currentUser();

    /** @var \Drupal\group\Entity\Group $group */
    $group = $route
      ->getParameter('group');
    if (isset($group) && !$group
      ->access('update', $user)) {
      unset($steps[1]);
      unset($steps[2]);
      unset($steps[3]);
      unset($steps[4]);
    }
    if (isset($group) && !$group
      ->access('administer members', $user)) {
      unset($steps[5]);
    }
  }
  elseif ($group_type == 'opigno_course') {
    $steps = [
      1 => $description_link,
      2 => $modules_link,
      3 => $activities_link,
    ];
  }
  elseif ($group_type == 'opigno_module') {
    $steps = [
      1 => $description_link,
      2 => $activities_link,
      3 => $activities_bank_link,
    ];
  }
  elseif ($group_type == 'opigno_class') {
    $steps = [
      1 => $description_link,
      2 => $members_link,
    ];
  }
  $current_step = opigno_learning_path_get_current_step();
  if (isset($steps[$current_step])) {
    $steps[$current_step]['#wrapper_attributes']['class'][] = 'active';
  }
  return [
    '#type' => 'container',
    'home_link' => $home_link,
    [
      '#type' => 'container',
      '#attributes' => [
        'class' => [
          'step-list-aside-wrapper',
          'content-box',
        ],
      ],
      [
        '#type' => 'html_tag',
        '#tag' => 'h2',
        '#value' => t('Manage'),
        '#attributes' => [
          'class' => 'content-box__title',
        ],
      ],
      [
        '#theme' => 'item_list',
        '#list_type' => 'ul',
        '#items' => $steps,
        '#attributes' => [
          'class' => 'list-unstyled step-list-aside',
        ],
      ],
    ],
  ];
}