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...
 
getCmd(string $fallback_command=null)
 
$location
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
getChilds(int $a_node_id, string $a_order="", string $a_direction="ASC")
get child nodes of given node 
 
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)
 
Classification block, displayed in different contexts, e.g. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
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 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
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)