/**
  * Show overview of assignments
  */
 function showOverviewObject()
 {
     global $tpl, $ilTabs, $ilUser, $ilToolbar;
     $this->checkPermission("read");
     include_once "./Services/Tracking/classes/class.ilLearningProgress.php";
     ilLearningProgress::_tracProgress($ilUser->getId(), $this->object->getId(), $this->object->getRefId(), 'exc');
     $ilTabs->activateTab("content");
     $this->addContentSubTabs("content");
     // show certificate?
     if ($this->object->hasUserCertificate($ilUser->getId())) {
         include_once "./Modules/Exercise/classes/class.ilExerciseCertificateAdapter.php";
         include_once "./Services/Certificate/classes/class.ilCertificate.php";
         $adapter = new ilExerciseCertificateAdapter($this->object);
         if (ilCertificate::_isComplete($adapter)) {
             $ilToolbar->addButton($this->lng->txt("certificate"), $this->ctrl->getLinkTarget($this, "outCertificate"));
         }
     }
     include_once "./Modules/Exercise/classes/class.ilExAssignment.php";
     include_once "./Services/Accordion/classes/class.ilAccordionGUI.php";
     $acc = new ilAccordionGUI();
     $acc->setId("exc_ow_" . $this->object->getId());
     $ass_data = ilExAssignment::getAssignmentDataOfExercise($this->object->getId());
     include_once "./Modules/Exercise/classes/class.ilExAssignmentGUI.php";
     $ass_gui = new ilExAssignmentGUI($this->object);
     foreach ($ass_data as $ass) {
         // incoming assignment deeplink
         $force_open = false;
         if (isset($_GET["ass_id_goto"]) && (int) $_GET["ass_id_goto"] == $ass["id"]) {
             $force_open = true;
         }
         $acc->addItem($ass_gui->getOverviewHeader($ass), $ass_gui->getOverviewBody($ass), $force_open);
     }
     if (count($ass_data) < 2) {
         $acc->setBehaviour("FirstOpen");
     } else {
         $acc->setUseSessionStorage(true);
     }
     $tpl->setContent($acc->getHTML());
 }
 /**
  * Show overview
  */
 function showOverview()
 {
     global $tpl, $ilTabs;
     $ilTabs->activateTab("overview");
     $this->addOverviewSubTabs("overview");
     include_once "./Customizing/global/plugins/Services/Repository/RepositoryObject/Ephorus/classes/class.ilEphAssignment.php";
     include_once "./Services/Accordion/classes/class.ilAccordionGUI.php";
     $acc = new ilAccordionGUI();
     $acc->setBehaviour("OneOpenSession");
     $acc->setId("eph_ow_" . $this->object->getId());
     $ass_data = ilEphAssignment::getAssignmentDataOfEphorus($this->object->getId());
     include_once "./Customizing/global/plugins/Services/Repository/RepositoryObject/Ephorus/classes/class.ilEphAssignmentGUI.php";
     $ass_gui = new ilEphAssignmentGUI($this->object);
     foreach ($ass_data as $ass) {
         $acc->addItem($ass_gui->getOverviewHeader($ass), $ass_gui->getOverviewBody($ass));
     }
     $tpl->setContent($acc->getHTML());
 }
 /**
  * Show all other (no assigned tests, no assigned materials) materials
  *
  * @access public
  * @param object $tpl template object
  * @return void
  */
 public function showMaterials($a_tpl, $a_mode = null, $a_is_manage = false, $a_as_accordion = false)
 {
     global $ilAccess, $lng;
     $this->clearAdminCommandsDetermination();
     if (is_array($this->items["_all"])) {
         $this->objective_map = $this->buildObjectiveMap();
         // all rows
         $item_r = array();
         $position = 1;
         foreach ($this->items["_all"] as $k => $item_data) {
             if ($a_mode == self::MATERIALS_TESTS and $item_data['type'] != 'tst') {
                 continue;
             }
             if ($item_data['type'] == 'itgr') {
                 continue;
             }
             if (!$a_is_manage) {
                 // if test object is qualified or initial do not show here
                 include_once './Modules/Course/classes/Objectives/class.ilLOTestAssignments.php';
                 include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
                 $assignments = ilLOTestAssignments::getInstance($this->getContainerObject()->getId());
                 if ($assignments->getTypeByTest($item_data['child']) != ilLOSettings::TYPE_TEST_UNDEFINED) {
                     continue;
                 }
             }
             if ($this->rendered_items[$item_data["child"]] !== true && !$this->renderer->hasItem($item_data["child"])) {
                 $this->rendered_items[$item_data['child']] = true;
                 // TODO: Position (DONE ?)
                 $html = $this->renderItem($item_data, $position++, $a_mode == self::MATERIALS_TESTS ? false : true);
                 if ($html != "") {
                     $item_r[] = array("html" => $html, "id" => $item_data["child"], "type" => $item_data["type"]);
                 }
             }
         }
         // if we have at least one item, output the block
         if (count($item_r) > 0) {
             if (!$a_as_accordion) {
                 $pos = 0;
                 switch ($a_mode) {
                     case self::MATERIALS_TESTS:
                         $block_id = "tst";
                         $this->renderer->addTypeBlock($block_id);
                         break;
                     case self::MATERIALS_OTHER:
                         $block_id = "oth";
                         $this->renderer->addCustomBlock($block_id, $lng->txt('crs_other_resources'));
                         break;
                         // manage
                     // manage
                     default:
                         $block_id = "all";
                         $this->renderer->addCustomBlock($block_id, $lng->txt('content'));
                         break;
                 }
                 // :TODO:
                 if ($a_mode != self::MATERIALS_TESTS) {
                     $pos = $this->getItemGroupsHTML();
                 }
                 foreach ($item_r as $h) {
                     if (!$this->renderer->hasItem($h["id"])) {
                         $this->renderer->addItemToBlock($block_id, $h["type"], $h["id"], $h["html"]);
                     }
                 }
                 $this->output_html .= $this->renderer->getHTML();
             } else {
                 switch ($a_mode) {
                     case self::MATERIALS_TESTS:
                         $txt = $lng->txt('objs_tst');
                         break;
                     case self::MATERIALS_OTHER:
                         $txt = $lng->txt('crs_other_resources');
                         break;
                 }
                 include_once "Services/Accordion/classes/class.ilAccordionGUI.php";
                 $acc = new ilAccordionGUI();
                 $acc->setId("crsobjtvmat" . $a_mode . "_" . $this->container_obj->getId());
                 $acc_content = array();
                 foreach ($item_r as $h) {
                     $acc_content[] = $h["html"];
                 }
                 $acc->addItem($txt, $this->buildAccordionContent($acc_content));
                 $this->output_html .= $acc->getHTML();
             }
         }
     }
 }
 /**
  * Show template permissions
  * @return void
  */
 protected function permObject($a_show_admin_permissions = false)
 {
     global $ilTabs, $ilErr, $ilToolbar, $objDefinition, $rbacreview;
     $ilTabs->setTabActive('default_perm_settings');
     $this->setSubTabs('default_perm_settings');
     if ($a_show_admin_permissions) {
         $ilTabs->setSubTabActive('rbac_admin_permissions');
     } else {
         $ilTabs->setSubTabActive('rbac_repository_permissions');
     }
     if (!$this->checkAccess('write', 'edit_permission')) {
         $ilErr->raiseError($this->lng->txt('msg_no_perm_perm'), $ilErr->MESSAGE);
         return true;
     }
     // Show copy role button
     $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
     $ilToolbar->addButton($this->lng->txt("adopt_perm_from_template"), $this->ctrl->getLinkTarget($this, 'adoptPerm'));
     if ($rbacreview->isDeleteable($this->object->getId(), $this->rolf_ref_id)) {
         $ilToolbar->addButton($this->lng->txt('rbac_delete_role'), $this->ctrl->getLinkTarget($this, 'confirmDeleteRole'));
     }
     $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rbac_template_permissions.html', 'Services/AccessControl');
     $this->tpl->setVariable('PERM_ACTION', $this->ctrl->getFormAction($this));
     include_once './Services/Accordion/classes/class.ilAccordionGUI.php';
     $acc = new ilAccordionGUI();
     $acc->setBehaviour(ilAccordionGUI::FORCE_ALL_OPEN);
     $acc->setId('template_perm_' . $this->getParentRefId());
     if ($this->rolf_ref_id == ROLE_FOLDER_ID) {
         if ($a_show_admin_permissions) {
             $subs = $objDefinition->getSubObjectsRecursively('adm', true, true);
         } else {
             $subs = $objDefinition->getSubObjectsRecursively('root', true, $a_show_admin_permissions);
         }
     } else {
         $subs = $objDefinition->getSubObjectsRecursively($this->getParentType(), true, $a_show_admin_permissions);
     }
     $sorted = array();
     foreach ($subs as $subtype => $def) {
         if ($objDefinition->isPlugin($subtype)) {
             $translation = ilPlugin::lookupTxt("rep_robj", $subtype, "obj_" . $subtype);
         } elseif ($objDefinition->isSystemObject($subtype)) {
             $translation = $this->lng->txt("obj_" . $subtype);
         } else {
             $translation = $this->lng->txt('objs_' . $subtype);
         }
         $sorted[$subtype] = $def;
         $sorted[$subtype]['translation'] = $translation;
     }
     $sorted = ilUtil::sortArray($sorted, 'translation', 'asc', true, true);
     foreach ($sorted as $subtype => $def) {
         if ($objDefinition->isPlugin($subtype)) {
             $translation = ilPlugin::lookupTxt("rep_robj", $subtype, "obj_" . $subtype);
         } elseif ($objDefinition->isSystemObject($subtype)) {
             $translation = $this->lng->txt("obj_" . $subtype);
         } else {
             $translation = $this->lng->txt('objs_' . $subtype);
         }
         include_once 'Services/AccessControl/classes/class.ilObjectRoleTemplatePermissionTableGUI.php';
         $tbl = new ilObjectRoleTemplatePermissionTableGUI($this, 'perm', $this->getParentRefId(), $this->object->getId(), $subtype, $a_show_admin_permissions);
         $tbl->parse();
         $acc->addItem($translation, $tbl->getHTML());
     }
     $this->tpl->setVariable('ACCORDION', $acc->getHTML());
     // Add options table
     include_once './Services/AccessControl/classes/class.ilObjectRoleTemplateOptionsTableGUI.php';
     $options = new ilObjectRoleTemplateOptionsTableGUI($this, 'perm', $this->rolf_ref_id, $this->object->getId(), $a_show_admin_permissions);
     $options->addMultiCommand($a_show_admin_permissions ? 'adminPermSave' : 'permSave', $this->lng->txt('save'));
     $options->parse();
     $this->tpl->setVariable('OPTIONS_TABLE', $options->getHTML());
 }
 protected function fillRow($a_set)
 {
     global $ilCtrl;
     if ($this->show_peer_review && isset($a_set["peer"])) {
         $acc_data = array();
         foreach ($a_set["peer"] as $peer_id => $peer_review) {
             $peer_name = ilUserUtil::getNamePresentation($peer_id);
             $acc_item = $peer_name;
             if ($peer_review[1]) {
                 $rating = new ilRatingGUI();
                 $rating->setObject($this->ass->getId(), "ass", $a_set["uid"], "peer");
                 $rating->setUserId($peer_id);
                 $acc_item .= " " . $rating->getHTML(false, false);
             }
             if ($peer_review[0]) {
                 $acc_item .= '<div class="small">' . nl2br($peer_review[0]) . "</div>";
             }
             $uploads = $this->ass->getPeerUploadFiles($a_set["uid"], $peer_id);
             if ($uploads) {
                 $acc_item .= '<div class="small">';
                 $ilCtrl->setParameter($this->parent_obj, "fu", $peer_id . "__" . $a_set["uid"]);
                 foreach ($uploads as $file) {
                     $ilCtrl->setParameter($this->parent_obj, "fuf", md5($file));
                     $dl = $ilCtrl->getLinkTarget($this->parent_obj, "downloadPeerReview");
                     $ilCtrl->setParameter($this->parent_obj, "fuf", "");
                     $acc_item .= '<a href="' . $dl . '">' . basename($file) . '</a><br />';
                 }
                 $ilCtrl->setParameter($this->parent_obj, "fu", "");
                 $acc_item .= '</div>';
             }
             $acc_data[$peer_id] = array("name" => $peer_name, "review" => $acc_item);
         }
         if ($acc_data) {
             $acc_data = ilUtil::sortArray($acc_data, "name", "asc");
             $acc = new ilAccordionGUI();
             $acc->setId($this->ass->getId() . "_" . $a_set["uid"]);
             $acc_html = "<ul>";
             foreach ($acc_data as $acc_item) {
                 $acc_html .= "<li>" . $acc_item["review"] . "</li>";
             }
             $acc_html .= "</ul>";
             $acc->addItem($this->lng->txt("show") . " (" . sizeof($acc_data) . ")", $acc_html);
             $this->tpl->setCurrentBlock("peer_bl");
             $this->tpl->setVariable("PEER_REVIEW", $acc->getHTML());
             $this->tpl->parseCurrentBlock();
         }
     }
     $this->tpl->setVariable("USER_NAME", $a_set["uname"]);
     $this->tpl->setVariable("USER_DATE", ilDatePresentation::formatDate(new ilDate($a_set["udate"], IL_CAL_DATETIME)));
     $this->tpl->setVariable("USER_TEXT", $a_set["utext"]);
 }
 /**
  * Show online help
  */
 function showHelp()
 {
     global $ilHelp, $lng, $ilSetting;
     if ($_GET["help_screen_id"] != "") {
         ilSession::set("help_screen_id", $_GET["help_screen_id"]);
         $help_screen_id = $_GET["help_screen_id"];
     } else {
         $help_screen_id = ilSession::get("help_screen_id");
     }
     $this->resetCurrentPage();
     $id_arr = explode(".", $help_screen_id);
     include_once "./Services/Help/classes/class.ilHelpMapping.php";
     $help_arr = ilHelpMapping::getHelpSectionsForId($id_arr[0], $id_arr[1]);
     $hm = (int) $ilSetting->get("help_module");
     if ((OH_REF_ID > 0 || $hm > 0) && count($help_arr) > 0) {
         if (OH_REF_ID > 0) {
             $oh_lm_id = ilObject::_lookupObjId(OH_REF_ID);
         } else {
             include_once "./Services/Help/classes/class.ilObjHelpSettings.php";
             $oh_lm_id = ilObjHelpSettings::lookupModuleLmId($hm);
         }
         include_once "./Services/Accordion/classes/class.ilAccordionGUI.php";
         $acc = new ilAccordionGUI();
         $acc->setId("oh_acc");
         $acc->setBehaviour(ilAccordionGUI::FIRST_OPEN);
         foreach ($help_arr as $h_id) {
             include_once "./Modules/LearningModule/classes/class.ilLMObject.php";
             $st_id = $h_id;
             if (!ilLMObject::_exists($st_id)) {
                 continue;
             }
             $pages = ilLMObject::getPagesOfChapter($oh_lm_id, $st_id);
             include_once "./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php";
             $grp_list = new ilGroupedListGUI();
             foreach ($pages as $pg) {
                 $grp_list->addEntry(ilLMObject::_lookupTitle($pg["child"]), "#", "", "return il.Help.showPage(" . $pg["child"] . ");");
             }
             $acc->addItem(ilLMObject::_lookupTitle($st_id), $grp_list->getHTML());
         }
         $h_tpl = new ilTemplate("tpl.help.html", true, true, "Services/Help");
         $h_tpl->setVariable("HEAD", $lng->txt("help"));
         $h_tpl->setVariable("CONTENT", $acc->getHTML());
         $h_tpl->setVariable("CLOSE_IMG", ilUtil::img(ilUtil::getImagePath("icon_close2_s.png")));
         echo $h_tpl->get();
     }
     exit;
 }