ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilCOPageGlobalTemplate.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("./Services/UICore/lib/html-it/IT.php");
5include_once("./Services/UICore/lib/html-it/ITX.php");
6
14{
15 protected $tree_flat_link = "";
16 protected $page_form_action = "";
17 protected $permanent_link = false;
18
19 protected $lightbox = array();
20 protected $standard_template_loaded = false;
21
25 protected $template;
26
36 public function __construct(
37 $file,
38 $flag1,
39 $flag2,
40 $in_module = false,
41 $vars = "DEFAULT",
42 $plugin = false,
43 $a_use_cache = true
44 ) {
45 $this->setBodyClass("std");
46 $this->template = new ilTemplate($file, $flag1, $flag2, $in_module, $vars, $plugin, $a_use_cache);
47 }
48
52 public function printToString() : string
53 {
54 throw new ilException('not implemented');
55 }
56
57
58 //***********************************
59 //
60 // FOOTER
61 //
62 // Used in:
63 // * ilStartUPGUI
64 // * ilTestSubmissionReviewGUI
65 // * ilTestPlayerAbstractGUI
66 // * ilAssQuestionHintRequestGUI
67 //
68 //***********************************
69
70 private $show_footer = true;
71
75 public function hideFooter()
76 {
77 $this->show_footer = false;
78 }
79
83 private function fillFooter()
84 {
85 global $DIC;
86
87 $ilSetting = $DIC->settings();
88
89 $lng = $DIC->language();
90
91 $ilCtrl = $DIC->ctrl();
92 $ilDB = $DIC->database();
93
94 if (!$this->show_footer) {
95 return;
96 }
97
98 $ftpl = new ilTemplate("tpl.footer.html", true, true, "Services/UICore");
99
100 $php = "";
101 if (DEVMODE) {
102 $php = ", PHP " . phpversion();
103 }
104 $ftpl->setVariable("ILIAS_VERSION", $ilSetting->get("ilias_version") . $php);
105
106 $link_items = array();
107
108 // imprint
109 include_once "Services/Imprint/classes/class.ilImprint.php";
110 if ($_REQUEST["baseClass"] != "ilImprintGUI" && ilImprint::isActive()) {
111 include_once "Services/Link/classes/class.ilLink.php";
112 $link_items[ilLink::_getStaticLink(0, "impr")] = array($lng->txt("imprint"), true);
113 }
114
115 // system support contacts
116 include_once("./Modules/SystemFolder/classes/class.ilSystemSupportContactsGUI.php");
118 $link_items[$l] = array(ilSystemSupportContactsGUI::getFooterText(), false);
119 }
120
121 if (DEVMODE) {
122 if (function_exists("tidy_parse_string")) {
123 $link_items[ilUtil::appendUrlParameterString($_SERVER["REQUEST_URI"], "do_dev_validate=xhtml")] = array("Validate", true);
124 $link_items[ilUtil::appendUrlParameterString($_SERVER["REQUEST_URI"], "do_dev_validate=accessibility")] = array("Accessibility", true);
125 }
126 }
127
128 // output translation link
129 include_once("Services/Language/classes/class.ilObjLanguageAccess.php");
131 $link_items[ilObjLanguageAccess::_getTranslationLink()] = array($lng->txt('translation'), true);
132 }
133
134 $cnt = 0;
135 foreach ($link_items as $url => $caption) {
136 $cnt++;
137 if ($caption[1]) {
138 $ftpl->touchBlock("blank");
139 }
140 if ($cnt < sizeof($link_items)) {
141 $ftpl->touchBlock("item_separator");
142 }
143
144 $ftpl->setCurrentBlock("items");
145 $ftpl->setVariable("URL_ITEM", ilUtil::secureUrl($url));
146 $ftpl->setVariable("TXT_ITEM", $caption[0]);
147 $ftpl->parseCurrentBlock();
148 }
149
150 if (DEVMODE) {
151 // execution time
152 $t1 = explode(" ", $GLOBALS['ilGlobalStartTime']);
153 $t2 = explode(" ", microtime());
154 $diff = $t2[0] - $t1[0] + $t2[1] - $t1[1];
155
156 $mem_usage = array();
157 if (function_exists("memory_get_usage")) {
158 $mem_usage[] =
159 "Memory Usage: " . memory_get_usage() . " Bytes";
160 }
161 if (function_exists("xdebug_peak_memory_usage")) {
162 $mem_usage[] =
163 "XDebug Peak Memory Usage: " . xdebug_peak_memory_usage() . " Bytes";
164 }
165 $mem_usage[] = round($diff, 4) . " Seconds";
166
167 if (sizeof($mem_usage)) {
168 $ftpl->setVariable("MEMORY_USAGE", "<br>" . implode(" | ", $mem_usage));
169 }
170
171 if (!empty($_GET["do_dev_validate"]) && $ftpl->blockExists("xhtml_validation")) {
172 require_once("Services/XHTMLValidator/classes/class.ilValidatorAdapter.php");
173 $template2 = clone($this);
174 $ftpl->setCurrentBlock("xhtml_validation");
175 $ftpl->setVariable(
176 "VALIDATION",
177 ilValidatorAdapter::validate($template2->get(
178 "DEFAULT",
179 false,
180 false,
181 false,
182 true
183 ), $_GET["do_dev_validate"])
184 );
185 $ftpl->parseCurrentBlock();
186 }
187
188 // controller history
189 if (is_object($ilCtrl) && $ftpl->blockExists("c_entry") &&
190 $ftpl->blockExists("call_history")) {
191 $hist = $ilCtrl->getCallHistory();
192 foreach ($hist as $entry) {
193 $ftpl->setCurrentBlock("c_entry");
194 $ftpl->setVariable("C_ENTRY", $entry["class"]);
195 if (is_object($ilDB)) {
196 $file = $ilCtrl->lookupClassPath($entry["class"]);
197 $add = $entry["mode"] . " - " . $entry["cmd"];
198 if ($file != "") {
199 $add .= " - " . $file;
200 }
201 $ftpl->setVariable("C_FILE", $add);
202 }
203 $ftpl->parseCurrentBlock();
204 }
205 $ftpl->setCurrentBlock("call_history");
206 $ftpl->parseCurrentBlock();
207 }
208
209 // included files
210 if (is_object($ilCtrl) && $ftpl->blockExists("i_entry") &&
211 $ftpl->blockExists("included_files")) {
212 $fs = get_included_files();
213 $ifiles = array();
214 $total = 0;
215 foreach ($fs as $f) {
216 $ifiles[] = array("file" => $f, "size" => filesize($f));
217 $total += filesize($f);
218 }
219 $ifiles = ilUtil::sortArray($ifiles, "size", "desc", true);
220 foreach ($ifiles as $f) {
221 $ftpl->setCurrentBlock("i_entry");
222 $ftpl->setVariable("I_ENTRY", $f["file"] . " (" . $f["size"] . " Bytes, " . round(100 / $total * $f["size"], 2) . "%)");
223 $ftpl->parseCurrentBlock();
224 }
225 $ftpl->setCurrentBlock("i_entry");
226 $ftpl->setVariable("I_ENTRY", "Total (" . $total . " Bytes, 100%)");
227 $ftpl->parseCurrentBlock();
228 $ftpl->setCurrentBlock("included_files");
229 $ftpl->parseCurrentBlock();
230 }
231 }
232
233 // BEGIN Usability: Non-Delos Skins can display the elapsed time in the footer
234 // The corresponding $ilBench->start invocation is in inc.header.php
235 $ilBench = $DIC["ilBench"];
236 $ilBench->stop("Core", "ElapsedTimeUntilFooter");
237 $ftpl->setVariable(
238 "ELAPSED_TIME",
239 ", " . number_format($ilBench->getMeasuredTime("Core", "ElapsedTimeUntilFooter"), 1) . ' seconds'
240 );
241 // END Usability: Non-Delos Skins can display the elapsed time in the footer
242
243 $this->setVariable("FOOTER", $ftpl->get());
244 }
245
246
247 //***********************************
248 //
249 // MAIN MENU
250 //
251 //***********************************
252
256 protected $main_menu;
257
262
263 private function getMainMenu()
264 {
265 global $DIC;
266
267 $ilMainMenu = $DIC["ilMainMenu"];
268
269 if ($this->variableExists('MAINMENU')) {
270 $ilMainMenu->setLoginTargetPar($this->getLoginTargetPar());
271 $this->main_menu = $ilMainMenu->getHTML();
272 $this->main_menu_spacer = $ilMainMenu->getSpacerClass();
273 }
274 }
275
276 private function fillMainMenu()
277 {
278 global $DIC;
279 $tpl = $DIC["tpl"];
280 if ($this->variableExists('MAINMENU')) {
281 $tpl->setVariable("MAINMENU", $this->main_menu);
282 $tpl->setVariable("MAINMENU_SPACER", $this->main_menu_spacer);
283 }
284 }
285
286
287 //***********************************
288 //
289 // HELP
290 //
291 //***********************************
292
296 private function initHelp()
297 {
298 include_once("./Services/Help/classes/class.ilHelpGUI.php");
299 //ilHelpGUI::initHelp($this);
300 }
301
302
303 //***********************************
304 //
305 // MESSAGES
306 //
307 // setMessage is only used in ilUtil
308 //
309 //***********************************
310
311 const MESSAGE_TYPE_FAILURE = 'failure';
312 const MESSAGE_TYPE_INFO = "info";
313 const MESSAGE_TYPE_SUCCESS = "success";
314 const MESSAGE_TYPE_QUESTION = "question";
315
319 protected static $message_types = array(
320 self::MESSAGE_TYPE_FAILURE,
321 self::MESSAGE_TYPE_INFO,
322 self::MESSAGE_TYPE_SUCCESS,
323 self::MESSAGE_TYPE_QUESTION,
324 );
325
326 protected $message = array();
327
339 public function setOnScreenMessage($a_type, $a_txt, $a_keep = false)
340 {
341 if (!in_array($a_type, self::$message_types) || $a_txt == "") {
342 return;
343 }
344 if (!$a_keep) {
345 $this->message[$a_type] = $a_txt;
346 } else {
347 $_SESSION[$a_type] = $a_txt;
348 }
349 }
350
354 private function fillMessage()
355 {
356 global $DIC;
357
358 $out = "";
359
360 foreach (self::$message_types as $m) {
361 $txt = $this->getMessageTextForType($m);
362
363 if ($txt != "") {
365 }
366
367 $request = $DIC->http()->request();
368 $accept_header = $request->getHeaderLine('Accept');
369 if (isset($_SESSION[$m]) && $_SESSION[$m] && ($accept_header !== 'application/json')) {
370 unset($_SESSION[$m]);
371 }
372 }
373
374 if ($out != "") {
375 $this->setVariable("MESSAGE", $out);
376 }
377 }
378
379
385 private function getMessageTextForType($m)
386 {
387 $txt = "";
388 if (isset($_SESSION[$m]) && $_SESSION[$m] != "") {
389 $txt = $_SESSION[$m];
390 } else {
391 if (isset($this->message[$m])) {
392 $txt = $this->message[$m];
393 }
394 }
395
396 return $txt;
397 }
398
399 //***********************************
400 //
401 // JAVASCRIPT files and code
402 //
403 //***********************************
404
409 protected $js_files = array(0 => "./Services/JavaScript/js/Basic.js");
410
415 protected $js_files_vp = array("./Services/JavaScript/js/Basic.js" => true);
416
421 protected $js_files_batch = array("./Services/JavaScript/js/Basic.js" => 1);
422
426 public function addJavaScript($a_js_file, $a_add_version_parameter = true, $a_batch = 2)
427 {
428 // three batches currently
429 if ($a_batch < 1 || $a_batch > 3) {
430 $a_batch = 2;
431 }
432
433 // ensure jquery files being loaded first
434 if (is_int(strpos($a_js_file, "Services/jQuery")) ||
435 is_int(strpos($a_js_file, "/jquery.js")) ||
436 is_int(strpos($a_js_file, "/jquery-min.js"))) {
437 $a_batch = 0;
438 }
439
440 if (!in_array($a_js_file, $this->js_files)) {
441 $this->js_files[] = $a_js_file;
442 $this->js_files_vp[$a_js_file] = $a_add_version_parameter;
443 $this->js_files_batch[$a_js_file] = $a_batch;
444 }
445 }
446
450 public function addOnLoadCode($a_code, $a_batch = 2)
451 {
452 // three batches currently
453 if ($a_batch < 1 || $a_batch > 3) {
454 $a_batch = 2;
455 }
456 $this->on_load_code[$a_batch][] = $a_code;
457 }
458
464 public function getOnLoadCodeForAsynch()
465 {
466 $js = "";
467 for ($i = 1; $i <= 3; $i++) {
468 if (is_array($this->on_load_code[$i])) {
469 foreach ($this->on_load_code[$i] as $code) {
470 $js .= $code . "\n";
471 }
472 }
473 }
474 if ($js) {
475 return '<script type="text/javascript">' . "\n" .
476 $js .
477 '</script>' . "\n";
478 }
479 }
480
481 // REMOVAL CANDIDATE
482 // Usage locations:
483 // - latex.php
487 public function resetJavascript()
488 {
489 $this->js_files = array();
490 $this->js_files_vp = array();
491 $this->js_files_batch = array();
492 }
493
494 // PRIVATE CANDIDATE
495 // Usage locations:
496 // - ilPageObjectGUI
497 // - ilStartUpGUI
498 // - ilObjPortfolioGUI
499 // - latex.php
500 public function fillJavaScriptFiles($a_force = false)
501 {
502 global $DIC;
503
504 $ilSetting = $DIC->settings();
505
506 if (is_object($ilSetting)) { // maybe this one can be removed
507 $vers = "vers=" . str_replace(array(".", " "), "-", $ilSetting->get("ilias_version"));
508
509 if (DEVMODE) {
510 $vers .= '-' . time();
511 }
512 }
513 if ($this->blockExists("js_file")) {
514 // three batches
515 for ($i = 0; $i <= 3; $i++) {
516 reset($this->js_files);
517 foreach ($this->js_files as $file) {
518 if ($this->js_files_batch[$file] == $i) {
519 if (is_file($file) || substr($file, 0, 4) == "http" || substr($file, 0, 2) == "//" || $a_force) {
520 $this->fillJavascriptFile($file, $vers);
521 } elseif (substr($file, 0, 2) == './') { // #13962
522 $url_parts = parse_url($file);
523 if (is_file($url_parts['path'])) {
524 $this->fillJavascriptFile($file, $vers);
525 }
526 }
527 }
528 }
529 }
530 }
531 }
532
536 private function fillOnLoadCode()
537 {
538 for ($i = 1; $i <= 3; $i++) {
539 if (is_array($this->on_load_code[$i])) {
540 $this->setCurrentBlock("on_load_code");
541 foreach ($this->on_load_code[$i] as $code) {
542 $this->setCurrentBlock("on_load_code_inner");
543 $this->setVariable("OLCODE", $code);
544 $this->parseCurrentBlock();
545 }
546 $this->setCurrentBlock("on_load_code");
547 $this->parseCurrentBlock();
548 }
549 }
550 }
551
556 protected function fillJavascriptFile($file, $vers)
557 {
558 $this->setCurrentBlock("js_file");
559 if ($this->js_files_vp[$file]) {
560 $this->setVariable("JS_FILE", ilUtil::appendUrlParameterString($file, $vers));
561 } else {
562 $this->setVariable("JS_FILE", $file);
563 }
564 $this->parseCurrentBlock();
565 }
566
567
568 //***********************************
569 //
570 // CSS files and code
571 //
572 //***********************************
573
578 protected $css_files = array();
579
584 protected $inline_css = array();
585
589 public function addCss($a_css_file, $media = "screen")
590 {
591 if (!array_key_exists($a_css_file . $media, $this->css_files)) {
592 $this->css_files[$a_css_file . $media] = array("file" => $a_css_file, "media" => $media);
593 }
594 }
595
596 // REMOVAL CANDIDATE
597 // Usage locations:
598 // - ilDclRecordEditGUI
599 // - ilObjStyleSheetGUI
603 public function addInlineCss($a_css, $media = "screen")
604 {
605 $this->inline_css[] = array("css" => $a_css, "media" => $media);
606 }
607
608 // PRIVATE CANDIDATE
609 // Usage locations:
610 // - ilPageObjectGUI
611 // - ilDclDetailedViewGUI
612 // - ilStartUpGUI
618 public function fillCssFiles($a_force = false)
619 {
620 if (!$this->blockExists("css_file")) {
621 return;
622 }
623 foreach ($this->css_files as $css) {
624 $filename = $css["file"];
625 if (strpos($filename, "?") > 0) {
626 $filename = substr($filename, 0, strpos($filename, "?"));
627 }
628 if (is_file($filename) || $a_force) {
629 $this->setCurrentBlock("css_file");
630 $this->setVariable("CSS_FILE", $css["file"]);
631 $this->setVariable("CSS_MEDIA", $css["media"]);
632 $this->parseCurrentBlock();
633 }
634 }
635 }
636
637 // REMOVAL CANDIDATE:
638 // Usage locations:
639 // - ilObjMediaPoolGUI
640 // - ilAttendanceList
641 // - ilObjPortfolioGUI
642 // - ilSCORM2004ScoGUI
643 // - ilTestSubmissionReviewGUI
644 // - ilTestPlayerAbstractGUI
645 // - ilAssQuestionHintRequestGUI
646 // - ilWorkspaceFolderExplorer
647 public function setBodyClass($a_class = "")
648 {
649 $this->body_class = $a_class;
650 }
651
652 private function fillBodyClass()
653 {
654 if ($this->body_class != "" && $this->blockExists("body_class")) {
655 $this->setCurrentBlock("body_class");
656 $this->setVariable("BODY_CLASS", $this->body_class);
657 $this->parseCurrentBlock();
658 }
659 }
660
664 private function resetCss()
665 {
666 $this->css_files = array();
667 }
668
674 private function fillInlineCss()
675 {
676 if (!$this->blockExists("css_inline")) {
677 return;
678 }
679 foreach ($this->inline_css as $css) {
680 $this->setCurrentBlock("css_inline");
681 $this->setVariable("CSS_INLINE", $css["css"]);
682 $this->parseCurrentBlock();
683 }
684 }
685
689 private function fillNewContentStyle()
690 {
691 $this->setVariable(
692 "LOCATION_NEWCONTENT_STYLESHEET_TAG",
693 '<link rel="stylesheet" type="text/css" href="' .
695 . '" />'
696 );
697 }
698
699
700 //***********************************
701 //
702 // ILIAS STANDARD TEMPLATE
703 // which is responsible for the look
704 // i.e. a title, tabs, ...
705 //
706 //***********************************
707
713 public function loadStandardTemplate()
714 {
715 if ($this->standard_template_loaded) {
716 return;
717 }
718
719 // always load jQuery
720 include_once("./Services/jQuery/classes/class.iljQueryUtil.php");
723
724 // always load ui framework
725 include_once("./Services/UICore/classes/class.ilUIFramework.php");
727
728 $this->addBlockFile("CONTENT", "content", "tpl.adm_content.html");
729 $this->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html");
730
731 $this->standard_template_loaded = true;
732 }
733
734
735 //***********************************
736 //
737 // HEADER in standard template
738 //
739 //***********************************
740
741 protected $header_page_title = "";
742 protected $title = "";
743 protected $title_desc = "";
744 protected $title_alerts = array();
745 protected $header_action;
746
752 public function setTitle($a_title, $hidden = false)
753 {
754 $this->title = $a_title;
755 $this->header_page_title = $a_title;
756 }
757
761 public function setDescription($a_descr)
762 {
763 $this->title_desc = $a_descr;
764 }
765
769 public function setTitleIcon($a_icon_path, $a_icon_desc = "")
770 {
771 $this->icon_desc = $a_icon_desc;
772 $this->icon_path = $a_icon_path;
773 }
774
780 public function setAlertProperties(array $a_props)
781 {
782 $this->title_alerts = $a_props;
783 }
784
788 public function clearHeader()
789 {
790 $this->setTitle("");
791 $this->setTitleIcon("");
792 $this->setDescription("");
793 $this->setAlertProperties(array());
794 }
795
796 // REMOVAL CANDIDATE
797 // Usage locations:
798 // - ilCalendarPresentationGUI
799 // - ilContainerGUI
800 // - ilObjDataCollectionGUI
801 // - ilDashboardGUI
802 // - ilObjPortfolioTemplateGUI
803 // - ilWikiPageGUI
804 // - ilObjWikiGUI
810 public function setHeaderActionMenu($a_header)
811 {
812 $this->header_action = $a_header;
813 }
814
815 // REMOVAL CANDIDATE
816 // Usage locations:
817 // - ilObjLanguageExtGUI
818 // - ilTestServiceGUI
819 // - ilWikiPageGUI
823 public function setHeaderPageTitle($a_title)
824 {
825 $this->header_page_title = $a_title;
826 }
827
831 private function fillHeader()
832 {
833 global $DIC;
834
835 $lng = $DIC->language();
836
837 $icon = false;
838 if ($this->icon_path != "") {
839 $icon = true;
840 $this->setCurrentBlock("header_image");
841 if ($this->icon_desc != "") {
842 $this->setVariable("IMAGE_DESC", $lng->txt("icon") . " " . $this->icon_desc);
843 $this->setVariable("IMAGE_ALT", $lng->txt("icon") . " " . $this->icon_desc);
844 }
845
846 $this->setVariable("IMG_HEADER", $this->icon_path);
847 $this->parseCurrentBlock();
848 $header = true;
849 }
850
851 if ($this->title != "") {
852 $title = ilUtil::stripScriptHTML($this->title);
853 $this->setVariable("HEADER", $title);
854
855 $header = true;
856 }
857
858 if ($header) {
859 $this->setCurrentBlock("header_image");
860 $this->parseCurrentBlock();
861 }
862
863 if ($this->title_desc != "") {
864 $this->setCurrentBlock("header_desc");
865 $this->setVariable("H_DESCRIPTION", $this->title_desc);
866 $this->parseCurrentBlock();
867 }
868
869 $header = $this->getHeaderActionMenu();
870 if ($header) {
871 $this->setCurrentBlock("head_action_inner");
872 $this->setVariable("HEAD_ACTION", $header);
873 $this->parseCurrentBlock();
874 }
875
876 if (count((array) $this->title_alerts)) {
877 foreach ($this->title_alerts as $alert) {
878 $this->setCurrentBlock('header_alert');
879 if (!($alert['propertyNameVisible'] === false)) {
880 $this->setVariable('H_PROP', $alert['property'] . ':');
881 }
882 $this->setVariable('H_VALUE', $alert['value']);
883 $this->parseCurrentBlock();
884 }
885 }
886
887 // add file upload drop zone in header
888 if ($this->enable_fileupload != null) {
889 $ref_id = $this->enable_fileupload;
890 $upload_id = "dropzone_" . $ref_id;
891
892 include_once("./Services/FileUpload/classes/class.ilFileUploadGUI.php");
893 $upload = new ilFileUploadGUI($upload_id, $ref_id, true);
894
895 $this->setVariable("FILEUPLOAD_DROPZONE_ID", " id=\"$upload_id\"");
896
897 $this->setCurrentBlock("header_fileupload");
898 $this->setVariable("HEADER_FILEUPLOAD_SCRIPT", $upload->getHTML());
899 $this->parseCurrentBlock();
900 }
901 }
902
908 private function getHeaderActionMenu()
909 {
911 }
912
913
914 //***********************************
915 //
916 // LOCATOR in standard template
917 //
918 //***********************************
919
923 public function setLocator()
924 {
925 global $DIC;
926
927 $ilMainMenu = $DIC["ilMainMenu"];
928 $ilLocator = $DIC["ilLocator"];
929
930 $ilPluginAdmin = $DIC["ilPluginAdmin"];
931
932 // blog/portfolio
933 if ($ilMainMenu->getMode() == ilMainMenuGUI::MODE_TOPBAR_REDUCED ||
934 $ilMainMenu->getMode() == ilMainMenuGUI::MODE_TOPBAR_ONLY) {
935 $this->setVariable("LOCATOR", "");
936 return;
937 }
938
939 $html = "";
940 if (is_object($ilPluginAdmin)) {
941 include_once("./Services/UIComponent/classes/class.ilUIHookProcessor.php");
942 $uip = new ilUIHookProcessor(
943 "Services/Locator",
944 "main_locator",
945 array("locator_gui" => $ilLocator)
946 );
947 if (!$uip->replaced()) {
948 $html = $ilLocator->getHTML();
949 }
950 $html = $uip->getHTML($html);
951 } else {
952 $html = $ilLocator->getHTML();
953 }
954
955 $this->setVariable("LOCATOR", $html);
956 }
957
958
959 //***********************************
960 //
961 // TABS in standard template
962 //
963 //***********************************
964
968 protected $tabs_html = "";
969
973 protected $sub_tabs_html = "";
974
978 public function setTabs($a_tabs_html)
979 {
980 if ($a_tabs_html != "" && $this->blockExists("tabs_outer_start")) {
981 $this->touchBlock("tabs_outer_start");
982 $this->touchBlock("tabs_outer_end");
983 $this->touchBlock("tabs_inner_start");
984 $this->touchBlock("tabs_inner_end");
985 $this->setVariable("TABS", $a_tabs_html);
986 }
987 }
988
992 public function setSubTabs($a_tabs_html)
993 {
994 $this->setVariable("SUB_TABS", $a_tabs_html);
995 }
996
997 private function fillTabs()
998 {
999 if ($this->blockExists("tabs_outer_start")) {
1000 $this->touchBlock("tabs_outer_start");
1001 $this->touchBlock("tabs_outer_end");
1002 $this->touchBlock("tabs_inner_start");
1003 $this->touchBlock("tabs_inner_end");
1004
1005 if ($this->tabs_html != "") {
1006 $this->setVariable("TABS", $this->tabs_html);
1007 }
1008 $this->setVariable("SUB_TABS", $this->sub_tabs_html);
1009 }
1010 }
1011
1012 private function getTabsHTML()
1013 {
1014 global $DIC;
1015
1016 $ilTabs = $DIC["ilTabs"];
1017
1018 if ($this->blockExists("tabs_outer_start")) {
1019 $this->sub_tabs_html = $ilTabs->getSubTabHTML();
1020 $this->tabs_html = $ilTabs->getHTML(true);
1021 }
1022 }
1023
1024
1025 //***********************************
1026 //
1027 // COLUMN LAYOUT in standard template
1028 //
1029 //***********************************
1030
1034 public function setContent($a_html)
1035 {
1036 if ($a_html != "") {
1037 $this->main_content = $a_html;
1038 }
1039 }
1040
1044 public function setLeftContent($a_html)
1045 {
1046 $this->left_content = $a_html;
1047 }
1048
1052 public function setLeftNavContent($a_content)
1053 {
1054 $this->left_nav_content = $a_content;
1055 }
1056
1060 private function fillLeftNav()
1061 {
1062 if (trim($this->left_nav_content) != "") {
1063 $this->setCurrentBlock("left_nav");
1064 $this->setVariable("LEFT_NAV_CONTENT", $this->left_nav_content);
1065 $this->parseCurrentBlock();
1066 $this->touchBlock("left_nav_space");
1067 }
1068 }
1069
1073 public function setRightContent($a_html)
1074 {
1075 $this->right_content = $a_html;
1076 }
1077
1078 private function setCenterColumnClass()
1079 {
1080 if (!$this->blockExists("center_col_width")) {
1081 return;
1082 }
1083 $center_column_class = "";
1084 if (trim($this->right_content) != "" && trim($this->left_content) != "") {
1085 $center_column_class = "two_side_col";
1086 } elseif (trim($this->right_content) != "" || trim($this->left_content) != "") {
1087 $center_column_class = "one_side_col";
1088 }
1089
1090 switch ($center_column_class) {
1091 case "one_side_col": $center_column_class = "col-sm-9"; break;
1092 case "two_side_col": $center_column_class = "col-sm-6"; break;
1093 default: $center_column_class = "col-sm-12"; break;
1094 }
1095 if (trim($this->left_content) != "") {
1096 $center_column_class .= " col-sm-push-3";
1097 }
1098
1099 $this->setCurrentBlock("center_col_width");
1100 $this->setVariable("CENTER_COL", $center_column_class);
1101 $this->parseCurrentBlock();
1102 }
1103
1104 private function fillMainContent()
1105 {
1106 if (trim($this->main_content) != "") {
1107 $this->setVariable("ADM_CONTENT", $this->main_content);
1108 }
1109 }
1110
1111 private function fillLeftContent()
1112 {
1113 if (trim($this->left_content) != "") {
1114 $this->setCurrentBlock("left_column");
1115 $this->setVariable("LEFT_CONTENT", $this->left_content);
1116 $left_col_class = (trim($this->right_content) == "")
1117 ? "col-sm-3 col-sm-pull-9"
1118 : "col-sm-3 col-sm-pull-6";
1119 $this->setVariable("LEFT_COL_CLASS", $left_col_class);
1120 $this->parseCurrentBlock();
1121 }
1122 }
1123
1124 private function fillRightContent()
1125 {
1126 if (trim($this->right_content) != "") {
1127 $this->setCurrentBlock("right_column");
1128 $this->setVariable("RIGHT_CONTENT", $this->right_content);
1129 $this->parseCurrentBlock();
1130 }
1131 }
1132
1133
1134 //***********************************
1135 //
1136 // TOOLBAR in standard template
1137 //
1138 //***********************************
1139
1140 private function fillToolbar()
1141 {
1142 global $DIC;
1143
1144 $ilToolbar = $DIC["ilToolbar"];
1145 ;
1146
1147 $thtml = $ilToolbar->getHTML();
1148 if ($thtml != "") {
1149 $this->setCurrentBlock("toolbar_buttons");
1150 $this->setVariable("BUTTONS", $thtml);
1151 $this->parseCurrentBlock();
1152 }
1153 }
1154
1155 // SPECIAL REQUIREMENTS
1156 //
1157 // Stuff that is only used by a little other classes.
1158
1162 private function fillContentLanguage()
1163 {
1164 global $DIC;
1165 $lng = $DIC->language();
1166
1167 if (is_object($lng)) {
1168 $this->setVariable('META_CONTENT_LANGUAGE', $lng->getContentLanguage());
1169 $this->setVariable('LANGUAGE_DIRECTION', $lng->getTextDirection());
1170 }
1171 }
1172
1173 private function fillWindowTitle()
1174 {
1175 global $DIC;
1176
1177 $ilSetting = $DIC->settings();
1178
1179 if ($this->header_page_title != "") {
1180 $title = ilUtil::stripScriptHTML($this->header_page_title);
1181 $this->setVariable("PAGETITLE", "- " . $title);
1182 }
1183
1184 if ($ilSetting->get('short_inst_name') != "") {
1185 $this->setVariable(
1186 "WINDOW_TITLE",
1187 $ilSetting->get('short_inst_name')
1188 );
1189 } else {
1190 $this->setVariable(
1191 "WINDOW_TITLE",
1192 "ILIAS"
1193 );
1194 }
1195 }
1196
1197 // REMOVAL CANDIDATE
1198 // Usage locations:
1199 // - ilLuceneAdvancedSearchGUI
1200 // - ilLuceneSearchGUI
1201 // - ilContainerGUI
1202 public function setPageFormAction($a_action)
1203 {
1204 $this->page_form_action = $a_action;
1205 }
1206
1207 private function fillPageFormAction()
1208 {
1209 if ($this->page_form_action != "") {
1210 $this->setCurrentBlock("page_form_start");
1211 $this->setVariable("PAGE_FORM_ACTION", $this->page_form_action);
1212 $this->parseCurrentBlock();
1213 $this->touchBlock("page_form_end");
1214 }
1215 }
1216
1217
1218 // REMOVAL CANDIDATE
1219 // Usage locations:
1220 // - ilObjForumGUI
1221 // - ilObjPortfolioBaseGUI
1222 // - ilWikiPageGUI
1227 public function setLoginTargetPar($a_val)
1228 {
1229 $this->login_target_par = $a_val;
1230 }
1231
1235 private function getLoginTargetPar()
1236 {
1237 return $this->login_target_par;
1238 }
1239
1240
1241 // REMOVAL CANDIDATE:
1242 // Usage locations:
1243 // - ilLPListOfObjectsGUI
1244 // - ilExport
1245 // - ilLMEditorGUI
1246 // - ilObjPortfolioGUI
1247 // - ilPortfolioHTMLExport
1248 // - ilForumExportGUI
1249 // - ilObjWikiGUI.php
1250 // - ilWikiHTMLExport
1251 // - ilScormSpecialPagesTableGUI
1252 //
1253 // Also this seems to be somehow similar to the stuff going on in printToStdout.
1254 // Maybe we could unify them.
1259 public function getSpecial(
1260 $part = "DEFAULT",
1261 $add_error_mess = false,
1262 $handle_referer = false,
1263 $add_ilias_footer = false,
1264 $add_standard_elements = false,
1265 $a_main_menu = true,
1266 $a_tabs = true
1267 ) {
1268 global $DIC;
1269
1270 if ($add_error_mess) {
1271 $this->fillMessage();
1272 }
1273
1274 if ($add_ilias_footer) {
1275 $this->fillFooter();
1276 }
1277
1278 // set standard parts (tabs and title icon)
1279 if ($add_standard_elements) {
1280 if ($this->blockExists("content") && $a_tabs) {
1281 // determine default screen id
1282 $this->getTabsHTML();
1283 }
1284
1285 // to get also the js files for the main menu
1286 $this->getMainMenu();
1287 $this->initHelp();
1288
1289 // these fill blocks in tpl.main.html
1290 $this->fillCssFiles();
1291 $this->fillInlineCss();
1292 $this->fillBodyClass();
1293
1294 // these fill just plain placeholder variables in tpl.main.html
1295 $this->setCurrentBlock("DEFAULT");
1296 $this->fillNewContentStyle();
1297 $this->fillContentLanguage();
1298 $this->fillWindowTitle();
1299
1300 // these fill blocks in tpl.adm_content.html
1301 $this->fillHeader();
1302 $this->fillSideIcons();
1303 $this->fillScreenReaderFocus();
1304 $this->fillLeftContent();
1305 $this->fillLeftNav();
1306 $this->fillRightContent();
1307 $this->fillAdminPanel();
1308 $this->fillToolbar();
1309 $this->fillPermanentLink();
1310
1311 $this->setCenterColumnClass();
1312
1313 // late loading of javascipr files, since operations above may add files
1314 $this->fillJavaScriptFiles();
1315 $this->fillOnLoadCode();
1316
1317 // these fill just plain placeholder variables in tpl.adm_content.html
1318 if ($this->blockExists("content")) {
1319 $this->setCurrentBlock("content");
1320 if ($a_tabs) {
1321 $this->fillTabs();
1322 }
1323 $this->fillMainContent();
1324 if ($a_main_menu) {
1325 $this->fillMainMenu();
1326 }
1327 $this->fillLightbox();
1328 $this->parseCurrentBlock();
1329 }
1330 }
1331
1332 if ($handle_referer) {
1333 $this->handleReferer();
1334 }
1335
1336 if ($part == "DEFAULT") {
1337 $html = $this->template->get();
1338 } else {
1339 $html = $this->template->get($part);
1340 }
1341
1342 // save language usages as late as possible
1344
1345 return $html;
1346 }
1347
1353 public function printToStdout($part = "DEFAULT", $a_fill_tabs = true, $a_skip_main_menu = false)
1354 {
1355 global $DIC;
1356
1357 $http = $DIC->http();
1358 switch ($http->request()->getHeaderLine('Accept')) {
1359 case 'application/json':
1360 $string = json_encode([
1361 self::MESSAGE_TYPE_SUCCESS => is_null($this->message[self::MESSAGE_TYPE_FAILURE]),
1362 'message' => '',
1363 ]);
1365 $http->saveResponse($http->response()->withBody($stream));
1366 $http->sendResponse();
1367 exit;
1368 default:
1369 // include yahoo dom per default
1370 include_once("./Services/YUI/classes/class.ilYuiUtil.php");
1372
1373 header('P3P: CP="CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa OUR BUS IND UNI COM NAV INT CNT STA PRE"');
1374 header("Content-type: text/html; charset=UTF-8");
1375
1376 $this->fillMessage();
1377
1378 // display ILIAS footer
1379 if ($part !== false) {
1380 $this->fillFooter();
1381 }
1382
1383 // set standard parts (tabs and title icon)
1384 $this->fillBodyClass();
1385 if ($a_fill_tabs) {
1386 if ($this->blockExists("content")) {
1387 // determine default screen id
1388 $this->getTabsHTML();
1389 }
1390
1391 // to get also the js files for the main menu
1392 if (!$a_skip_main_menu) {
1393 $this->getMainMenu();
1394 $this->initHelp();
1395 }
1396
1397 // these fill blocks in tpl.main.html
1398 $this->fillCssFiles();
1399 $this->fillInlineCss();
1400 //$this->fillJavaScriptFiles();
1401
1402 // these fill just plain placeholder variables in tpl.main.html
1403 $this->setCurrentBlock("DEFAULT");
1404 $this->fillNewContentStyle();
1405 $this->fillContentLanguage();
1406 $this->fillWindowTitle();
1407
1408 // these fill blocks in tpl.adm_content.html
1409 $this->fillHeader();
1410 $this->fillSideIcons();
1411 $this->fillScreenReaderFocus();
1412 $this->fillLeftContent();
1413 $this->fillLeftNav();
1414 $this->fillRightContent();
1415 $this->fillAdminPanel();
1416 $this->fillToolbar();
1417 $this->fillPermanentLink();
1418
1419 $this->setCenterColumnClass();
1420
1421 // late loading of javascipr files, since operations above may add files
1422 $this->fillJavaScriptFiles();
1423 $this->fillOnLoadCode();
1424
1425 // these fill just plain placeholder variables in tpl.adm_content.html
1426 if ($this->blockExists("content")) {
1427 $this->setCurrentBlock("content");
1428 $this->fillTabs();
1429 $this->fillMainContent();
1430 $this->fillMainMenu();
1431 $this->fillLightbox();
1432 $this->parseCurrentBlock();
1433 }
1434 }
1435
1436 if ($part == "DEFAULT" or is_bool($part)) {
1437 $html = $this->template->getUnmodified();
1438 } else {
1439 $html = $this->template->getUnmodified($part);
1440 }
1441
1442 // Modification of html is done inline here and can't be done
1443 // by ilTemplate, because the "phase" is template_show in this
1444 // case here.
1445 $ilPluginAdmin = $DIC["ilPluginAdmin"];
1446 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_SERVICE, "UIComponent", "uihk");
1447 foreach ($pl_names as $pl) {
1448 $ui_plugin = ilPluginAdmin::getPluginObject(IL_COMP_SERVICE, "UIComponent", "uihk", $pl);
1449 $gui_class = $ui_plugin->getUIClassInstance();
1450
1451 $resp = $gui_class->getHTML(
1452 "",
1453 "template_show",
1454 array("tpl_id" => $this->tplIdentifier, "tpl_obj" => $this, "html" => $html)
1455 );
1456
1457 if ($resp["mode"] != ilUIHookPluginGUI::KEEP) {
1458 $html = $gui_class->modifyHTML($html, $resp);
1459 }
1460 }
1461
1462 // save language usages as late as possible
1464
1465 print $html;
1466
1467 $this->handleReferer();
1468 break;
1469 }
1470 }
1471
1472
1477 private function handleReferer()
1478 {
1479 if (((substr(strrchr($_SERVER["PHP_SELF"], "/"), 1) != "error.php")
1480 && (substr(strrchr($_SERVER["PHP_SELF"], "/"), 1) != "adm_menu.php")
1481 && (substr(strrchr($_SERVER["PHP_SELF"], "/"), 1) != "chat.php"))) {
1482 // referer is modified if query string contains cmd=gateway and $_POST is not empty.
1483 // this is a workaround to display formular again in case of error and if the referer points to another page
1484 $url_parts = @parse_url($_SERVER["REQUEST_URI"]);
1485 if (!$url_parts) {
1486 $protocol = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://';
1487 $host = $_SERVER['HTTP_HOST'];
1488 $path = $_SERVER['REQUEST_URI'];
1489 $url_parts = @parse_url($protocol . $host . $path);
1490 }
1491
1492 if (isset($url_parts["query"]) && preg_match("/cmd=gateway/", $url_parts["query"]) && (isset($_POST["cmd"]["create"]))) {
1493 foreach ($_POST as $key => $val) {
1494 if (is_array($val)) {
1495 $val = key($val);
1496 }
1497
1498 $str .= "&" . $key . "=" . $val;
1499 }
1500
1501 $_SESSION["referer"] = preg_replace("/cmd=gateway/", substr($str, 1), $_SERVER["REQUEST_URI"]);
1502 $_SESSION['referer_ref_id'] = (int) $_GET['ref_id'];
1503 } elseif (isset($url_parts["query"]) && preg_match("/cmd=post/", $url_parts["query"]) && (isset($_POST["cmd"]["create"]))) {
1504 foreach ($_POST as $key => $val) {
1505 if (is_array($val)) {
1506 $val = key($val);
1507 }
1508
1509 $str .= "&" . $key . "=" . $val;
1510 }
1511
1512 $_SESSION["referer"] = preg_replace("/cmd=post/", substr($str, 1), $_SERVER["REQUEST_URI"]);
1513 if (isset($_GET['ref_id'])) {
1514 $_SESSION['referer_ref_id'] = (int) $_GET['ref_id'];
1515 } else {
1516 $_SESSION['referer_ref_id'] = 0;
1517 }
1518 } else {
1519 $_SESSION["referer"] = $_SERVER["REQUEST_URI"];
1520 if (isset($_GET['ref_id'])) {
1521 $_SESSION['referer_ref_id'] = (int) $_GET['ref_id'];
1522 } else {
1523 $_SESSION['referer_ref_id'] = 0;
1524 }
1525 }
1526
1527 unset($_SESSION["error_post_vars"]);
1528 }
1529 }
1530
1531
1535 private function fillScreenReaderFocus()
1536 {
1537 global $DIC;
1538
1539 $ilUser = $DIC->user();
1540
1541 if (is_object($ilUser) && $ilUser->getPref("screen_reader_optimization") && $this->blockExists("sr_focus")) {
1542 $this->touchBlock("sr_focus");
1543 }
1544 }
1545
1549 private function fillSideIcons()
1550 {
1551 global $DIC;
1552
1553 $ilSetting = $DIC->settings();
1554
1555 $lng = $DIC->language();
1556
1557 // tree/flat icon
1558 if ($this->tree_flat_link != "") {
1559 if ($this->left_nav_content != "") {
1560 $this->touchBlock("tree_lns");
1561 }
1562
1563 $this->setCurrentBlock("tree_mode");
1564 $this->setVariable("LINK_MODE", $this->tree_flat_link);
1565 if ($ilSetting->get("tree_frame") == "right") {
1566 if ($this->tree_flat_mode == "tree") {
1567 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1568 $this->setVariable("RIGHT", "Right");
1569 } else {
1570 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1571 $this->setVariable("RIGHT", "Right");
1572 }
1573 } else {
1574 if ($this->tree_flat_mode == "tree") {
1575 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1576 } else {
1577 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1578 }
1579 }
1580 $this->setVariable("ALT_TREE", $lng->txt($this->tree_flat_mode . "view"));
1581 $this->setVariable("TARGET_TREE", ilFrameTargetInfo::_getFrame("MainContent"));
1582 include_once("./Services/Accessibility/classes/class.ilAccessKeyGUI.php");
1583 $this->setVariable(
1584 "TREE_ACC_KEY",
1585 ilAccessKeyGUI::getAttribute(($this->tree_flat_mode == "tree")
1588 );
1589 $this->parseCurrentBlock();
1590 }
1591
1592 $this->setCurrentBlock("tree_icons");
1593 $this->parseCurrentBlock();
1594 }
1595
1601 public function setTreeFlatIcon($a_link, $a_mode)
1602 {
1603 $this->tree_flat_link = $a_link;
1604 $this->tree_flat_mode = $a_mode;
1605 }
1606
1607
1611 public function addLightbox($a_html, $a_id)
1612 {
1613 $this->lightbox[$a_id] = $a_html;
1614 }
1615
1622 private function fillLightbox()
1623 {
1624 $html = "";
1625
1626 foreach ($this->lightbox as $lb) {
1627 $html .= $lb;
1628 }
1629 $this->setVariable("LIGHTBOX", $html);
1630 }
1631
1632 // ADMIN PANEL
1633 //
1634 // Only used in ilContainerGUI
1635 //
1636 // An "Admin Panel" is that toolbar thingy that could be found on top and bottom
1637 // of a repository listing when editing objects in a container gui.
1638
1640 protected $admin_panel_arrow = null;
1641 protected $admin_panel_bottom = null;
1642
1649 public function addAdminPanelToolbar(ilToolbarGUI $toolb, $a_bottom_panel = true, $a_arrow = false)
1650 {
1651 $this->admin_panel_commands_toolbar = $toolb;
1652 $this->admin_panel_arrow = $a_arrow;
1653 $this->admin_panel_bottom = $a_bottom_panel;
1654 }
1655
1661 private function fillAdminPanel()
1662 {
1663 global $DIC;
1664 $lng = $DIC->language();
1665
1666 if ($this->admin_panel_commands_toolbar === null) {
1667 return;
1668 }
1669
1671 assert($toolbar instanceof \ilToolbarGUI);
1672
1673 // Add arrow if desired.
1674 if ($this->admin_panel_arrow) {
1675 $toolb->setLeadingImage(ilUtil::getImagePath("arrow_upright.svg"), $lng->txt("actions"));
1676 }
1677
1678 $this->fillPageFormAction();
1679
1680 // Add top admin bar.
1681 $this->setCurrentBlock("adm_view_components");
1682 $this->setVariable("ADM_PANEL1", $toolb->getHTML());
1683 $this->parseCurrentBlock();
1684
1685 // Add bottom admin bar if user wants one.
1686 if ($this->admin_panel_bottom) {
1687 $this->setCurrentBlock("adm_view_components2");
1688
1689 // Replace previously set arrow image.
1690 if ($this->admin_panel_arrow) {
1691 $toolb->setLeadingImage(ilUtil::getImagePath("arrow_downright.svg"), $lng->txt("actions"));
1692 }
1693
1694 $this->setVariable("ADM_PANEL2", $toolb->getHTML());
1695 $this->parseCurrentBlock();
1696 }
1697 }
1698
1699 public function setPermanentLink($a_type, $a_id, $a_append = "", $a_target = "", $a_title = "")
1700 {
1701 $this->permanent_link = array(
1702 "type" => $a_type,
1703 "id" => $a_id,
1704 "append" => $a_append,
1705 "target" => $a_target,
1706 "title" => $a_title);
1707 }
1708
1712 private function fillPermanentLink()
1713 {
1714 if (is_array($this->permanent_link)) {
1715 include_once("./Services/PermanentLink/classes/class.ilPermanentLinkGUI.php");
1716 $plinkgui = new ilPermanentLinkGUI(
1717 $this->permanent_link["type"],
1718 $this->permanent_link["id"],
1719 $this->permanent_link["append"],
1720 $this->permanent_link["target"]
1721 );
1722 if ($this->permanent_link["title"] != "") {
1723 $plinkgui->setTitle($this->permanent_link["title"]);
1724 }
1725 $this->setVariable("PRMLINK", $plinkgui->getHTML());
1726 }
1727 }
1728
1732 public function resetHeaderBlock($a_reset_header_action = true)
1733 {
1734 $this->setTitle(null);
1735 $this->setTitleIcon(null);
1736 $this->setDescription(null);
1737 $this->setAlertProperties(array());
1738 $this->enableDragDropFileUpload(null);
1739
1740 // see setFullscreenHeader()
1741 if ($a_reset_header_action) {
1742 $this->setHeaderActionMenu(null);
1743 }
1744 }
1745
1749 public function enableDragDropFileUpload($a_ref_id)
1750 {
1751 $this->enable_fileupload = $a_ref_id;
1752 }
1753
1754
1755 // TEMPLATING AND GLOBAL RENDERING
1756 //
1757 // Forwards to ilTemplate-member.
1758
1763 public function get($part = "DEFAULT")
1764 {
1765 return $this->template->get($part);
1766 }
1767
1768 public function setVariable($variable, $value = '')
1769 {
1770 return $this->template->setVariable($variable, $value);
1771 }
1772
1773 private function variableExists($a_variablename)
1774 {
1775 return $this->template->variableExists($a_variablename);
1776 }
1777
1783 public function setCurrentBlock($part = "DEFAULT")
1784 {
1785 return $this->template->setCurrentBlock($part);
1786 }
1787
1794 public function touchBlock($block)
1795 {
1796 return $this->template->touchBlock($block);
1797 }
1798
1805 public function parseCurrentBlock($part = "DEFAULT")
1806 {
1807 return $this->template->parseCurrentBlock($part);
1808 }
1809
1819 public function addBlockFile($var, $block, $tplname, $in_module = false)
1820 {
1821 return $this->template->addBlockFile($var, $block, $tplname, $in_module);
1822 }
1823
1830 public function blockExists($a_blockname)
1831 {
1832 return $this->template->blockExists($a_blockname);
1833 }
1834}
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
$total
Definition: Utf8Test.php:87
if(! $in) print
$filename
Definition: buildRTE.php:89
$_GET["client_id"]
$_POST["username"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
static ofString($string)
Creates a new stream with an initial value.
Definition: Streams.php:25
const IL_COMP_SERVICE
static getAttribute($a_func_id)
Get accesskey HTML attribute.
special template class to simplify handling of ITX/PEAR
touchBlock($block)
overwrites ITX::touchBlock.
getOnLoadCodeForAsynch()
Get js onload code for ajax calls.
setTitle($a_title, $hidden=false)
Sets title in standard template.
loadStandardTemplate()
This loads the standard template "tpl.adm_content.html" and "tpl.statusline.html" the CONTENT and STA...
setLeftNavContent($a_content)
Sets content of left navigation column.
fillContentLanguage()
Add current user language to meta tags.
fillSideIcons()
Fill side icons (upper icon, tree icon, webfolder icon)
setRightContent($a_html)
Sets content of right column.
setLoginTargetPar($a_val)
Set target parameter for login (public sector).
getHeaderActionMenu()
Get header action menu.
fillScreenReaderFocus()
Accessibility focus for screen readers.
hideFooter()
Make the template hide the footer.
fillInlineCss()
Fill in the inline css.
setOnScreenMessage($a_type, $a_txt, $a_keep=false)
Set a message to be displayed to the user.
setHeaderActionMenu($a_header)
Set header action menu.
fillLeftNav()
Fill left navigation frame.
setContent($a_html)
Sets content for standard template.
fillCssFiles($a_force=false)
Fill in the css file tags.
resetHeaderBlock($a_reset_header_action=true)
Reset all header properties: title, icon, description, alerts, action menu.
resetJavascript()
Reset javascript files.
fillPermanentLink()
Fill in permanent link.
setDescription($a_descr)
Sets descripton below title in standard template.
addJavaScript($a_js_file, $a_add_version_parameter=true, $a_batch=2)
Add a javascript file that should be included in the header.
getSpecial( $part="DEFAULT", $add_error_mess=false, $handle_referer=false, $add_ilias_footer=false, $add_standard_elements=false, $a_main_menu=true, $a_tabs=true)
fillLightbox()
Fill lightbox content.
setTabs($a_tabs_html)
sets tabs in standard template
setAlertProperties(array $a_props)
Set alert properties.
setTreeFlatIcon($a_link, $a_mode)
set tree/flat icon
handleReferer()
TODO: this is nice, but shouldn't be done here (-> maybe at the end of ilias.php!?...
setLeftContent($a_html)
Sets content of left column.
fillNewContentStyle()
Fill Content Style.
fillAdminPanel()
Put admin panel into template:
$inline_css
Stores CSS to be included directly.
addInlineCss($a_css, $media="screen")
Add a css file that should be included in the header.
addBlockFile($var, $block, $tplname, $in_module=false)
overwrites ITX::addBlockFile @access public
fillOnLoadCode()
Fill add on load code.
addLightbox($a_html, $a_id)
Add lightbox html.
printToStdout($part="DEFAULT", $a_fill_tabs=true, $a_skip_main_menu=false)
addCss($a_css_file, $media="screen")
Add a css file that should be included in the header.
addAdminPanelToolbar(ilToolbarGUI $toolb, $a_bottom_panel=true, $a_arrow=false)
Add admin panel commands as toolbar.
setPermanentLink($a_type, $a_id, $a_append="", $a_target="", $a_title="")
setCurrentBlock($part="DEFAULT")
@access public
__construct( $file, $flag1, $flag2, $in_module=false, $vars="DEFAULT", $plugin=false, $a_use_cache=true)
constructor
addOnLoadCode($a_code, $a_batch=2)
Add on load code.
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt @access public.
setHeaderPageTitle($a_title)
Sets the title of the page (for browser window).
enableDragDropFileUpload($a_ref_id)
Enables the file upload into this object by dropping a file.
blockExists($a_blockname)
check if block exists in actual template @access private
setTitleIcon($a_icon_path, $a_icon_desc="")
set title icon
getLoginTargetPar()
Get target parameter for login.
setSubTabs($a_tabs_html)
sets subtabs in standard template
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getFrame($a_class, $a_type='')
Get content frame name.
static isActive()
static _saveUsages()
Store the collected language variable usages in the user session This should be called as late as pos...
static _checkTranslate()
Permission check for translations.
static _isPageTranslation()
Check if the current request is a page translation.
static _getTranslationLink()
Get the link to translate the current page.
Class for permanent links.
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Plugin Object.
special template class to simplify handling of ITX/PEAR
static init(ilGlobalTemplateInterface $a_tpl=null)
Init.
Class ilUIHookProcessor.
static appendUrlParameterString($a_url, $a_par, $xml_style=false)
append URL parameter string ("par1=value1&par2=value2...") to given URL string
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
static stripScriptHTML($a_str, $a_allow="", $a_rm_js=true)
strip only html tags (4.0) from text $allowed contains tags to be allowed, in format tags a and b ar...
static getSystemMessageHTML($a_txt, $a_type="info")
Get HTML for a system message.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static secureUrl($url)
Prepare secure href attribute.
static validate($a_html, $a_mode)
static initDom(ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI Dom.
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
static initjQueryUI($a_tpl=null)
inits and adds the jQuery-UI JS-File to the global template (see included_components....
$txt
Definition: error.php:13
global $DIC
Definition: goto.php:24
global $ilBench
Definition: ilias.php:21
$ilUser
Definition: imgupload.php:18
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
exit
Definition: login.php:29
$i
Definition: metadata.php:24
global $ilSetting
Definition: privfeed.php:17
$url
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10
$http
Definition: raiseError.php:7
$lng
global $ilDB