ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
multi_column_drilldown_in_modal.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
6 
8 
21 function multi_column_drilldown_in_modal()
22 {
23  global $DIC;
25  $f = $DIC->ui()->factory();
27  $r = $DIC->ui()->renderer();
28  $refinery = $DIC->refinery();
29  $request_wrapper = $DIC->http()->wrapper()->query();
30 
31  $url = $_SERVER['REQUEST_URI'];
32 
33  if ($request_wrapper->has('content')) {
34  renderModalAsync(
35  $request_wrapper->retrieve(
36  'content',
37  $refinery->kindlyTo()->string()
38  )
39  );
40  }
41 
42  $drilldown_modal = $f->modal()->roundtrip(
43  'My Modal',
44  []
45  );
46 
47  $drilldown_modal = $drilldown_modal->withAsyncRenderUrl(
48  $url . '&content=drilldown&replaceSignal=' . $drilldown_modal->getReplaceSignal()->getId()
49  );
50 
51  $button = $f->button()->standard('Open Animals', $drilldown_modal->getShowSignal());
52 
53  return $r->render([
54  $button,
55  $drilldown_modal
56  ]);
57 }
58 
59 function renderModalAsync(string $content): void
60 {
61  global $DIC;
63  $f = $DIC->ui()->factory();
65  $r = $DIC->ui()->renderer();
66  $refinery = $DIC->refinery();
67  $request_wrapper = $DIC->http()->wrapper()->query();
68 
69  $url = $_SERVER['REQUEST_URI'];
70 
71  $signal_id = "";
72  if ($request_wrapper->has('replaceSignal')) {
73  $signal_id = $request_wrapper->retrieve('replaceSignal', $refinery->kindlyTo()->string());
74  }
75  $replace_signal = new ReplaceSignal($signal_id);
76 
77  switch ($content) {
78  case 'image':
79  $image = $f->image()->responsive('assets/ui-examples/images/Image/mountains.jpg', 'Some mountains in the dusk');
80  $replace_signal_with_url = $replace_signal->withAsyncRenderUrl(
81  $url . '&content=drilldown&replaceSignal=' . $replace_signal->getId()
82  );
83  $button = $f->button()->standard('Back to Drilldown', '')->withOnClick($replace_signal_with_url);
84  echo $r->renderAsync(
85  $f->modal()->roundtrip(
86  'My Modal',
87  [$image]
88  )->withActionButtons([$button])
89  );
90  exit;
91  default:
92  $ico = $f->symbol()->icon()->standard('', '')->withSize('small')->withAbbreviation('+');
93  $button = $f->button()->bulky($ico->withAbbreviation('>'), 'Modal', '')
94  ->withOnClick($replace_signal->withAsyncRenderUrl($url . '&content=image&replaceSignal=' . $replace_signal->getId()));
95 
96  $uri = new \ILIAS\Data\URI('https://ilias.de');
97  $link = $f->link()->bulky($ico->withAbbreviation('>'), 'Link', $uri);
98  $divider = $f->divider()->horizontal();
99 
100  $items = [
101  $f->menu()->sub('Switzerland', [
102  $f->menu()->sub('Riverine Amphipod', [$button, $link]),
103  $f->menu()->sub('Wildcat', [
104  $f->menu()->sub('European Wildcat', [$button, $link]),
105  $f->menu()->sub('African Wildcat', [$button, $link, $divider, $link])
106  ]),
107  $button,
108  $link
109  ]),
110 
111  $f->menu()->sub('Germany', [
112  $f->menu()->sub('Otter', [$button, $link]),
113  $f->menu()->sub('Mole', [$button, $link]),
114  $divider,
115  $f->menu()->sub('Deer', [$button, $link])
116  ])
117  ];
118 
119  echo $r->renderAsync(
120  $f->modal()->roundtrip(
121  'My Modal',
122  [$f->menu()->drilldown('Animal of the year', $items)]
123  )
124  );
125  exit;
126  }
127 }
$url
Definition: shib_logout.php:63
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10
global $DIC
Definition: shib_login.php:25
$r