ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilRTEGlobalTemplate.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 $html = $ilLocator->getHTML();
943 $uip = new ilUIHookProcessor(
944 "Services/Locator",
945 "main_locator",
946 array("locator_gui" => $ilLocator, "html" => $html)
947 );
948 $html = $uip->getHTML($html);
949 } else {
950 $html = $ilLocator->getHTML();
951 }
952
953 $this->setVariable("LOCATOR", $html);
954 }
955
956
957 //***********************************
958 //
959 // TABS in standard template
960 //
961 //***********************************
962
966 protected $tabs_html = "";
967
971 protected $sub_tabs_html = "";
972
976 public function setTabs($a_tabs_html)
977 {
978 if ($a_tabs_html != "" && $this->blockExists("tabs_outer_start")) {
979 $this->touchBlock("tabs_outer_start");
980 $this->touchBlock("tabs_outer_end");
981 $this->touchBlock("tabs_inner_start");
982 $this->touchBlock("tabs_inner_end");
983 $this->setVariable("TABS", $a_tabs_html);
984 }
985 }
986
990 public function setSubTabs($a_tabs_html)
991 {
992 $this->setVariable("SUB_TABS", $a_tabs_html);
993 }
994
995 private function fillTabs()
996 {
997 if ($this->blockExists("tabs_outer_start")) {
998 $this->touchBlock("tabs_outer_start");
999 $this->touchBlock("tabs_outer_end");
1000 $this->touchBlock("tabs_inner_start");
1001 $this->touchBlock("tabs_inner_end");
1002
1003 if ($this->tabs_html != "") {
1004 $this->setVariable("TABS", $this->tabs_html);
1005 }
1006 $this->setVariable("SUB_TABS", $this->sub_tabs_html);
1007 }
1008 }
1009
1010 private function getTabsHTML()
1011 {
1012 global $DIC;
1013
1014 $ilTabs = $DIC["ilTabs"];
1015
1016 if ($this->blockExists("tabs_outer_start")) {
1017 $this->sub_tabs_html = $ilTabs->getSubTabHTML();
1018 $this->tabs_html = $ilTabs->getHTML(true);
1019 }
1020 }
1021
1022
1023 //***********************************
1024 //
1025 // COLUMN LAYOUT in standard template
1026 //
1027 //***********************************
1028
1032 public function setContent($a_html)
1033 {
1034 if ($a_html != "") {
1035 $this->main_content = $a_html;
1036 }
1037 }
1038
1042 public function setLeftContent($a_html)
1043 {
1044 $this->left_content = $a_html;
1045 }
1046
1050 public function setLeftNavContent($a_content)
1051 {
1052 $this->left_nav_content = $a_content;
1053 }
1054
1058 private function fillLeftNav()
1059 {
1060 if (trim($this->left_nav_content) != "") {
1061 $this->setCurrentBlock("left_nav");
1062 $this->setVariable("LEFT_NAV_CONTENT", $this->left_nav_content);
1063 $this->parseCurrentBlock();
1064 $this->touchBlock("left_nav_space");
1065 }
1066 }
1067
1071 public function setRightContent($a_html)
1072 {
1073 $this->right_content = $a_html;
1074 }
1075
1076 private function setCenterColumnClass()
1077 {
1078 if (!$this->blockExists("center_col_width")) {
1079 return;
1080 }
1081 $center_column_class = "";
1082 if (trim($this->right_content) != "" && trim($this->left_content) != "") {
1083 $center_column_class = "two_side_col";
1084 } elseif (trim($this->right_content) != "" || trim($this->left_content) != "") {
1085 $center_column_class = "one_side_col";
1086 }
1087
1088 switch ($center_column_class) {
1089 case "one_side_col": $center_column_class = "col-sm-9"; break;
1090 case "two_side_col": $center_column_class = "col-sm-6"; break;
1091 default: $center_column_class = "col-sm-12"; break;
1092 }
1093 if (trim($this->left_content) != "") {
1094 $center_column_class .= " col-sm-push-3";
1095 }
1096
1097 $this->setCurrentBlock("center_col_width");
1098 $this->setVariable("CENTER_COL", $center_column_class);
1099 $this->parseCurrentBlock();
1100 }
1101
1102 private function fillMainContent()
1103 {
1104 if (trim($this->main_content) != "") {
1105 $this->setVariable("ADM_CONTENT", $this->main_content);
1106 }
1107 }
1108
1109 private function fillLeftContent()
1110 {
1111 if (trim($this->left_content) != "") {
1112 $this->setCurrentBlock("left_column");
1113 $this->setVariable("LEFT_CONTENT", $this->left_content);
1114 $left_col_class = (trim($this->right_content) == "")
1115 ? "col-sm-3 col-sm-pull-9"
1116 : "col-sm-3 col-sm-pull-6";
1117 $this->setVariable("LEFT_COL_CLASS", $left_col_class);
1118 $this->parseCurrentBlock();
1119 }
1120 }
1121
1122 private function fillRightContent()
1123 {
1124 if (trim($this->right_content) != "") {
1125 $this->setCurrentBlock("right_column");
1126 $this->setVariable("RIGHT_CONTENT", $this->right_content);
1127 $this->parseCurrentBlock();
1128 }
1129 }
1130
1131
1132 //***********************************
1133 //
1134 // TOOLBAR in standard template
1135 //
1136 //***********************************
1137
1138 private function fillToolbar()
1139 {
1140 global $DIC;
1141
1142 $ilToolbar = $DIC["ilToolbar"];
1143 ;
1144
1145 $thtml = $ilToolbar->getHTML();
1146 if ($thtml != "") {
1147 $this->setCurrentBlock("toolbar_buttons");
1148 $this->setVariable("BUTTONS", $thtml);
1149 $this->parseCurrentBlock();
1150 }
1151 }
1152
1153 // SPECIAL REQUIREMENTS
1154 //
1155 // Stuff that is only used by a little other classes.
1156
1160 private function fillContentLanguage()
1161 {
1162 global $DIC;
1163
1164 $lng = $DIC->language();
1165 $ilUser = $DIC->user();
1166
1167 $contentLanguage = 'en';
1168 $rtl = array('ar','fa','ur','he');//, 'de'); //make a list of rtl languages
1169 /* rtl-review: add "de" for testing with ltr lang shown in rtl
1170 * and set unicode-bidi to bidi-override for mirror effect */
1171 $textdir = 'ltr';
1172 if (is_object($ilUser)) {
1173 if ($ilUser->getLanguage()) {
1174 $contentLanguage = $ilUser->getLanguage();
1175 } elseif (is_object($lng)) {
1176 $contentLanguage = $lng->getDefaultLanguage();
1177 }
1178 }
1179 $this->setVariable('META_CONTENT_LANGUAGE', $contentLanguage);
1180 if (in_array($contentLanguage, $rtl)) {
1181 $textdir = 'rtl';
1182 }
1183 $this->setVariable('LANGUAGE_DIRECTION', $textdir);
1184 return true;
1185 }
1186
1187 // PRIVATE CANDIDATE
1188 // Usage locations:
1189 // - ilStartUpGUI
1190 public function fillWindowTitle()
1191 {
1192 global $DIC;
1193
1194 $ilSetting = $DIC->settings();
1195
1196 if ($this->header_page_title != "") {
1197 $title = ilUtil::stripScriptHTML($this->header_page_title);
1198 $this->setVariable("PAGETITLE", "- " . $title);
1199 }
1200
1201 if ($ilSetting->get('short_inst_name') != "") {
1202 $this->setVariable(
1203 "WINDOW_TITLE",
1204 $ilSetting->get('short_inst_name')
1205 );
1206 } else {
1207 $this->setVariable(
1208 "WINDOW_TITLE",
1209 "ILIAS"
1210 );
1211 }
1212 }
1213
1214 // REMOVAL CANDIDATE
1215 // Usage locations:
1216 // - ilLuceneAdvancedSearchGUI
1217 // - ilLuceneSearchGUI
1218 // - ilContainerGUI
1219 public function setPageFormAction($a_action)
1220 {
1221 $this->page_form_action = $a_action;
1222 }
1223
1224 private function fillPageFormAction()
1225 {
1226 if ($this->page_form_action != "") {
1227 $this->setCurrentBlock("page_form_start");
1228 $this->setVariable("PAGE_FORM_ACTION", $this->page_form_action);
1229 $this->parseCurrentBlock();
1230 $this->touchBlock("page_form_end");
1231 }
1232 }
1233
1234
1235 // REMOVAL CANDIDATE
1236 // Usage locations:
1237 // - ilObjForumGUI
1238 // - ilObjPortfolioBaseGUI
1239 // - ilWikiPageGUI
1244 public function setLoginTargetPar($a_val)
1245 {
1246 $this->login_target_par = $a_val;
1247 }
1248
1252 private function getLoginTargetPar()
1253 {
1254 return $this->login_target_par;
1255 }
1256
1257
1258 // REMOVAL CANDIDATE:
1259 // Usage locations:
1260 // - ilLPListOfObjectsGUI
1261 // - ilExport
1262 // - ilLMEditorGUI
1263 // - ilObjPortfolioGUI
1264 // - ilPortfolioHTMLExport
1265 // - ilForumExportGUI
1266 // - ilObjWikiGUI.php
1267 // - ilWikiHTMLExport
1268 // - ilScormSpecialPagesTableGUI
1269 //
1270 // Also this seems to be somehow similar to the stuff going on in printToStdout.
1271 // Maybe we could unify them.
1276 public function getSpecial(
1277 $part = "DEFAULT",
1278 $add_error_mess = false,
1279 $handle_referer = false,
1280 $add_ilias_footer = false,
1281 $add_standard_elements = false,
1282 $a_main_menu = true,
1283 $a_tabs = true
1284 ) {
1285 global $DIC;
1286
1287 if ($add_error_mess) {
1288 $this->fillMessage();
1289 }
1290
1291 if ($add_ilias_footer) {
1292 $this->fillFooter();
1293 }
1294
1295 // set standard parts (tabs and title icon)
1296 if ($add_standard_elements) {
1297 if ($this->blockExists("content") && $a_tabs) {
1298 // determine default screen id
1299 $this->getTabsHTML();
1300 }
1301
1302 // to get also the js files for the main menu
1303 $this->getMainMenu();
1304 $this->initHelp();
1305
1306 // these fill blocks in tpl.main.html
1307 $this->fillCssFiles();
1308 $this->fillInlineCss();
1309 $this->fillBodyClass();
1310
1311 // these fill just plain placeholder variables in tpl.main.html
1312 $this->setCurrentBlock("DEFAULT");
1313 $this->fillNewContentStyle();
1314 $this->fillContentLanguage();
1315 $this->fillWindowTitle();
1316
1317 // these fill blocks in tpl.adm_content.html
1318 $this->fillHeader();
1319 $this->fillSideIcons();
1320 $this->fillScreenReaderFocus();
1321 $this->fillLeftContent();
1322 $this->fillLeftNav();
1323 $this->fillRightContent();
1324 $this->fillAdminPanel();
1325 $this->fillToolbar();
1326 $this->fillPermanentLink();
1327
1328 $this->setCenterColumnClass();
1329
1330 // late loading of javascipr files, since operations above may add files
1331 $this->fillJavaScriptFiles();
1332 $this->fillOnLoadCode();
1333
1334 // these fill just plain placeholder variables in tpl.adm_content.html
1335 if ($this->blockExists("content")) {
1336 $this->setCurrentBlock("content");
1337 if ($a_tabs) {
1338 $this->fillTabs();
1339 }
1340 $this->fillMainContent();
1341 if ($a_main_menu) {
1342 $this->fillMainMenu();
1343 }
1344 $this->fillLightbox();
1345 $this->parseCurrentBlock();
1346 }
1347 }
1348
1349 if ($handle_referer) {
1350 $this->handleReferer();
1351 }
1352
1353 if ($part == "DEFAULT") {
1354 $html = $this->template->get();
1355 } else {
1356 $html = $this->template->get($part);
1357 }
1358
1359 // save language usages as late as possible
1361
1362 return $html;
1363 }
1364
1370 public function printToStdout($part = "DEFAULT", $a_fill_tabs = true, $a_skip_main_menu = false)
1371 {
1372 global $DIC;
1373
1374 $http = $DIC->http();
1375 switch ($http->request()->getHeaderLine('Accept')) {
1376 case 'application/json':
1377 $string = json_encode([
1378 self::MESSAGE_TYPE_SUCCESS => is_null($this->message[self::MESSAGE_TYPE_FAILURE]),
1379 'message' => '',
1380 ]);
1382 $http->saveResponse($http->response()->withBody($stream));
1383 $http->sendResponse();
1384 exit;
1385 default:
1386 // include yahoo dom per default
1387 include_once("./Services/YUI/classes/class.ilYuiUtil.php");
1389
1390 header('P3P: CP="CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa OUR BUS IND UNI COM NAV INT CNT STA PRE"');
1391 header("Content-type: text/html; charset=UTF-8");
1392
1393 $this->fillMessage();
1394
1395 // display ILIAS footer
1396 if ($part !== false) {
1397 $this->fillFooter();
1398 }
1399
1400 // set standard parts (tabs and title icon)
1401 $this->fillBodyClass();
1402 if ($a_fill_tabs) {
1403 if ($this->blockExists("content")) {
1404 // determine default screen id
1405 $this->getTabsHTML();
1406 }
1407
1408 // to get also the js files for the main menu
1409 if (!$a_skip_main_menu) {
1410 $this->getMainMenu();
1411 $this->initHelp();
1412 }
1413
1414 // these fill blocks in tpl.main.html
1415 $this->fillCssFiles();
1416 $this->fillInlineCss();
1417 //$this->fillJavaScriptFiles();
1418
1419 // these fill just plain placeholder variables in tpl.main.html
1420 $this->setCurrentBlock("DEFAULT");
1421 $this->fillNewContentStyle();
1422 $this->fillContentLanguage();
1423 $this->fillWindowTitle();
1424
1425 // these fill blocks in tpl.adm_content.html
1426 $this->fillHeader();
1427 $this->fillSideIcons();
1428 $this->fillScreenReaderFocus();
1429 $this->fillLeftContent();
1430 $this->fillLeftNav();
1431 $this->fillRightContent();
1432 $this->fillAdminPanel();
1433 $this->fillToolbar();
1434 $this->fillPermanentLink();
1435
1436 $this->setCenterColumnClass();
1437
1438 // late loading of javascipr files, since operations above may add files
1439 $this->fillJavaScriptFiles();
1440 $this->fillOnLoadCode();
1441
1442 // these fill just plain placeholder variables in tpl.adm_content.html
1443 if ($this->blockExists("content")) {
1444 $this->setCurrentBlock("content");
1445 $this->fillTabs();
1446 $this->fillMainContent();
1447 $this->fillMainMenu();
1448 $this->fillLightbox();
1449 $this->parseCurrentBlock();
1450 }
1451 }
1452
1453 if ($part == "DEFAULT" or is_bool($part)) {
1454 $html = $this->template->getUnmodified();
1455 } else {
1456 $html = $this->template->getUnmodified($part);
1457 }
1458
1459 // Modification of html is done inline here and can't be done
1460 // by ilTemplate, because the "phase" is template_show in this
1461 // case here.
1462 $ilPluginAdmin = $DIC["ilPluginAdmin"];
1463 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_SERVICE, "UIComponent", "uihk");
1464 foreach ($pl_names as $pl) {
1465 $ui_plugin = ilPluginAdmin::getPluginObject(IL_COMP_SERVICE, "UIComponent", "uihk", $pl);
1466 $gui_class = $ui_plugin->getUIClassInstance();
1467
1468 $resp = $gui_class->getHTML(
1469 "",
1470 "template_show",
1471 array("tpl_id" => $this->tplIdentifier, "tpl_obj" => $this, "html" => $html)
1472 );
1473
1474 if ($resp["mode"] != ilUIHookPluginGUI::KEEP) {
1475 $html = $gui_class->modifyHTML($html, $resp);
1476 }
1477 }
1478
1479 // save language usages as late as possible
1481
1482 print $html;
1483
1484 $this->handleReferer();
1485 break;
1486 }
1487 }
1488
1489
1494 private function handleReferer()
1495 {
1496 if (((substr(strrchr($_SERVER["PHP_SELF"], "/"), 1) != "error.php")
1497 && (substr(strrchr($_SERVER["PHP_SELF"], "/"), 1) != "adm_menu.php")
1498 && (substr(strrchr($_SERVER["PHP_SELF"], "/"), 1) != "chat.php"))) {
1499 // referer is modified if query string contains cmd=gateway and $_POST is not empty.
1500 // this is a workaround to display formular again in case of error and if the referer points to another page
1501 $url_parts = @parse_url($_SERVER["REQUEST_URI"]);
1502 if (!$url_parts) {
1503 $protocol = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://';
1504 $host = $_SERVER['HTTP_HOST'];
1505 $path = $_SERVER['REQUEST_URI'];
1506 $url_parts = @parse_url($protocol . $host . $path);
1507 }
1508
1509 if (isset($url_parts["query"]) && preg_match("/cmd=gateway/", $url_parts["query"]) && (isset($_POST["cmd"]["create"]))) {
1510 foreach ($_POST as $key => $val) {
1511 if (is_array($val)) {
1512 $val = key($val);
1513 }
1514
1515 $str .= "&" . $key . "=" . $val;
1516 }
1517
1518 $_SESSION["referer"] = preg_replace("/cmd=gateway/", substr($str, 1), $_SERVER["REQUEST_URI"]);
1519 $_SESSION['referer_ref_id'] = (int) $_GET['ref_id'];
1520 } elseif (isset($url_parts["query"]) && preg_match("/cmd=post/", $url_parts["query"]) && (isset($_POST["cmd"]["create"]))) {
1521 foreach ($_POST as $key => $val) {
1522 if (is_array($val)) {
1523 $val = key($val);
1524 }
1525
1526 $str .= "&" . $key . "=" . $val;
1527 }
1528
1529 $_SESSION["referer"] = preg_replace("/cmd=post/", substr($str, 1), $_SERVER["REQUEST_URI"]);
1530 if (isset($_GET['ref_id'])) {
1531 $_SESSION['referer_ref_id'] = (int) $_GET['ref_id'];
1532 } else {
1533 $_SESSION['referer_ref_id'] = 0;
1534 }
1535 } else {
1536 $_SESSION["referer"] = $_SERVER["REQUEST_URI"];
1537 if (isset($_GET['ref_id'])) {
1538 $_SESSION['referer_ref_id'] = (int) $_GET['ref_id'];
1539 } else {
1540 $_SESSION['referer_ref_id'] = 0;
1541 }
1542 }
1543
1544 unset($_SESSION["error_post_vars"]);
1545 }
1546 }
1547
1548
1552 private function fillScreenReaderFocus()
1553 {
1554 global $DIC;
1555
1556 $ilUser = $DIC->user();
1557
1558 if (is_object($ilUser) && $ilUser->getPref("screen_reader_optimization") && $this->blockExists("sr_focus")) {
1559 $this->touchBlock("sr_focus");
1560 }
1561 }
1562
1566 private function fillSideIcons()
1567 {
1568 global $DIC;
1569
1570 $ilSetting = $DIC->settings();
1571
1572 $lng = $DIC->language();
1573
1574 // tree/flat icon
1575 if ($this->tree_flat_link != "") {
1576 if ($this->left_nav_content != "") {
1577 $this->touchBlock("tree_lns");
1578 }
1579
1580 $this->setCurrentBlock("tree_mode");
1581 $this->setVariable("LINK_MODE", $this->tree_flat_link);
1582 if ($ilSetting->get("tree_frame") == "right") {
1583 if ($this->tree_flat_mode == "tree") {
1584 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1585 $this->setVariable("RIGHT", "Right");
1586 } else {
1587 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1588 $this->setVariable("RIGHT", "Right");
1589 }
1590 } else {
1591 if ($this->tree_flat_mode == "tree") {
1592 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1593 } else {
1594 $this->setVariable("IMG_TREE", ilUtil::getImagePath("icon_sidebar_on.svg"));
1595 }
1596 }
1597 $this->setVariable("ALT_TREE", $lng->txt($this->tree_flat_mode . "view"));
1598 $this->setVariable("TARGET_TREE", ilFrameTargetInfo::_getFrame("MainContent"));
1599 include_once("./Services/Accessibility/classes/class.ilAccessKeyGUI.php");
1600 $this->setVariable(
1601 "TREE_ACC_KEY",
1602 ilAccessKeyGUI::getAttribute(($this->tree_flat_mode == "tree")
1605 );
1606 $this->parseCurrentBlock();
1607 }
1608
1609 $this->setCurrentBlock("tree_icons");
1610 $this->parseCurrentBlock();
1611 }
1612
1618 public function setTreeFlatIcon($a_link, $a_mode)
1619 {
1620 $this->tree_flat_link = $a_link;
1621 $this->tree_flat_mode = $a_mode;
1622 }
1623
1624
1628 public function addLightbox($a_html, $a_id)
1629 {
1630 $this->lightbox[$a_id] = $a_html;
1631 }
1632
1639 private function fillLightbox()
1640 {
1641 $html = "";
1642
1643 foreach ($this->lightbox as $lb) {
1644 $html .= $lb;
1645 }
1646 $this->setVariable("LIGHTBOX", $html);
1647 }
1648
1649 // ADMIN PANEL
1650 //
1651 // Only used in ilContainerGUI
1652 //
1653 // An "Admin Panel" is that toolbar thingy that could be found on top and bottom
1654 // of a repository listing when editing objects in a container gui.
1655
1657 protected $admin_panel_arrow = null;
1658 protected $admin_panel_bottom = null;
1659
1666 public function addAdminPanelToolbar(ilToolbarGUI $toolb, $a_bottom_panel = true, $a_arrow = false)
1667 {
1668 $this->admin_panel_commands_toolbar = $toolb;
1669 $this->admin_panel_arrow = $a_arrow;
1670 $this->admin_panel_bottom = $a_bottom_panel;
1671 }
1672
1678 private function fillAdminPanel()
1679 {
1680 global $DIC;
1681 $lng = $DIC->language();
1682
1683 if ($this->admin_panel_commands_toolbar === null) {
1684 return;
1685 }
1686
1688 assert($toolbar instanceof \ilToolbarGUI);
1689
1690 // Add arrow if desired.
1691 if ($this->admin_panel_arrow) {
1692 $toolb->setLeadingImage(ilUtil::getImagePath("arrow_upright.svg"), $lng->txt("actions"));
1693 }
1694
1695 $this->fillPageFormAction();
1696
1697 // Add top admin bar.
1698 $this->setCurrentBlock("adm_view_components");
1699 $this->setVariable("ADM_PANEL1", $toolb->getHTML());
1700 $this->parseCurrentBlock();
1701
1702 // Add bottom admin bar if user wants one.
1703 if ($this->admin_panel_bottom) {
1704 $this->setCurrentBlock("adm_view_components2");
1705
1706 // Replace previously set arrow image.
1707 if ($this->admin_panel_arrow) {
1708 $toolb->setLeadingImage(ilUtil::getImagePath("arrow_downright.svg"), $lng->txt("actions"));
1709 }
1710
1711 $this->setVariable("ADM_PANEL2", $toolb->getHTML());
1712 $this->parseCurrentBlock();
1713 }
1714 }
1715
1716 public function setPermanentLink($a_type, $a_id, $a_append = "", $a_target = "", $a_title = "")
1717 {
1718 $this->permanent_link = array(
1719 "type" => $a_type,
1720 "id" => $a_id,
1721 "append" => $a_append,
1722 "target" => $a_target,
1723 "title" => $a_title);
1724 }
1725
1729 private function fillPermanentLink()
1730 {
1731 if (is_array($this->permanent_link)) {
1732 include_once("./Services/PermanentLink/classes/class.ilPermanentLinkGUI.php");
1733 $plinkgui = new ilPermanentLinkGUI(
1734 $this->permanent_link["type"],
1735 $this->permanent_link["id"],
1736 $this->permanent_link["append"],
1737 $this->permanent_link["target"]
1738 );
1739 if ($this->permanent_link["title"] != "") {
1740 $plinkgui->setTitle($this->permanent_link["title"]);
1741 }
1742 $this->setVariable("PRMLINK", $plinkgui->getHTML());
1743 }
1744 }
1745
1749 public function resetHeaderBlock($a_reset_header_action = true)
1750 {
1751 $this->setTitle(null);
1752 $this->setTitleIcon(null);
1753 $this->setDescription(null);
1754 $this->setAlertProperties(array());
1755 $this->enableDragDropFileUpload(null);
1756
1757 // see setFullscreenHeader()
1758 if ($a_reset_header_action) {
1759 $this->setHeaderActionMenu(null);
1760 }
1761 }
1762
1766 public function enableDragDropFileUpload($a_ref_id)
1767 {
1768 $this->enable_fileupload = $a_ref_id;
1769 }
1770
1771
1772 // TEMPLATING AND GLOBAL RENDERING
1773 //
1774 // Forwards to ilTemplate-member.
1775
1780 public function get($part = "DEFAULT")
1781 {
1782 return $this->template->get($part);
1783 }
1784
1785 public function setVariable($variable, $value = '')
1786 {
1787 return $this->template->setVariable($variable, $value);
1788 }
1789
1790 private function variableExists($a_variablename)
1791 {
1792 return $this->template->variableExists($a_variablename);
1793 }
1794
1800 public function setCurrentBlock($part = "DEFAULT")
1801 {
1802 return $this->template->setCurrentBlock($part);
1803 }
1804
1811 public function touchBlock($block)
1812 {
1813 return $this->template->touchBlock($block);
1814 }
1815
1822 public function parseCurrentBlock($part = "DEFAULT")
1823 {
1824 return $this->template->parseCurrentBlock($part);
1825 }
1826
1836 public function addBlockFile($var, $block, $tplname, $in_module = false)
1837 {
1838 return $this->template->addBlockFile($var, $block, $tplname, $in_module);
1839 }
1840
1847 public function blockExists($a_blockname)
1848 {
1849 return $this->template->blockExists($a_blockname);
1850 }
1851}
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.
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
fillLeftNav()
Fill left navigation frame.
resetHeaderBlock($a_reset_header_action=true)
Reset all header properties: title, icon, description, alerts, action menu.
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt @access public.
addAdminPanelToolbar(ilToolbarGUI $toolb, $a_bottom_panel=true, $a_arrow=false)
Add admin panel commands as toolbar.
setHeaderActionMenu($a_header)
Set header action menu.
fillMessage()
Fill message area.
setVariable($variable, $value='')
setAlertProperties(array $a_props)
Set alert properties.
addInlineCss($a_css, $media="screen")
Add a css file that should be included in the header.
addCss($a_css_file, $media="screen")
Add a css file that should be included in the header.
setHeaderPageTitle($a_title)
Sets the title of the page (for browser window).
getHeaderActionMenu()
Get header action menu.
enableDragDropFileUpload($a_ref_id)
Enables the file upload into this object by dropping a file.
fillOnLoadCode()
Fill add on load code.
setSubTabs($a_tabs_html)
sets subtabs in standard template
fillCssFiles($a_force=false)
Fill in the css file tags.
setLeftContent($a_html)
Sets content of left column.
__construct( $file, $flag1, $flag2, $in_module=false, $vars="DEFAULT", $plugin=false, $a_use_cache=true)
constructor
$inline_css
Stores CSS to be included directly.
handleReferer()
TODO: this is nice, but shouldn't be done here (-> maybe at the end of ilias.php!?...
setContent($a_html)
Sets content for standard template.
fillPermanentLink()
Fill in permanent link.
setLoginTargetPar($a_val)
Set target parameter for login (public sector).
setDescription($a_descr)
Sets descripton below title in standard template.
touchBlock($block)
overwrites ITX::touchBlock.
addBlockFile($var, $block, $tplname, $in_module=false)
overwrites ITX::addBlockFile @access public
fillFooter()
Fill the footer area.
fillScreenReaderFocus()
Accessibility focus for screen readers.
setTabs($a_tabs_html)
sets tabs in standard template
setTreeFlatIcon($a_link, $a_mode)
set tree/flat icon
setCurrentBlock($part="DEFAULT")
@access public
addLightbox($a_html, $a_id)
Add lightbox html.
fillNewContentStyle()
Fill Content Style.
addOnLoadCode($a_code, $a_batch=2)
Add on load code.
printToStdout($part="DEFAULT", $a_fill_tabs=true, $a_skip_main_menu=false)
loadStandardTemplate()
This loads the standard template "tpl.adm_content.html" and "tpl.statusline.html" the CONTENT and STA...
setOnScreenMessage($a_type, $a_txt, $a_keep=false)
Set a message to be displayed to the user.
blockExists($a_blockname)
check if block exists in actual template @access private
setPermanentLink($a_type, $a_id, $a_append="", $a_target="", $a_title="")
fillContentLanguage()
Add current user language to meta tags.
getLoginTargetPar()
Get target parameter for login.
fillSideIcons()
Fill side icons (upper icon, tree icon, webfolder icon)
setTitleIcon($a_icon_path, $a_icon_desc="")
set title icon
fillInlineCss()
Fill in the inline css.
addJavaScript($a_js_file, $a_add_version_parameter=true, $a_batch=2)
Add a javascript file that should be included in the header.
resetJavascript()
Reset javascript files.
setTitle($a_title, $hidden=false)
Sets title in standard template.
fillLightbox()
Fill lightbox content.
fillAdminPanel()
Put admin panel into template:
hideFooter()
Make the template hide the footer.
setRightContent($a_html)
Sets content of right column.
setLeftNavContent($a_content)
Sets content of left navigation column.
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)
getOnLoadCodeForAsynch()
Get js onload code for ajax calls.
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