43 $service = $DIC->container()->internal();
48 $this->
lng = $domain->lng();
49 $this->obj_definition = $domain->objectDefinition();
50 $this->tree = $domain->repositoryTree();
51 $this->
access = $domain->access();
53 $this->
ctrl = $gui->ctrl();
61 $this->
lng->loadLanguageModule(
"classification");
62 $this->
setTitle($this->
lng->txt(
"clsfct_block_title"));
64 $this->cl_request = $gui->classification()->standardRequest();
66 $this->classification = $domain->classification($this->parent_ref_id);
84 $next_class = $ilCtrl->getNextClass($this);
86 switch ($next_class) {
89 if ($ilCtrl->isAsynch() && $cmd !=
"getAjax" && $cmd !=
"filterContainer") {
102 $ilCtrl = $DIC->ctrl();
104 if ($ilCtrl->isAsynch()) {
108 switch ($ilCtrl->getCmd()) {
109 case "filterContainer":
123 $module =
'<script type="module" src="./assets/js/ilClassification.js"></script>';
125 return parent::getHTML() . $module;
135 echo
$tpl->getOnLoadCodeForAsynch();
147 foreach ($this->providers as
$provider) {
148 $provider->render($html, $this);
153 $ajax_block_id =
"block_" . $this->
getBlockType() .
"_0";
154 $ajax_block_url = $ilCtrl->getLinkTarget($this,
"getAjax",
"",
true,
false);
155 $ajax_content_id =
"il_center_col";
156 $ajax_content_url = $ilCtrl->getLinkTarget($this,
"filterContainer",
"",
true,
false);
159 $tabs->setBackTarget($this->
lng->txt(
"clsfct_back_to_cat"), $ilCtrl->getLinkTarget($this,
"returnToParent"));
160 $tabs->addTab(
"sel_objects", $this->
lng->txt(
"clsfct_selected_objects"),
"#");
161 $tabs_html = $tabs->getHTML();
170 $btpl =
new ilTemplate(
"tpl.classification_block.html",
true,
true,
"components/ILIAS/Container/Classification");
172 foreach ($html as $item) {
173 $btpl->setCurrentBlock(
"provider_chunk_bl");
174 $btpl->setVariable(
"TITLE", $item[
"title"]);
175 $btpl->setVariable(
"CHUNK", $item[
"html"]);
176 $btpl->parseCurrentBlock();
179 $btpl->setVariable(
"AJAX_BLOCK_ID", $ajax_block_id);
180 $btpl->setVariable(
"AJAX_BLOCK_URL", $ajax_block_url);
181 $btpl->setVariable(
"AJAX_CONTENT_ID", $ajax_content_id);
182 $btpl->setVariable(
"AJAX_CONTENT_URL", $ajax_content_url);
183 $btpl->setVariable(
"TABS_HTML", json_encode($tabs_html));
185 $overall_html .= $btpl->get();
188 return $overall_html;
193 $this->classification->clearSelection();
194 $this->
ctrl->returnToParent($this);
213 if ($this->classification->isEmptySelection()) {
217 $all_matching_provider_object_ids =
null;
219 foreach ($this->providers as
$provider) {
220 $id = get_class($provider);
221 $current = $this->classification->getSelectionOfProvider(
$id);
223 $no_provider =
false;
225 $provider_object_ids = $provider->getFilteredObjects();
226 if (isset($all_matching_provider_object_ids)) {
227 $all_matching_provider_object_ids = array_intersect($all_matching_provider_object_ids, $provider_object_ids);
229 $all_matching_provider_object_ids = $provider_object_ids;
233 $has_content =
false;
236 $ltpl =
new ilTemplate(
"tpl.classification_object_list.html",
true,
true,
"components/ILIAS/Container/Classification");
238 if (isset($all_matching_provider_object_ids) &&
sizeof($all_matching_provider_object_ids)) {
240 "object_reference.ref_id" 241 ,
"object_data.obj_id" 244 ,
"object_data.description" 249 $this->parent_ref_id,
250 $all_matching_provider_object_ids,
254 if (
sizeof($matching)) {
255 $valid_objects = array();
259 foreach ($matching as $item) {
260 if ($item[
"ref_id"] != $this->parent_ref_id &&
262 $ilAccess->checkAccess(
"visible",
"", $item[
"ref_id"])) {
267 foreach ($tree->
getPathFull($item[
"ref_id"]) as $p) {
268 if (in_array($p[
"type"], array(
"root",
"cat",
"crs",
"grp"))) {
269 $block_ref_id = $p[
"ref_id"];
270 $block_title = $p[
"title"];
273 if ($block_ref_id > 0) {
274 if (!isset($valid_objects[$block_ref_id])) {
275 $valid_objects[$block_ref_id] = array(
276 "title" => $block_title,
280 $valid_objects[$block_ref_id][
"items"][] = $item;
283 $preloader->addItem($item[
"obj_id"], $item[
"type"], $item[
"ref_id"]);
287 if (
sizeof($valid_objects)) {
290 $preloader->preload();
292 $this->item_list_gui = array();
293 foreach ($valid_objects as $block) {
295 foreach ($items as $obj) {
296 $type = $obj[
"type"];
299 if (empty($this->item_list_gui[$type])) {
300 $class = $objDefinition->getClassName($type);
301 $location = $objDefinition->getLocation($type);
303 $full_class =
"ilObj" . $class .
"ListGUI";
305 $this->item_list_gui[$type] =
new $full_class();
306 $this->item_list_gui[$type]->enableDelete(
false);
307 $this->item_list_gui[$type]->enablePath(
309 $this->parent_ref_id,
312 $this->item_list_gui[$type]->enableLinkedPath(
true);
313 $this->item_list_gui[$type]->enableCut(
false);
314 $this->item_list_gui[$type]->enableCopy(
false);
315 $this->item_list_gui[$type]->enableSubscribe(
false);
316 $this->item_list_gui[$type]->enableLink(
false);
317 $this->item_list_gui[$type]->enableIcon(
true);
320 foreach ($this->providers as $provider) {
321 $provider->initListGUI($this->item_list_gui[$type]);
325 $html = $this->item_list_gui[$type]->getListItemHTML(
333 $ltpl->setCurrentBlock(
"res_row");
334 $ltpl->setVariable(
"RESOURCE_HTML", $html);
335 $ltpl->parseCurrentBlock();
338 $ltpl->setCurrentBlock(
"block");
339 $ltpl->setVariable(
"BLOCK_TITLE", $block[
"title"]);
340 $ltpl->parseCurrentBlock();
348 echo
"<span id='block_" . $this->
getBlockType() .
"_0_loader'></span>";
350 echo
"<script>document.location.reload();</script>";
367 if (!isset(self::$providers_cache[$this->parent_ref_id])) {
369 $this->parent_ref_id,
370 $this->parent_obj_id,
371 $this->parent_obj_type
375 if ($a_check_post && !$this->cl_request->getRedraw()) {
376 foreach ($this->providers as
$provider) {
377 $id = get_class($provider);
378 $current = $provider->importPostData(
379 $this->classification->getSelectionOfProvider(
$id)
381 if (is_array($current) || $current) {
382 $this->classification->setSelectionOfProvider(
$id, $current);
387 foreach ($this->providers as
$provider) {
388 $id = get_class($provider);
389 $current = $this->classification->getSelectionOfProvider(
$id);
391 $provider->setSelection($current);
399 $this->
ctrl->returnToParent($this);
411 $matching = array_filter($tree->
getChilds($this->parent_ref_id),
function ($item) use ($obj_ids) {
412 return in_array($item[
"obj_id"], $obj_ids);
416 "object_reference.ref_id" 417 ,
"object_data.obj_id" 420 ,
"object_data.description" getSubItemIds(array $obj_ids)
Get sub item ids depending on container type that match the preselected object ids.
ILIAS Container Classification ClassificationManager $classification
static getSystemMessageHTML(string $a_txt, string $a_type="info")
Get HTML for a system message.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
getChilds(int $a_node_id, string $a_order="", string $a_direction="ASC")
get child nodes of given node
getCmd(?string $fallback_command=null)
isDeleted(int $a_node_id)
This is a wrapper for isSaved() with a more useful name.
ilObjectDefinition $obj_definition
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getPathFull(int $a_endnode_id, int $a_startnode_id=0)
get path from a given startnode to a given endnode if startnode is not given the rootnode is startnod...
static _lookupObjId(int $ref_id)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
Classification block, displayed in different contexts, e.g.
ilGlobalTemplateInterface $main_tpl
getSubTreeFilteredByObjIds(int $a_node_id, array $a_obj_ids, array $a_fields=[])
get all node ids in the subtree under specified node id, filter by object ids
PathGUI which handles materials assigned to sessions.
initProviders(bool $a_check_post=false)
static array $providers_cache
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
__construct(Container $dic, ilPlugin $plugin)
setTitle(string $a_title)
This class represents a block method of a block.
static _lookupType(int $id, bool $reference=false)
static getValidProviders(int $a_parent_ref_id, int $a_parent_obj_id, string $a_parent_obj_type)
Get all valid providers (for parent container)
StandardGUIRequest $cl_request
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)