public function CourseObjectViewBuilder::build in Course 3.x
Same name and namespace in other branches
- 8.3 src/View/CourseObjectViewBuilder.php \Drupal\course\View\CourseObjectViewBuilder::build()
- 8.2 src/View/CourseObjectViewBuilder.php \Drupal\course\View\CourseObjectViewBuilder::build()
Builds an entity's view; augments entity defaults.
This function is assigned as a #pre_render callback in ::view().
It transforms the renderable array for a single entity to the same structure as if we were rendering multiple entities, and then calls the default ::buildMultiple() #pre_render callback.
Parameters
array $build: A renderable array containing build information and context for an entity view.
Return value
array The updated renderable array.
Overrides EntityViewBuilder::build
See also
\Drupal\Core\Render\RendererInterface::render()
File
- src/
View/ CourseObjectViewBuilder.php, line 12
Class
Namespace
Drupal\course\ViewCode
public function build(array $build) {
$build = parent::build($build);
$courseObject = $build['#course_object'];
// When viewing, we use the current user.
$account = Drupal::currentUser();
$step = array();
$step['id'] = 'course-object-' . $courseObject
->id();
$step['image'] = '';
$step['status'] = '';
if ($courseObject
->access('see', $account)) {
if ($courseObject
->access('take', $account)) {
// User can take this course object.
$step['link'] = $courseObject
->getUrl();
$step['class'][] = 'accessible';
$step['status'] = t('Not started');
// Step is complete.
if ($courseObject
->getFulfillment($account)
->isComplete()) {
$step['class'][] = 'completed';
$step['status'] = t('Complete');
$step['image'] = 'core/misc/icons/73b355/check.svg';
}
elseif ($courseObject
->getFulfillment($account)
->id()) {
$step['status'] = t('In progress');
$step['class'][] = 'in-progress';
$step['image'] = '';
}
if ($courseObject
->getCourse()
->getActive() === $courseObject) {
$step['class'][] = 'active';
}
}
else {
// User cannot access this step yet.
$step['class'] = array(
'not-accessible',
);
$step['status'] = implode('<br/>', $courseObject
->getAccessMessages());
}
if ($courseObject
->isRequired()) {
$step['class'][] = 'required';
}
$step['class'][] = Html::cleanCssIdentifier($courseObject
->getComponent());
$img = !empty($step['image']) ? [
'#theme' => 'image',
'#uri' => $step['image'],
'#alt' => strip_tags($step['status']),
] : [];
$build['course_outline_image'] = $img;
$build['course_outline_link'] = array(
'#markup' => $courseObject
->access('take', $account) ? Link::fromTextAndUrl($courseObject
->getTitle(), $courseObject
->getUrl())
->toString() : $courseObject
->getTitle(),
);
$build['course_outline_status'] = array(
'#markup' => $step['status'],
'#prefix' => '<div>',
'#suffix' => '</div>',
);
// No cache as this list always changes.
$build['#cache']['max-age'] = 0;
}
return $build;
}