CourseOutlineList.php in Course 3.x
File
src/Plugin/course/CourseOutline/CourseOutlineList.php
View source
<?php
namespace Drupal\course\Plugin\course\CourseOutline;
use Drupal\Core\Link;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Url;
use Drupal\course\Entity\Course;
use Drupal\course\Entity\CourseObject;
use Drupal\course\Plugin\CourseOutlinePluginBase;
use function drupal_render;
use function entity_load;
use function entity_view;
use function render;
class CourseOutlineList extends CourseOutlinePluginBase {
function render(Course $course, AccountInterface $account) {
$workflow = array();
$img = NULL;
foreach ($course
->getObjects() as $key => $courseObject) {
if ($courseObject
->access('see', $account)) {
$entity = CourseObject::load($courseObject
->id());
$render_controller = \Drupal::entityTypeManager()
->getViewBuilder('course_object');
$item = $render_controller
->view($entity);
if ($courseObject
->access('take', $account)) {
$item['#class'][] = 'accessible';
if ($courseObject
->getFulfillment($account)
->isComplete()) {
$item['#class'][] = 'completed';
}
elseif ($courseObject
->getFulfillment($account)
->id()) {
$item['#class'][] = 'in-progress';
}
if ($course
->getActive() === $courseObject) {
$item['#class'][] = 'active';
}
}
$courseObject
->overrideOutlineListItem($item);
$workflow[] = $item;
}
}
if ($course
->getEnrollment($account)
->isComplete()) {
$image = [
'#uri' => 'core/misc/icons/73b355/check.svg',
'#alt' => t('An icon'),
'#theme' => 'image',
];
$workflow[] = array(
'#markup' => render($image) . Link::fromTextAndUrl(t('Complete'), Url::fromRoute('course.complete', [
'course' => $course
->id(),
]))
->toString(),
'#id' => 'complete',
);
}
$output = [];
if ($workflow) {
$page = [];
$page['course_outline']['#theme'] = 'item_list';
$page['course_outline']['#attributes'] = [
'class' => [
'course-outline-list',
],
];
$page['course_outline']['#items'] = $workflow;
return $page;
}
return $output;
}
}
Classes
Name |
Description |
CourseOutlineList |
Plugin annotation
@CourseOutline(
id = "course",
label = @Translation("Course"),
description = @Translation("Displays course objects in an HTML list."),
) |