Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions components/ILIAS/ILIASObject/src/Creation/AddNewItemGUI.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@

namespace ILIAS\ILIASObject\Creation;

use Closure;
use ILIAS\UI\Component\Clickable;
use ILIAS\UI\Component\Divider\Horizontal;
use ILIAS\UI\Component\Menu\Sub;
use ILIAS\UI\Component\Modal\RoundTrip;
use ILIAS\UI\Factory as UIFactory;
use ILIAS\UI\Renderer as UIRenderer;

Expand All @@ -31,18 +36,14 @@
class AddNewItemGUI
{
private \ilLanguage $lng;
private \ilObjectDefinition $obj_definition;
private \ilSetting $settings;
private \ilAccessHandler $access;
private \ilCtrl $ctrl;
private \ilToolbarGUI $toolbar;
private \ilGlobalTemplateInterface $tpl;

private UIFactory $ui_factory;
private UIRenderer $ui_renderer;

/**
* @param array<ILIAS\ILIASObject\Creation\AddNewItemElement> $elements
* @param array<AddNewItemElement> $elements
* The Key MUST contain the object type or the
*/
public function __construct(
Expand All @@ -60,8 +61,9 @@ public function __construct(

/**
* Add new item selection to current page incl. toolbar (trigger) and overlay
* @param ?Closure(RoundTrip):RoundTrip $modal_manipulation_callback
*/
public function render(): void
public function render(?Closure $modal_manipulation_callback = null): void
{
if ($this->elements === []) {
return;
Expand All @@ -74,6 +76,10 @@ public function render(): void
)
);

if ($modal_manipulation_callback !== null) {
$modal = $modal_manipulation_callback($modal);
}

$this->toolbar->addComponent(
$this->ui_factory->button()->primary(
$this->lng->txt('cntr_add_new_item'),
Expand All @@ -87,7 +93,8 @@ public function render(): void
}

/**
* @return array<Component\Menu\Sub|Component\Clickable|Divider\Horizontal>
* @param array<AddNewItemElement> $elements
* @return ?array<Sub|Clickable|Horizontal>
*/
private function buildAddNewItemsMenu(array $elements): ?array
{
Expand All @@ -99,14 +106,14 @@ private function buildAddNewItemsMenu(array $elements): ?array
$element->getLabel(),
$this->buildAddNewItemsMenu($element->getSubElements())
);
continue;
}
if ($element->getType() === AddNewItemElementTypes::Object) {
$sub_menu[] = $this->ui_factory->link()->bulky(
$element->getIcon(),
$element->getLabel(),
$element->getCreationUri()
);
continue;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ public static function _getCommands(): array
global $DIC;

$DIC->language()->loadLanguageModule("itgr");
$commands = array(
array("permission" => "read", "cmd" => "gotoParent", "lang_var" => "", "default" => true),
array("permission" => "write", "cmd" => "listMaterials", "lang_var" => "itgr_assign_materials", "default" => false),
array("permission" => "write", "cmd" => "edit", "lang_var" => "settings", "default" => false)
);

return $commands;
return [
["permission" => "read", "cmd" => "gotoParent", "lang_var" => "", "default" => true],
["permission" => "write", "cmd" => "addOrAssignObject", "lang_var" => "itgr_create_and_assign_object", "default" => false],
["permission" => "write", "cmd" => "listMaterials", "lang_var" => "itgr_assign_materials", "default" => false],
["permission" => "write", "cmd" => "edit", "lang_var" => "settings", "default" => false]
];
}

public function _checkAccess(string $cmd, string $permission, int $ref_id, int $obj_id, ?int $user_id = null): bool
Expand Down
27 changes: 17 additions & 10 deletions components/ILIAS/ItemGroup/classes/class.ilObjItemGroupGUI.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@
*
*********************************************************************/

use ILIAS\ILIASObject\Creation\AddNewItemGUI;
use ILIAS\ItemGroup\StandardGUIRequest;
use ILIAS\ILIASObject\Properties\Translations\TranslationGUI;
use ILIAS\UI\Component\Modal\RoundTrip;

/**
* User Interface class for item groups
Expand Down Expand Up @@ -223,32 +225,37 @@ protected function afterUpdate(): void
parent::afterUpdate();
}

public function listMaterials(): void
public function addOrAssignObject(): void
{
$tree = $this->tree;
$ilTabs = $this->tabs;
$tpl = $this->tpl;
$this->listMaterials(true);
}

public function listMaterials(bool $show_add_or_assign_modal = false): void
{
$this->checkPermission("write");

$ilTabs->activateTab("materials");
$this->tabs->activateTab("materials");

$parent_ref_id = $tree->getParentId($this->object->getRefId());
$parent_ref_id = $this->tree->getParentId($this->object->getRefId());
$parent_type = ilObject::_lookupType($parent_ref_id, true);
$parent_gui_class = 'ilObj' . $this->obj_definition->getClassName($parent_type) . 'GUI';
$parent_gui_class = "ilObj{$this->obj_definition->getClassName($parent_type)}GUI";
$this->ctrl->setParameterByClass($parent_gui_class, 'ref_id', $parent_ref_id);
$gui = new ILIAS\ILIASObject\Creation\AddNewItemGUI(
$gui = new AddNewItemGUI(
$this->buildAddNewItemElements(
$this->getCreatableObjectTypes(),
$parent_gui_class,
$this->object->getRefId()
)
);
$gui->render();
$gui->render(
static fn(RoundTrip $modal) => $show_add_or_assign_modal
? $modal->withOnLoad($modal->getShowSignal())
: $modal
);
$this->ctrl->clearParameterByClass($parent_gui_class, 'ref_id');

$tab = new ilItemGroupItemsTableGUI($this->gui, $this, "listMaterials");
$tpl->setContent($tab->getHTML());
$this->tpl->setContent($tab->getHTML());
}

public function getCreatableObjectTypes(): array
Expand Down
2 changes: 2 additions & 0 deletions lang/ilias_de.lang
Original file line number Diff line number Diff line change
Expand Up @@ -10770,6 +10770,7 @@ itgr#:#itgr_assigned_materials#:#Objekte im Objekteblock
itgr#:#itgr_assignment#:#Eingebunden
itgr#:#itgr_behaviour#:#Verhalten
itgr#:#itgr_behaviour_info#:#Das System merkt sich den Zustand (geöffnet/geschlossen) je Benutzer bis zur Abmeldung (Logout).
itgr#:#itgr_create_and_assign_object#:#Objekt erstellen und zuweisen
itgr#:#itgr_desc_info#:#Die Beschreibung wird bei der Anzeige des Objekteblocks nicht mit ausgegeben.
itgr#:#itgr_edit#:#Einstellungen des Objekteblocks
itgr#:#itgr_expandable_closed#:#Ausklappbar (zunächst geschlossen)
Expand All @@ -10780,6 +10781,7 @@ itgr#:#itgr_list_default#:#Standard
itgr#:#itgr_list_default_info#:#Übernimmt die Einstellung des übergeordneten Containers.
itgr#:#itgr_list_presentation#:#Präsentationsansicht für Inhalte
itgr#:#itgr_materials#:#Objekte
itgr#:#itgr_organise_objects#:#Objekte verwalten
itgr#:#itgr_show_title#:#Titel anzeigen
itgr#:#itgr_show_title_info#:#Der Titel des Objekteblocks wird angezeigt.
itgr#:#itgr_tile#:#Kacheln
Expand Down
4 changes: 3 additions & 1 deletion lang/ilias_en.lang
Original file line number Diff line number Diff line change
Expand Up @@ -10739,11 +10739,12 @@ irss#:#type#:#File Type
irss#:#upload_field_title#:#Selected Files
irss#:#upload_modal_title#:#Add Files
itgr#:#itgr_always_open#:#Always Open
itgr#:#itgr_assign_materials#:#Assign Materials
itgr#:#itgr_assign_materials#:#Organize Objects
itgr#:#itgr_assigned_materials#:#Assigned Materials
itgr#:#itgr_assignment#:#Assigned
itgr#:#itgr_behaviour#:#Block Behaviour
itgr#:#itgr_behaviour_info#:#The system will store the opened/closed state for the current user until logout.
itgr#:#itgr_create_and_assign_object#:#Create and Assign Object
itgr#:#itgr_desc_info#:#The description will not be a part of the item group's presentation in its container.
itgr#:#itgr_edit#:#Edit Item Groups
itgr#:#itgr_expandable_closed#:#Expandable (initially closed)
Expand All @@ -10754,6 +10755,7 @@ itgr#:#itgr_list_default#:#Default
itgr#:#itgr_list_default_info#:#Inherits value from upper container.
itgr#:#itgr_list_presentation#:#Item Presentation
itgr#:#itgr_materials#:#Materials
itgr#:#itgr_organise_objects#:#Manage Objects
itgr#:#itgr_show_title#:#Show Title
itgr#:#itgr_show_title_info#:#Shows title of item group in presentation for learner.
itgr#:#itgr_tile#:#Tiles
Expand Down
Loading