Chris@0: $entity) { Chris@0: $tips = $entity->getTips(); Chris@0: $count = count($tips); Chris@0: $list_items = []; Chris@0: foreach ($tips as $index => $tip) { Chris@0: if ($output = $tip->getOutput()) { Chris@0: $attributes = [ Chris@0: 'class' => [ Chris@0: 'tip-module-' . Html::cleanCssIdentifier($entity->getModule()), Chris@0: 'tip-type-' . Html::cleanCssIdentifier($tip->getPluginId()), Chris@0: 'tip-' . Html::cleanCssIdentifier($tip->id()), Chris@0: ], Chris@0: ]; Chris@0: $list_items[] = [ Chris@0: 'output' => $output, Chris@0: 'counter' => [ Chris@0: '#type' => 'container', Chris@0: '#attributes' => [ Chris@0: 'class' => [ Chris@0: 'tour-progress', Chris@0: ], Chris@0: ], Chris@0: '#children' => t('@tour_item of @total', ['@tour_item' => $index + 1, '@total' => $count]), Chris@0: ], Chris@0: '#wrapper_attributes' => $tip->getAttributes() + $attributes, Chris@0: ]; Chris@0: } Chris@0: } Chris@0: // If there is at least one tour item, build the tour. Chris@0: if ($list_items) { Chris@0: end($list_items); Chris@0: $key = key($list_items); Chris@0: $list_items[$key]['#wrapper_attributes']['data-text'] = t('End tour'); Chris@0: $build[$entity_id] = [ Chris@0: '#theme' => 'item_list', Chris@0: '#items' => $list_items, Chris@0: '#list_type' => 'ol', Chris@0: '#attributes' => [ Chris@0: 'id' => 'tour', Chris@0: 'class' => [ Chris@0: 'hidden', Chris@0: ], Chris@0: ], Chris@0: '#cache' => [ Chris@0: 'tags' => $entity->getCacheTags(), Chris@0: ], Chris@0: ]; Chris@0: } Chris@0: } Chris@0: // If at least one tour was built, attach the tour library. Chris@0: if ($build) { Chris@0: $build['#attached']['library'][] = 'tour/tour'; Chris@0: } Chris@0: return $build; Chris@0: } Chris@0: Chris@0: }