3require_once(
'./Services/Repository/classes/class.ilObjectPlugin.php');
 
   67        $this->lng = 
$DIC->language();
 
   68        $this->obj_definition = 
$DIC[
"objDefinition"];
 
   70        $this->access = 
$DIC->access();
 
   71        $this->ctrl = 
$DIC->ctrl();
 
   72        $this->toolbar = 
$DIC->toolbar();
 
   73        $this->tpl = 
$DIC[
"tpl"];
 
   76        $this->parent_ref_id = (int) $a_parent_ref_id;
 
   79        $lng->loadLanguageModule(
"rep");
 
   80        $lng->loadLanguageModule(
"cntr");
 
   85        $this->mode = (int) $a_mode;
 
   95        $this->disabled_object_types = $a_types;
 
  105        $this->url_creation_callback = $a_ref_id;
 
  115        $this->url_creation = $a_url;
 
  131        $this->sub_objects = array();
 
  133        $settings_map = array(
"blog" => 
"blogs",
 
  135                "tstv" => 
"certificates",
 
  136                "excv" => 
"certificates",
 
  137                "crsv" => 
"certificates",
 
  138                "scov" => 
"certificates",
 
  142        if (count($subtypes) > 0) {
 
  143            foreach (array_keys($subtypes) as 
$type) {
 
  144                if (isset($settings_map[
$type]) &&
 
  149                $this->sub_objects[] = array(
"type" => 
"object",
 
  151                    "title" => 
$lng->txt(
"wsp_type_" . 
$type));
 
  171        $this->sub_objects = array();
 
  173        if (!is_array($this->disabled_object_types)) {
 
  174            $this->disabled_object_types = array();
 
  176        $this->disabled_object_types[] = 
"rolf";
 
  179        $subtypes = $objDefinition->getCreatableSubObjects($parent_type, $this->mode, $this->parent_ref_id);
 
  180        if (count($subtypes) > 0) {
 
  183            $grp_map = $pos_group_map = array();
 
  185            include_once(
"Services/Repository/classes/class.ilObjRepositorySettings.php");
 
  191                $groups = $default[
"groups"];
 
  192                $grp_map = $default[
"items"];
 
  196                foreach ($subtypes as $item_type => $item) {
 
  198                    if (substr($item_type, 0, 1) == 
"x") {
 
  199                        $subtypes[$item_type][
"pos"] = 
"99992000";
 
  201                        $subtypes[$item_type][
"pos"] = 
"9999" . str_pad(++$pos, 4, 
"0", STR_PAD_LEFT);
 
  206                foreach ($default[
"sort"] as $item_type => $pos) {
 
  207                    if (array_key_exists($item_type, $subtypes)) {
 
  208                        $subtypes[$item_type][
"pos"] = $pos;
 
  218                    foreach ($subitems as $subitem) {
 
  219                        $grp_map[$subitem] = $grp_id;
 
  224            $group_separators = array();
 
  225            $pos_group_map[0] = 
$lng->txt(
"rep_new_item_group_other");
 
  226            $old_grp_ids = array();
 
  227            foreach ($groups as $item) {
 
  229                    $pos_group_map[$item[
"id"]] = $item[
"title"];
 
  230                } elseif (
sizeof($old_grp_ids)) {
 
  231                    $group_separators[$item[
"id"]] = $old_grp_ids;
 
  233                $old_grp_ids[] = $item[
"id"];
 
  237            foreach ($subtypes as 
$type => $subitem) {
 
  238                if (!in_array(
$type, $this->disabled_object_types)) {
 
  240                    if ($ilAccess->checkAccess(
"create_" . 
$type, 
"", $this->parent_ref_id, $parent_type)) {
 
  242                        if (
sizeof($pos_group_map) > 1) {
 
  243                            $obj_grp_id = (int) $grp_map[
$type];
 
  244                            if ($obj_grp_id !== $current_grp) {
 
  247                                foreach ($group_separators as $idx => $spath) {
 
  249                                    if ($current_grp && !in_array($obj_grp_id, $spath)) {
 
  252                                            $this->sub_objects[] = array(
"type" => 
"column_separator");
 
  255                                        unset($group_separators[$idx]);
 
  259                                $title = $pos_group_map[$obj_grp_id];
 
  261                                $this->sub_objects[] = array(
"type" => 
"group",
 
  264                                $current_grp = $obj_grp_id;
 
  268                        if ($subitem[
"plugin"]) {
 
  269                            include_once(
"./Services/Component/classes/class.ilPlugin.php");
 
  276                        $this->sub_objects[] = array(
"type" => 
"object",
 
  297            $base_url = 
"ilias.php?baseClass=ilRepositoryGUI&ref_id=" . $this->parent_ref_id . 
"&cmd=create";
 
  301        $base_url = 
$ilCtrl->appendRequestTokenParameterString($base_url);
 
  303        if ($this->url_creation_callback) {
 
  307        include_once(
"./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php");
 
  309        $gl->setAsDropDown(
true, 
true);
 
  311        foreach ($this->sub_objects as $item) {
 
  312            switch ($item[
"type"]) {
 
  313                case "column_separator":
 
  324                    $gl->addGroupHeader($item[
"title"]);
 
  328                    $type = $item[
"value"];
 
  331                    $icon = (
$path != 
"")
 
  340                        $icon . $item[
"title"],
 
  357        return $gl->getHTML();
 
  377        $ov_id = 
"il_add_new_item_ov";
 
  378        $ov_trigger_id = $ov_id . 
"_tr";
 
  381        include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
 
  383        $adv->setListTitle(
$lng->txt(
"cntr_add_new_item"));
 
  385        $adv->setGroupedList($this->gl);
 
  387        $tpl->setVariable(
"SELECT_OBJTYPE_REPOS", $adv->getHTML());
 
  393        include_once 
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
 
  395        $button->setId($ov_trigger_id);
 
  396        $button->setCaption(
"cntr_add_new_item");
 
  397        $button->setPrimary(
true);
 
  398        $ilToolbar->addButtonInstance($button);
 
  402            "SELECT_OBJTYPE_REPOS",
 
  403            '<div id="' . $ov_id . 
'" style="display:none;" class="ilOverlay">' .
 
An exception for terminatinating execution or to throw for unit testing.
User interface class for advanced drop-down selection lists.
static getObjCreationTooltipText($a_type)
Get object_creation tooltip tab text.
const NEW_ITEM_GROUP_TYPE_GROUP
static getNewItemGroups()
static getDefaultNewItemGrouping()
static getNewItemGroupSubItems()
Render add new item selector.
parsePersonalWorkspace()
Parse creatable sub objects for personal workspace.
render()
Add new item selection to current page incl.
setDisabledObjectTypes(array $a_types)
Set object types which may not be created.
setCreationUrl($a_url)
Set (custom) url for object creation.
parseRepository()
Parse creatable sub objects for repository incl.
getHTML()
Get rendered html of sub object list.
__construct($a_parent_ref_id)
Constructor.
setAfterCreationCallback($a_ref_id)
Set after creation callback.
static lookupTxtById($plugin_id, $lang_var)
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _lookupType($a_id, $a_reference=false)
lookup object type
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.