3 declare(strict_types=1);
19 TOCBuilder::LP_NOT_STARTED =>
"./templates/default/images/scorm/not_attempted.svg",
20 TOCBuilder::LP_IN_PROGRESS =>
"./templates/default/images/scorm/incomplete.svg",
21 TOCBuilder::LP_COMPLETED =>
"./templates/default/images/scorm/completed.svg",
22 TOCBuilder::LP_FAILED =>
"./templates/default/images/scorm/failed.svg" 25 protected $id =
'ls_toc';
37 TOCBuilder::LP_NOT_STARTED =>
'',
38 TOCBuilder::LP_IN_PROGRESS =>
'',
39 TOCBuilder::LP_COMPLETED =>
'',
40 TOCBuilder::LP_FAILED =>
'' 49 $this->ctrl = $il_ctrl;
55 $this->node_icons[TOCBuilder::LP_NOT_STARTED] = $lp_icons->getImagePathNotAttempted();
56 $this->node_icons[TOCBuilder::LP_COMPLETED] = $lp_icons->getImagePathCompleted();
57 $this->node_icons[TOCBuilder::LP_IN_PROGRESS] = $lp_icons->getImagePathInProgress();
58 $this->node_icons[TOCBuilder::LP_FAILED] = $lp_icons->getImagePathFailed();
64 $clone->structure = $clone->addIds(
65 json_decode($json_structure,
true)
67 $clone->buildLookup($clone->structure);
68 $clone->open_nodes = array_keys($clone->nodes);
73 protected function addIds(array $node) : array
77 if (array_key_exists(
'childs', $node)) {
78 foreach ($node[
'childs'] as $idx => $child) {
79 $node[
'childs'][$idx] = $this->
addIds($child);
87 $this->nodes[$node[
'_id']] = $node;
88 if (array_key_exists(
'childs', $node)) {
89 foreach ($node[
'childs'] as $child) {
100 return reset($this->nodes);
108 $parent_node = $this->nodes[$a_parent_node_id];
109 return (array) $parent_node[
'childs'];
117 return $a_node[
'label'];
125 $state = $a_node[
'state'] ?? TOCBuilder::LP_NOT_STARTED;
126 return $this->node_icons[$state];
134 return $a_node[
'_id'];
142 return $this->url_builder->getHref($a_node[
'command'], $a_node[
'parameter']);
150 return !is_null($a_node[
'parameter']);
158 return $a_node[
'current'];
This class provides processing control methods.
__construct(LSUrlBuilder $url_builder, ilCtrl $il_ctrl)
setSkipRootNode($a_val)
Set skip root node.
static getInstance(int $variant=ilLPStatusIcons::ICON_VARIANT_DEFAULT, ?\ILIAS\UI\Renderer $renderer=null, ?\ILIAS\UI\Factory $factory=null)
getChildsOfNode($a_parent_node_id)
__construct(Container $dic, ilPlugin $plugin)
isNodeHighlighted($a_node)
setNodeOnclickEnabled($nodeOnclickEnabled)
withStructure(string $json_structure)