3 declare(strict_types=1);
52 $factory = $DIC->ui()->factory();
54 $get_request =
$http->wrapper()->query();
55 $data_factory = new \ILIAS\Data\Factory();
56 $refinery_factory = new \ILIAS\Refinery\Factory($data_factory, $DIC->language());
58 $example_uri = $data_factory->uri((
string)
$http->request()->getUri());
59 $base_url_builder =
new URLBuilder($example_uri);
60 [$node_id_url_builder, $node_id_parameter] = $base_url_builder->acquireParameter(explode(
'\\', __NAMESPACE__),
"node_id");
61 [$process_form_url_builder ,$process_form_parameter] = $base_url_builder->acquireParameter(explode(
'\\', __NAMESPACE__),
"process");
66 if ($get_request->has($node_id_parameter->getName())) {
67 $parent_node_id = $get_request->retrieve(
68 $node_id_parameter->getName(),
69 $refinery_factory->kindlyTo()->string(),
72 $node_generator = $node_retrieval->getNodes(
73 $factory->input()->field()->node(),
74 $factory->symbol()->icon(),
79 foreach ($node_generator as $node) {
85 ->withHeader(
'Content-Type',
'text/html; charset=utf-8')
86 ->withBody(Streams::ofString($html))
88 $http->sendResponse();
92 $input = $factory->input()->field()->treeMultiSelect(
94 "select multiple nodes",
95 "you can open the select input by clicking the button above.",
98 $form = $factory->input()->container()->form()->standard(
99 (
string) $process_form_url_builder->withParameter($process_form_parameter,
'1')->buildURI(),
104 if ($get_request->has($process_form_parameter->getName())) {
105 $form = $form->withRequest(
$http->request());
106 $data = $form->getData();
108 $data =
'No submitted data yet.';
111 return '<pre>' . print_r(
$data,
true) .
'</pre>' .
$renderer->render($form);
123 public function getNodes(NodeFactory $node_factory, IconFactory $icon_factory, ?
string $parent_id =
null): \
Generator 125 if (
null !== $parent_id) {
132 yield $node_factory->leaf(
'3',
'leaf 3');
136 NodeFactory $node_factory,
137 IconFactory $icon_factory,
140 foreach ($node_ids as $node_id) {
141 yield $node_factory->leaf($node_id,
"dummy leaf node $node_id");
148 $node_factory->branch(
"$parent_id.1",
"branch $parent_id.1",
null,
149 $node_factory->leaf(
"$parent_id.1.1",
"leaf $parent_id.1.1"),
150 $node_factory->leaf(
"$parent_id.1.2",
"leaf $parent_id.1.2"),
151 $node_factory->leaf(
"$parent_id.1.3",
"leaf $parent_id.1.3"),
153 $node_factory->branch(
"$parent_id.2",
"branch $parent_id.2",
null,
154 $node_factory->leaf(
"$parent_id.2.1",
"leaf $parent_id.2.1"),
155 $node_factory->leaf(
"$parent_id.2.2",
"leaf $parent_id.2.2"),
156 $node_factory->leaf(
"$parent_id.2.3",
"leaf $parent_id.2.3"),
158 $node_factory->async($this->getAsyncNodeRenderUrl(
"$parent_id.3"),
"$parent_id.3",
"async branch $parent_id.3"),
159 $node_factory->leaf(
"$parent_id.4",
"leaf $parent_id.4"),
165 return $this->builder->withParameter($this->node_id_parameter, (
string) $node_id)->buildURI();
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This is how a factory for icons looks like.