214 : array {
216
218 $badge->setId($badge_item['id']);
219 $badge->setImageRid($badge_item['image_rid']);
220 $badge->setImage($badge_item['image']);
221
222 $images = [
223 'rendered' => null,
224 'large' => null,
225 ];
226 $image_src = $this->badge_image_service->getImageFromResourceId($badge);
227 if ($image_src !== '') {
228 $images[
'rendered'] = $this->
renderer->render(
229 $this->
factory->image()->responsive(
230 $image_src,
231 $badge_item['title']
232 )
233 );
234
235 $image_src_large = $this->badge_image_service->getImageFromResourceId(
236 $badge,
238 );
239 if ($image_src_large !== '') {
240 $images[
'large'] = $this->
factory->image()->responsive(
241 $image_src_large,
242 $badge_item['title']
243 );
244 }
245 }
246
247 $container_title_parts = [
249 $this->
factory->symbol()->icon()->custom(
250 ilObject::_getIcon($badge_item[
'parent_id'],
'big', $badge_item[
'parent_type'] ??
''),
251 $this->lng->txt('obj_' . ($badge_item['parent_type'] ?? ''))
252 )
253 ),
254 'title' => $badge_item['parent_title'] ?? '',
255 ];
256
257 $sortable_container_title_parts = [
258 'title' => $badge_item['parent_title'] ?? ''
259 ];
260 if ($badge_item['deleted']) {
261 $container_title_parts['suffix'] = $container_deleted_title_part;
262 $sortable_container_title_parts['suffix'] = $container_deleted_title_part;
263 } else {
264 if (isset($this->has_access_by_parent_cache[$badge_item['parent_id']])) {
265 $has_access = $this->has_access_by_parent_cache[$badge_item['parent_id']] ?? false;
266 $ref_id = $this->first_ref_id_for_parent_cache[$badge_item[
'parent_id']] ??
null;
267 } else {
269 $ref_id = array_shift($ref_ids);
270 $this->first_ref_id_for_parent_cache[$badge_item[
'parent_id']] =
$ref_id;
272 $this->has_access_by_parent_cache[$badge_item['parent_id']] = $has_access;
273 }
274
275 if ($has_access) {
276 $container_title_parts[
'title'] = $this->
renderer->render(
277 new Standard(
278 $container_title_parts['title'],
279 (string) new URI(
280 ilLink::_getLink(
282 $badge_item['parent_type'] ?? ''
283 )
284 )
285 )
286 );
287 } else {
288 $container_title_parts['suffix'] = $container_deleted_title_part;
289 $sortable_container_title_parts['suffix'] = $container_deleted_title_part;
290 }
291 }
292
294 $images['large'],
295 $badge_item['title'],
296 [
297 'active' => $badge_item[
'active'] ? $this->
lng->txt(
'yes') : $this->lng->txt(
'no'),
298 'type' => $record['type'],
299 'container' => implode(' ', \array_slice($container_title_parts, 1, null, true)),
300 ]
301 );
302
303 return [
304 'id' => $badge_item['id'],
305 'active' => (bool) $badge_item['active'],
306 'type' => $record['type'],
308 $images['rendered'],
309 $modal
310 ) . ' ') : '',
311 'title' => implode('', [
314 ]),
315 'title_sortable' => $badge_item['title'],
316 'container' => implode(' ', $container_title_parts),
317 'container_sortable' => implode(' ', $sortable_container_title_parts),
318 ];
319 }
renderShyButton(string $label, Modal $modal)
constructModal(?Image $badge_image, string $badge_title, array $badge_properties=[])
renderModal(Modal $modal)
static _getIcon(int $obj_id=0, string $size="big", string $type="", bool $offline=false)
Get icon for repository item.
static _getAllReferences(int $id)
get all reference ids for object ID