ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
ILIAS\Badge\ilBadgeImageTemplateTableGUI Class Reference
+ Inheritance diagram for ILIAS\Badge\ilBadgeImageTemplateTableGUI:
+ Collaboration diagram for ILIAS\Badge\ilBadgeImageTemplateTableGUI:

Public Member Functions

 __construct (protected bool $has_write=false)
 
 getRows (DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, ?array $filter_data, ?array $additional_parameters)
 
 getTotalRowCount (?array $filter_data, ?array $additional_parameters)
 Mainly for the purpose of pagination-support, it is important to know about the total number of records available. More...
 
 getColumns ()
 
 renderTable (string $url)
 
- Public Member Functions inherited from ILIAS\UI\Component\Table\DataRetrieval
 getRows (DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, ?array $filter_data, ?array $additional_parameters)
 This is called by the table to retrieve rows; map data-records to rows using the $row_builder e.g. More...
 

Private Member Functions

 getRecords ()
 
 getActions (URLBuilder $url_builder, URLBuilderToken $action_parameter_token, URLBuilderToken $row_id_token)
 

Private Attributes

readonly Factory $factory
 
readonly Renderer $renderer
 
readonly ILIAS Refinery Factory $refinery
 
readonly ServerRequestInterface RequestInterface $request
 
readonly Services $http
 
readonly ilLanguage $lng
 
readonly ilGlobalTemplateInterface $tpl
 
array $cached_records = null
 

Detailed Description

Definition at line 41 of file class.ilBadgeImageTemplateTableGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::__construct ( protected bool  $has_write = false)

Definition at line 53 of file class.ilBadgeImageTemplateTableGUI.php.

