45 protected string $id =
"";
55 $this->main_tpl =
$DIC->ui()->mainTemplate();
57 $this->
user = $DIC->user();
61 public function setId(
string $a_val): void
77 $this->orientation = $a_orientation;
88 $this->containerclass = $a_containerclass;
98 $this->icontainerclass = $a_containerclass;
108 $this->headerclass = $a_headerclass;
118 $this->active_headerclass = $a_h_class;
128 $this->contentclass = $a_contentclass;
138 $this->contentwidth = $a_contentwidth;
148 $this->contentheight = $a_contentheight;
161 $this->behaviour = $a_val;
171 $this->use_session_storage = $a_val;
181 $this->allow_multi_opened = $a_val;
194 $this->show_all_element = $a_val;
207 $this->hide_all_element = $a_val;
228 foreach (self::getLocalJavascriptFiles() as
$f) {
229 $tpl->addJavaScript(
$f,
true, 3);
242 foreach (self::getLocalCssFiles() as
$f) {
252 "../components/ILIAS/Accordion/resources/accordion.js"
256 "assets/js/accordion.js"
263 "./components/ILIAS/Accordion/css/accordion.css"
270 bool $a_force_open =
false
272 $this->items[] = array(
"header" => $a_header,
273 "content" => $a_content,
"force_open" => $a_force_open);
285 public function getHTML(
bool $async =
false): string
287 $ilUser = $this->user;
289 self::$accordion_cnt++;
295 $width = (
int) $this->getContentWidth();
296 $height = (
int) $this->getContentHeight();
306 $this->addJavascript();
309 $tpl =
new ilTemplate(
"tpl.accordion.html",
true,
true,
"components/ILIAS/Accordion");
310 foreach ($this->getItems() as $item) {
311 $tpl->setCurrentBlock(
"item");
312 $tpl->setVariable(
"HEADER", $item[
"header"]);
313 $tpl->setVariable(
"CONTENT", $item[
"content"]);
314 $tpl->setVariable(
"HEADER_CLASS", $this->getHeaderClass()
315 ? $this->getHeaderClass() :
"il_" . $or_short .
"AccordionHead");
316 $tpl->setVariable(
"CONTENT_CLASS", $this->getContentClass()
317 ? $this->getContentClass() :
"il_" . $or_short .
"AccordionContent");
319 if ($this->getBehaviour() != self::FORCE_ALL_OPEN) {
320 $tpl->setVariable(
"HIDE_CONTENT_CLASS",
"ilAccHideContent");
323 $tpl->setVariable(
"OR_SHORT", $or_short);
325 $tpl->setVariable(
"INNER_CONTAINER_CLASS", $this->getInnerContainerClass()
326 ? $this->getInnerContainerClass() :
"il_" . $or_short .
"AccordionInnerContainer");
330 $tpl->setVariable(
"HEIGHT",
"height:" . $height .
"px;");
333 $tpl->setVariable(
"HHEIGHT",
"height:" . $height .
"px;");
335 $tpl->parseCurrentBlock();
338 $tpl->setVariable(
"CONTAINER_CLASS", $this->getContainerClass()
339 ? $this->getContainerClass() :
"il_" . $or_short .
"AccordionContainer");
341 $options[
"orientation"] = $this->getOrientation();
344 if ($this->getUseSessionStorage() && $this->
getId() !=
"") {
347 $ctab = $stor->getProperty(
352 $ctab_arr = explode(
";", $ctab);
354 foreach ($this->force_open as $fo) {
355 if (!in_array($fo, $ctab_arr)) {
359 $ctab = implode(
";", $ctab_arr);
366 $options[
"save_url"] =
"./ilias.php?baseClass=ilaccordionpropertiesstoragegui&cmd=setOpenedTab" .
367 "&accordion_id=" . $this->
getId() .
"&user_id=" . $ilUser->getId();
370 $options[
"behaviour"] = $this->getBehaviour();
372 $options[
"toggle_class"] =
'il_HAccordionToggleDef';
373 $options[
"toggle_act_class"] =
'il_HAccordionToggleActiveDef';
374 $options[
"content_class"] =
'il_HAccordionContentDef';
376 $options[
"toggle_class"] =
'il_VAccordionToggleDef';
377 $options[
"toggle_act_class"] =
'il_VAccordionToggleActiveDef';
378 $options[
"content_class"] =
'il_VAccordionContentDef';
388 $tpl->setVariable(
"CWIDTH",
'style="width:' . $width .
'px;"');
391 if ($this->head_class_set) {
392 $options[
"active_head_class"] = $this->getActiveHeaderClass();
395 $options[
"active_head_class"] =
"il_HAccordionHeadActive";
397 $options[
"active_head_class"] =
"il_VAccordionHeadActive";
402 $options[
"id"] =
'accordion_' . $this->
getId() .
'_' . self::$accordion_cnt;
403 $options[
"multi"] = (bool) $this->getAllowMultiOpened();
404 $options[
"show_all_element"] = $this->getShowAllElement();
405 $options[
"hide_all_element"] = $this->getHideAllElement();
407 $tpl->setVariable(
"ACC_ID",
$options[
"id"]);
410 $code = $this->getOnloadCode(
$options);
412 $this->main_tpl->addOnLoadCode($code);
414 $html .=
"<script>$code</script>";
421 return 'il.Accordion.add(' . json_encode(
$options, JSON_THROW_ON_ERROR) .
');';
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setContentClass(string $a_contentclass)
setContentWidth(?int $a_contentwidth)
setShowAllElement(string $a_val)
setContentHeight(?int $a_contentheight)
setContainerClass(string $a_containerclass)
setActiveHeaderClass(string $a_h_class)
getOnloadCode(array $options)
setUseSessionStorage(bool $a_val)
setOrientation(string $a_orientation)
string $active_headerclass
addItem(string $a_header, string $a_content, bool $a_force_open=false)
getHTML(bool $async=false)
setInnerContainerClass(string $a_containerclass)
static int $accordion_cnt
bool $use_session_storage
setAllowMultiOpened(bool $a_val)
setHideAllElement(string $a_val)
setBehaviour(string $a_val)
Set behaviour "ForceAllOpen" | "FirstOpen" | "AllClosed".
static addCss()
Add required css.
setHeaderClass(string $a_headerclass)
static getLocalJavascriptFiles()
static getLocalCssFiles()
static addJavaScript(?ilGlobalTemplate $main_tpl=null)
Add javascript files that are necessary to run accordion.
ilGlobalTemplateInterface $main_tpl
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
special template class to simplify handling of ITX/PEAR
special template class to simplify handling of ITX/PEAR