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