ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
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 
4 include_once("./Services/UICore/lib/html-it/IT.php");
5 include_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");
117  if (($l = ilSystemSupportContactsGUI::getFooterLink()) != "") {
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 
261  protected $main_menu_spacer;
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  {
910  return $this->header_action;
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  ]);
1364  $stream = \ILIAS\Filesystem\Stream\Streams::ofString($string);
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 }
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
setOnScreenMessage($a_type, $a_txt, $a_keep=false)
Set a message to be displayed to the user.
exit
Definition: login.php:29
Class for permanent links.
setDescription($a_descr)
Sets descripton below title in standard template.
$_SESSION["AccountId"]
fillNewContentStyle()
Fill Content Style.
setTabs($a_tabs_html)
sets tabs in standard template
static _isPageTranslation()
Check if the current request is a page translation.
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt public...
$_GET["client_id"]
addLightbox($a_html, $a_id)
Add lightbox html.
static getSystemMessageHTML($a_txt, $a_type="info")
Get HTML for a system message.
fillInlineCss()
Fill in the inline css.
getHeaderActionMenu()
Get header action menu.
fillSideIcons()
Fill side icons (upper icon, tree icon, webfolder icon)
setAlertProperties(array $a_props)
Set alert properties.
setLoginTargetPar($a_val)
Set target parameter for login (public sector).
fillPermanentLink()
Fill in permanent link.
static getNewContentStyleSheetLocation($mode="output")
get full style sheet file name (path inclusive) of current user
getLoginTargetPar()
Get target parameter for login.
setTitleIcon($a_icon_path, $a_icon_desc="")
set title icon
touchBlock($block)
overwrites ITX::touchBlock.
blockExists($a_blockname)
check if block exists in actual template private
setLeftNavContent($a_content)
Sets content of left navigation column.
$total
Definition: Utf8Test.php:87
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...
fillFooter()
Fill the footer area.
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)
static validate($a_html, $a_mode)
static initDom(ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI Dom.
setPermanentLink($a_type, $a_id, $a_append="", $a_target="", $a_title="")
setContent($a_html)
Sets content for standard template.
addOnLoadCode($a_code, $a_batch=2)
Add on load code.
static appendUrlParameterString($a_url, $a_par, $xml_style=false)
append URL parameter string ("par1=value1&par2=value2...") to given URL string
fillAdminPanel()
Put admin panel into template:
printToStdout($part="DEFAULT", $a_fill_tabs=true, $a_skip_main_menu=false)
static _getTranslationLink()
Get the link to translate the current page.
special template class to simplify handling of ITX/PEAR
$lng
setTitle($a_title, $hidden=false)
Sets title in standard template.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
setHeaderPageTitle($a_title)
Sets the title of the page (for browser window).
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10
resetJavascript()
Reset javascript files.
fillScreenReaderFocus()
Accessibility focus for screen readers.
resetHeaderBlock($a_reset_header_action=true)
Reset all header properties: title, icon, description, alerts, action menu.
global $DIC
Definition: goto.php:24
fillCssFiles($a_force=false)
Fill in the css file tags.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
static ofString($string)
Creates a new stream with an initial value.
Definition: Streams.php:25
__construct( $file, $flag1, $flag2, $in_module=false, $vars="DEFAULT", $plugin=false, $a_use_cache=true)
constructor
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Plugin Object.
addInlineCss($a_css, $media="screen")
Add a css file that should be included in the header.
hideFooter()
Make the template hide the footer.
$http
Definition: raiseError.php:7
setCurrentBlock($part="DEFAULT")
public
$txt
Definition: error.php:13
setRightContent($a_html)
Sets content of right column.
fillContentLanguage()
Add current user language to meta tags.
$filename
Definition: buildRTE.php:89
setHeaderActionMenu($a_header)
Set header action menu.
static initjQueryUI($a_tpl=null)
inits and adds the jQuery-UI JS-File to the global template (see included_components.txt for included components)
static secureUrl($url)
Prepare secure href attribute.
enableDragDropFileUpload($a_ref_id)
Enables the file upload into this object by dropping a file.
$inline_css
Stores CSS to be included directly.
static _getFrame($a_class, $a_type='')
Get content frame name.
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
loadStandardTemplate()
This loads the standard template "tpl.adm_content.html" and "tpl.statusline.html" the CONTENT and STA...
global $ilSetting
Definition: privfeed.php:17
addAdminPanelToolbar(ilToolbarGUI $toolb, $a_bottom_panel=true, $a_arrow=false)
Add admin panel commands as toolbar.
fillLeftNav()
Fill left navigation frame.
static init(ilGlobalTemplateInterface $a_tpl=null)
Init.
fillOnLoadCode()
Fill add on load code.
global $ilBench
Definition: ilias.php:21
global $ilDB
handleReferer()
TODO: this is nice, but shouldn&#39;t be done here (-> maybe at the end of ilias.php!?, alex)
static _saveUsages()
Store the collected language variable usages in the user session This should be called as late as pos...
getOnLoadCodeForAsynch()
Get js onload code for ajax calls.
setLeftContent($a_html)
Sets content of left column.
addJavaScript($a_js_file, $a_add_version_parameter=true, $a_batch=2)
Add a javascript file that should be included in the header.
$url
static getAttribute($a_func_id)
Get accesskey HTML attribute.
$ilUser
Definition: imgupload.php:18
setSubTabs($a_tabs_html)
sets subtabs in standard template
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
setTreeFlatIcon($a_link, $a_mode)
set tree/flat icon
addCss($a_css_file, $media="screen")
Add a css file that should be included in the header.
$_POST["username"]
const IL_COMP_SERVICE
fillLightbox()
Fill lightbox content.
$i
Definition: metadata.php:24
static _checkTranslate()
Permission check for translations.
static isActive()
addBlockFile($var, $block, $tplname, $in_module=false)
overwrites ITX::addBlockFile public