References $DIC, factory(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\refinery(), and renderer().

54  {
55  global $DIC;
56  $this->lng = $DIC->language();
57  $this->tpl = $DIC->ui()->mainTemplate();
58  $this->factory = $DIC->ui()->factory();
59  $this->renderer = $DIC->ui()->renderer();
60  $this->refinery = $DIC->refinery();
61  $this->request = $DIC->http()->request();
62  $this->http = $DIC->http();
63  }
factory()
renderer()
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:26
+ Here is the call graph for this function:

Member Function Documentation

◆ getActions()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getActions ( URLBuilder  $url_builder,
URLBuilderToken  $action_parameter_token,
URLBuilderToken  $row_id_token 
)
private
Returns
array<string, >

Definition at line 181 of file class.ilBadgeImageTemplateTableGUI.php.

References factory(), ILIAS\Repository\lng(), and ILIAS\UI\URLBuilder\withParameter().

Referenced by ILIAS\Badge\ilBadgeImageTemplateTableGUI\renderTable().

185  : array {
186  return $this->has_write ? [
187  'badge_image_template_edit' => $this->factory->table()->action()->single(
188  $this->lng->txt('edit'),
189  $url_builder->withParameter($action_parameter_token, 'badge_image_template_editImageTemplate'),
190  $row_id_token
191  ),
192  'badge_image_template_delete' =>
193  $this->factory->table()->action()->standard(
194  $this->lng->txt('delete'),
195  $url_builder->withParameter($action_parameter_token, 'badge_image_template_delete'),
196  $row_id_token
197  )
198  ] : [];
199  }
factory()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getColumns()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getColumns ( )
Returns
array<string, Column>

Definition at line 170 of file class.ilBadgeImageTemplateTableGUI.php.

References factory(), and ILIAS\Repository\lng().

Referenced by ILIAS\Badge\ilBadgeImageTemplateTableGUI\renderTable().

170  : array
171  {
172  return [
173  'image' => $this->factory->table()->column()->text($this->lng->txt('image'))->withIsSortable(false),
174  'title' => $this->factory->table()->column()->text($this->lng->txt('title'))
175  ];
176  }
factory()
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRecords()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getRecords ( )
private
Returns
list<array{id: int, image: string, title: string, title_sortable: string}>

Definition at line 68 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Badge\ilBadgeImageTemplateTableGUI\$cached_records, factory(), ilBadgeImageTemplate\getInstances(), ILIAS\Badge\ilBadgeImage\IMAGE_SIZE_XL, null, and renderer().

Referenced by ILIAS\Badge\ilBadgeImageTemplateTableGUI\getRows(), and ILIAS\Badge\ilBadgeImageTemplateTableGUI\getTotalRowCount().

68  : array
69  {
70  if ($this->cached_records !== null) {
71  return $this->cached_records;
72  }
73 
74  $modal_container = new ModalBuilder();
75  $rows = [];
76 
77  foreach (ilBadgeImageTemplate::getInstances() as $template) {
78  $image = '';
79  $title = $template->getTitle();
80 
81  $image_src = $template->getImageFromResourceId();
82  if ($image_src !== '') {
83  $image_component = $this->factory->image()->responsive(
84  $image_src,
85  $template->getTitle()
86  );
87  $image_html = $this->renderer->render($image_component);
88 
89  $image_src_large = $template->getImageFromResourceId(
91  );
92  $large_image_component = $this->factory->image()->responsive(
93  $image_src_large,
94  $template->getTitle()
95  );
96 
97  $modal = $modal_container->constructModal($large_image_component, $template->getTitle());
98 
99  $image = implode('', [
100  $modal_container->renderShyButton($image_html, $modal),
101  $modal_container->renderModal($modal)
102  ]);
103  $title = $modal_container->renderShyButton($template->getTitle(), $modal);
104  }
105 
106  $rows[] = [
107  'id' => $template->getId(),
108  'image' => $image,
109  'title' => $title,
110  'title_sortable' => $template->getTitle()
111  ];
112  }
113 
114  $this->cached_records = $rows;
115 
116  return $rows;
117  }
factory()
renderer()
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRows()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getRows ( DataRowBuilder  $row_builder,
array  $visible_column_ids,
Range  $range,
Order  $order,
?array  $filter_data,
?array  $additional_parameters 
)

Definition at line 119 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Data\Order\DESC, ILIAS\Data\Range\getLength(), ILIAS\Badge\ilBadgeImageTemplateTableGUI\getRecords(), ILIAS\Data\Range\getStart(), and ILIAS\Data\Order\join().

126  : Generator {
127  $records = $this->getRecords();
128 
129  if ($order) {
130  [$order_field, $order_direction] = $order->join(
131  [],
132  fn($ret, $key, $value) => [$key, $value]
133  );
134 
135  usort($records, static function (array $left, array $right) use ($order_field): int {
136  if ($order_field === 'title') {
137  return \ilStr::strCmp(
138  $left[$order_field . '_sortable'],
139  $right[$order_field . '_sortable']
140  );
141  }
142 
143  return $left[$order_field] <=> $right[$order_field];
144  });
145 
146  if ($order_direction === Order::DESC) {
147  $records = array_reverse($records);
148  }
149  }
150 
151  if ($range) {
152  $records = \array_slice($records, $range->getStart(), $range->getLength());
153  }
154 
155  foreach ($records as $record) {
156  yield $row_builder->buildDataRow((string) $record['id'], $record);
157  }
158  }
const DESC
Definition: Order.php:31
+ Here is the call graph for this function:

◆ getTotalRowCount()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getTotalRowCount ( ?array  $filter_data,
?array  $additional_parameters 
)

Mainly for the purpose of pagination-support, it is important to know about the total number of records available.

Given the nature of a DataTable, which is, opposite to a PresentationTable, rather administrative than explorative, this information will increase user experience quite a bit. However, you may return null, if the call is to costly, but expect the View Control to look a little different in this case.

Make sure that potential filters or user restrictions are being applied to the count.

Implements ILIAS\UI\Component\Table\DataRetrieval.

Definition at line 160 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Badge\ilBadgeImageTemplateTableGUI\getRecords().

163  : ?int {
164  return \count($this->getRecords());
165  }
+ Here is the call graph for this function:

◆ renderTable()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::renderTable ( string  $url)

Definition at line 201 of file class.ilBadgeImageTemplateTableGUI.php.

References $id, $out, ILIAS\Data\Order\ASC, factory(), ILIAS\Badge\ilBadgeImageTemplateTableGUI\getActions(), ILIAS\Badge\ilBadgeImageTemplateTableGUI\getColumns(), ilBadgeImageTemplate\getInstances(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), null, ILIAS\Filesystem\Stream\Streams\ofString(), ILIAS\Repository\refinery(), and renderer().

201  : void
202  {
203  $df = new \ILIAS\Data\Factory();
204 
205  $table_uri = $df->uri($url);
206  $url_builder = new URLBuilder($table_uri);
207  $query_params_namespace = ['tid'];
208 
209  [$url_builder, $action_parameter_token, $row_id_token] = $url_builder->acquireParameters(
210  $query_params_namespace,
211  'table_action',
212  'id',
213  );
214 
215  $table = $this->factory
216  ->table()
217  ->data($this, $this->lng->txt('badge_image_templates'), $this->getColumns())
218  ->withId(self::class)
219  ->withOrder(new Order('title', Order::ASC))
220  ->withActions($this->getActions($url_builder, $action_parameter_token, $row_id_token))
221  ->withRequest($this->request);
222 
223  $out = [$table];
224  $query = $this->http->wrapper()->query();
225  if ($query->has('tid')) {
226  $query_values = $query->retrieve(
227  'tid',
228  $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->string())
229  );
230 
231  $items = [];
232  if ($query_values === ['ALL_OBJECTS']) {
233  foreach (ilBadgeImageTemplate::getInstances() as $template) {
234  if ($template->getId() !== null) {
235  $items[] = $this->factory->modal()->interruptiveItem()->keyValue(
236  (string) $template->getId(),
237  (string) $template->getId(),
238  $template->getTitle()
239  );
240  }
241  }
242  } elseif (\is_array($query_values)) {
243  foreach ($query_values as $id) {
244  $badge = new ilBadgeImageTemplate((int) $id);
245  $items[] = $this->factory->modal()->interruptiveItem()->keyValue(
246  (string) $id,
247  (string) $badge->getId(),
248  $badge->getTitle()
249  );
250  }
251  } else {
252  $badge = new ilBadgeImageTemplate($query_values);
253  $items[] = $this->factory->modal()->interruptiveItem()->keyValue(
254  (string) $badge->getId(),
255  (string) $badge->getId(),
256  $badge->getTitle()
257  );
258  }
259  if ($query->has($action_parameter_token->getName())) {
260  $action = $query->retrieve($action_parameter_token->getName(), $this->refinery->kindlyTo()->string());
261  if ($action === 'badge_image_template_delete') {
262  $this->http->saveResponse(
263  $this->http
264  ->response()
265  ->withBody(
266  Streams::ofString($this->renderer->renderAsync([
267  $this->factory->modal()->interruptive(
268  $this->lng->txt('badge_deletion'),
269  $this->lng->txt('badge_deletion_confirmation'),
270  '#'
271  )->withAffectedItems($items)
272  ]))
273  )
274  );
275  $this->http->sendResponse();
276  $this->http->close();
277  }
278  }
279  }
280 
281  $this->tpl->setContent($this->renderer->render($out));
282  }
factory()
getActions(URLBuilder $url_builder, URLBuilderToken $action_parameter_token, URLBuilderToken $row_id_token)
renderer()
$url
Definition: shib_logout.php:68
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static http()
Fetches the global http state from ILIAS.
$out
Definition: buildRTE.php:24
static ofString(string $string)
Creates a new stream with an initial value.
Definition: Streams.php:41
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

Field Documentation

◆ $cached_records

array ILIAS\Badge\ilBadgeImageTemplateTableGUI::$cached_records = null
private

◆ $factory

readonly Factory ILIAS\Badge\ilBadgeImageTemplateTableGUI::$factory
private

Definition at line 43 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $http

readonly Services ILIAS\Badge\ilBadgeImageTemplateTableGUI::$http
private

Definition at line 47 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $lng

readonly ilLanguage ILIAS\Badge\ilBadgeImageTemplateTableGUI::$lng
private

Definition at line 48 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $refinery

readonly ILIAS Refinery Factory ILIAS\Badge\ilBadgeImageTemplateTableGUI::$refinery
private

Definition at line 45 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $renderer

readonly Renderer ILIAS\Badge\ilBadgeImageTemplateTableGUI::$renderer
private

Definition at line 44 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $request

readonly ServerRequestInterface RequestInterface ILIAS\Badge\ilBadgeImageTemplateTableGUI::$request
private

Definition at line 46 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $tpl

readonly ilGlobalTemplateInterface ILIAS\Badge\ilBadgeImageTemplateTableGUI::$tpl
private

Definition at line 49 of file class.ilBadgeImageTemplateTableGUI.php.


The documentation for this class was generated from the following file: