ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilCOPageHTMLExport.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
3
12{
16 protected $mobs = [];
17
21 protected $glossary_terms = [];
22
26 protected $files = [];
27
31 protected $files_direct = [];
32
36 protected $int_links = [];
37
41 protected $q_ids = [];
42
46 protected $exp_dir = "";
47
51 protected $content_style_id = 0;
52
56 protected $user;
57
61 protected $log;
62
66 protected $global_screen;
67
71 protected $page_linker;
72
76 protected $ref_id;
77
82 public function __construct($a_exp_dir, \ILIAS\COPage\PageLinker $linker = null, $ref_id = 0)
83 {
84 global $DIC;
85
86 $this->log = ilLoggerFactory::getLogger('copg');
87 $this->user = $DIC->user();
88 $this->global_screen = $DIC->globalScreen();
89 $this->page_linker = is_null($linker)
90 ? new ilPageLinker("", true)
91 : $linker;
92 $this->ref_id = $ref_id;
93
94 $this->exp_dir = $a_exp_dir;
95 $this->mobs_dir = $a_exp_dir . "/mobs";
96 $this->files_dir = $a_exp_dir . "/files";
97 $this->tex_dir = $a_exp_dir . "/teximg";
98 $this->content_style_dir = $a_exp_dir . "/content_style";
99 $this->content_style_img_dir = $a_exp_dir . "/content_style/images";
100
101 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
102 $this->services_dir = $a_exp_dir . "/Services";
103 $this->media_service_dir = $this->services_dir . "/MediaObjects";
104 $this->flv_dir = $a_exp_dir . "/" . ilPlayerUtil::getFlashVideoPlayerDirectory();
105 $this->mp3_dir = $this->media_service_dir . "/flash_mp3_player";
106
107 $this->js_dir = $a_exp_dir . '/js';
108 $this->js_yahoo_dir = $a_exp_dir . '/js/yahoo';
109 $this->css_dir = $a_exp_dir . '/css';
110 }
111
117 public function setContentStyleId($a_val)
118 {
119 $this->content_style_id = $a_val;
120 }
121
127 public function getContentStyleId()
128 {
130 }
131
138 public function createDirectories()
139 {
140 ilUtil::makeDir($this->mobs_dir);
141 ilUtil::makeDir($this->files_dir);
142 ilUtil::makeDir($this->tex_dir);
143 ilUtil::makeDir($this->content_style_dir);
144 ilUtil::makeDir($this->content_style_img_dir);
145 ilUtil::makeDir($this->services_dir);
146 ilUtil::makeDir($this->media_service_dir);
147 ilUtil::makeDir($this->flv_dir);
148 ilUtil::makeDir($this->mp3_dir);
149
150 ilUtil::makeDir($this->js_dir);
151 ilUtil::makeDir($this->js_yahoo_dir);
152 ilUtil::makeDir($this->css_dir);
153 ilUtil::makeDir($this->css_dir . "/yahoo");
154 }
155
163 public function exportStyles()
164 {
165 $this->log->debug("export styles");
166
167 // export content style sheet
168 if ($this->getContentStyleId() < 1) { // basic style
170 ilUtil::makeDirParents($this->exp_dir . "/Services/COPage/css");
171 copy("Services/COPage/css/content.css", $this->exp_dir . "/Services/COPage/css/content.css");
172 } else {
173 $style = new ilObjStyleSheet($this->getContentStyleId());
174 $style->copyImagesToDir($this->exp_dir . "/" . $style->getImagesDirectory());
175 $this->exportResourceFile(
176 $this->exp_dir,
178 );
179 }
180
181 // export syntax highlighting style
182 $syn_stylesheet = ilObjStyleSheet::getSyntaxStylePath();
183 $this->exportResourceFile($this->exp_dir, $syn_stylesheet);
184 }
185
194 public function exportSupportScripts()
195 {
196 $this->log->debug("export scripts");
197
198 $collector = new \ILIAS\COPage\ResourcesCollector(ilPageObjectGUI::OFFLINE);
199
200 foreach ($collector->getJavascriptFiles() as $js) {
201 $this->exportResourceFile($this->exp_dir, $js);
202 }
203
204 foreach ($collector->getCssFiles() as $css) {
205 $this->exportResourceFile($this->exp_dir, $css);
206 }
207
208 //copy('./Services/UIComponent/Overlay/js/ilOverlay.js', $this->js_dir . '/ilOverlay.js');
209
210
211 // yui stuff we use
212 /*
213 include_once("./Services/YUI/classes/class.ilYuiUtil.php");
214 copy(
215 ilYuiUtil::getLocalPath('yahoo/yahoo-min.js'),
216 $this->js_yahoo_dir . '/yahoo-min.js'
217 );
218 copy(
219 ilYuiUtil::getLocalPath('yahoo-dom-event/yahoo-dom-event.js'),
220 $this->js_yahoo_dir . '/yahoo-dom-event.js'
221 );
222 copy(
223 ilYuiUtil::getLocalPath('animation/animation-min.js'),
224 $this->js_yahoo_dir . '/animation-min.js'
225 );
226 copy(
227 ilYuiUtil::getLocalPath('container/container-min.js'),
228 $this->js_yahoo_dir . '/container-min.js'
229 );
230 copy(
231 ilYuiUtil::getLocalPath('container/assets/skins/sam/container.css'),
232 $this->css_dir . '/container.css'
233 );
234 copy(
235 ilYuiUtil::getLocalPath('container/assets/skins/sam/container.css'),
236 $this->css_dir . '/yahoo/container.css'
237 );*/ // see #23083
238
239
240 // mediaelement.js
241 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
243 }
244
251 protected function exportResourceFile(string $target_dir, string $file)
252 {
253 if (is_int(strpos($file, "?"))) {
254 $file = substr($file, 0, strpos($file, "?"));
255 }
256 if (is_file($file)) {
257 $dir = dirname($file);
258 \ilUtil::makeDirParents($target_dir . "/" . $dir);
259 if (!is_file($target_dir . "/" . $file)) {
260 copy($file, $target_dir . "/" . $file);
261 }
262 }
263 }
264
265
272 public function getPreparedMainTemplate($a_tpl = "")
273 {
274 global $DIC;
275 $this->log->debug("get main template");
276
277
278 $resource_collector = new \ILIAS\COPage\ResourcesCollector(ilPageObjectGUI::OFFLINE);
279 $resource_injector = new \ILIAS\COPage\ResourcesInjector($resource_collector);
280
281
282 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
283
284 if ($a_tpl != "") {
285 $tpl = $a_tpl;
286 } else {
287 // template workaround: reset of template
288 $tpl = new ilGlobalPageTemplate($DIC->globalScreen(), $DIC->ui(), $DIC->http());
289 }
290 // scripts needed
291 /*
292 $scripts = array("./js/yahoo/yahoo-min.js", "./js/yahoo/yahoo-dom-event.js",
293 "./js/yahoo/animation-min.js", "./js/yahoo/container-min.js",
294 "./js/ilOverlay.js",
295 "./js/ilTooltip.js",);*/
296 $scripts = [];
297 $scripts = array_merge($scripts, ilPlayerUtil::getJsFilePaths());
298
299 $mathJaxSetting = new ilSetting("MathJax");
300 $use_mathjax = $mathJaxSetting->get("enable");
301 if ($use_mathjax) {
302 $scripts[] = $mathJaxSetting->get("path_to_mathjax");
303 }
304
308
309 $resource_injector->inject($tpl);
310
311 return $tpl;
312 }
313
320 public function collectPageElements($a_type, $a_id, $lang = "")
321 {
322 $this->log->debug("collect page elements");
323
324 // collect all dependent pages (only one level deep)
325 $pages[] = [
326 "type" => $a_type,
327 "id" => $a_id
328 ];
329
330 // ... content includes
331 $pcs = ilPageContentUsage::getUsagesOfPage($a_id, $a_type, 0, false, $lang);
332 foreach ($pcs as $pc) {
333 // content includes
334 if ($pc["type"] == "incl") {
335 $pages[] = [
336 "type" => "mep:pg",
337 "id" => $pc["id"]
338 ];
339 }
340 }
341
342 // ... internal links
343 $pg_links = \ilInternalLink::_getTargetsOfSource($a_type, $a_id, $lang);
344 $this->int_links = array_merge($this->int_links, $pg_links);
345 $this->glossary_terms = [];
346
347 // ... glossary pages of internal links
348 foreach ($this->int_links as $int_link) {
349 if ($int_link["type"] == "git") {
350 $this->glossary_terms[] = $int_link["id"];
351 // store linked/embedded media objects of glosssary term
352 $defs = \ilGlossaryDefinition::getDefinitionList($int_link["id"]);
353 foreach ($defs as $def) {
354 $pages[] = [
355 "type" => "gdf:pg",
356 "id" => $def["obj_id"]
357 ];
358 }
359 }
360 }
361
362 // resources of pages
363 foreach ($pages as $page) {
364 $page_id = $page["id"];
365 $page_type = $page["type"];
366
367 // collect media objects
368 $pg_mobs = ilObjMediaObject::_getMobsOfObject($page_type, $page_id, 0, $lang);
369 foreach ($pg_mobs as $pg_mob) {
370 $this->mobs[$pg_mob] = $pg_mob;
371 $this->log->debug("HTML Export: Add media object $pg_mob (" . \ilObject::_lookupTitle($pg_mob) . ") " .
372 " due to page $page_id, $page_type ).");
373 }
374
375 // collect all files
376 $files = ilObjFile::_getFilesOfObject($page_type, $page_id, 0, $lang);
377 foreach ($files as $f) {
378 $this->files[$f] = $f;
379 }
380
381 // collect all questions
383 foreach ($q_ids as $q_id) {
384 $this->q_ids[$q_id] = $q_id;
385 }
386 }
387
388 // collect page content items
389 $skill_tree = $ws_tree = null;
390
391 // skills
392 foreach ($pcs as $pc) {
393 if ($pc["type"] == "skmg") {
394 $skill_id = $pc["id"];
395
396 // trying to find user id
397 $user_id = null;
398 switch ($a_type) {
399 case "prtf:pg":
400 include_once "Modules/Portfolio/classes/class.ilPortfolioPage.php";
401 $page = new ilPortfolioPage($a_id);
402 $user_id = $page->create_user;
403 break;
404
405 default:
406 // :TODO:
407 break;
408 }
409
410 if ($user_id) {
411 // we only need 1 instance each
412 if (!$skill_tree) {
413 $skill_tree = new ilSkillTree();
414
415 $ws_tree = new ilWorkspaceTree($user_id);
416 }
417
418 // walk skill tree
419 $vtree = new ilVirtualSkillTree();
420 $tref_id = 0;
421 $skill_id = (int) $skill_id;
422 if (ilSkillTreeNode::_lookupType($skill_id) == "sktr") {
423 $tref_id = $skill_id;
424 $skill_id = ilSkillTemplateReference::_lookupTemplateId($skill_id);
425 }
426 $b_skills = $vtree->getSubTreeForCSkillId($skill_id . ":" . $tref_id, true);
427
428 foreach ($b_skills as $bs) {
429 $skill = ilSkillTreeNodeFactory::getInstance($bs["skill_id"]);
430 $level_data = $skill->getLevelData();
431 foreach ($level_data as $k => $v) {
432 // get assigned materials from personal skill
433 $mat = ilPersonalSkill::getAssignedMaterial($user_id, $bs["tref_id"], $v["id"]);
434 if (sizeof($mat)) {
435 foreach ($mat as $item) {
436 $wsp_id = $item["wsp_id"];
437 $obj_id = $ws_tree->lookupObjectId($wsp_id);
438
439 // all possible material types for now
440 switch (ilObject::_lookupType($obj_id)) {
441 case "file":
442 $this->files[$obj_id] = $obj_id;
443 break;
444
445 case "tstv":
446 include_once "Modules/Test/classes/class.ilObjTestVerification.php";
447 $obj = new ilObjTestVerification($obj_id, false);
448 $this->files_direct[$obj_id] = array($obj->getFilePath(),
449 $obj->getOfflineFilename());
450 break;
451
452 case "excv":
453 include_once "Modules/Exercise/classes/class.ilObjExerciseVerification.php";
454 $obj = new ilObjExerciseVerification($obj_id, false);
455 $this->files_direct[$obj_id] = array($obj->getFilePath(),
456 $obj->getOfflineFilename());
457 break;
458
459 case "crsv":
460 include_once "Modules/Course/classes/Verification/class.ilObjCourseVerification.php";
461 $obj = new ilObjCourseVerification($obj_id, false);
462 $this->files_direct[$obj_id] = array($obj->getFilePath(),
463 $obj->getOfflineFilename());
464 break;
465
466 case "cmxv":
467 $obj = new ilObjCmiXapiVerification($obj_id, false);
468 $this->files_direct[$obj_id] = array($obj->getFilePath(),
469 $obj->getOfflineFilename());
470 break;
471
472 case "ltiv":
473 $obj = new ilObjLTIConsumerVerification($obj_id, false);
474 $this->files_direct[$obj_id] = array($obj->getFilePath(),
475 $obj->getOfflineFilename());
476 break;
477
478 case "scov":
479 include_once "Modules/ScormAicc/classes/Verification/class.ilObjSCORMVerification.php";
480 $obj = new ilObjSCORMVerification($obj_id, false);
481 $this->files_direct[$obj_id] = array($obj->getFilePath(),
482 $obj->getOfflineFilename());
483 break;
484 }
485 }
486 }
487 }
488 }
489 }
490 }
491 }
492 }
493
500 public function exportPageElements($a_update_callback = null)
501 {
502 $this->log->debug("export page elements");
503
504 $total = count($this->mobs) + count($this->files) + count($this->files_direct);
505 $cnt = 0;
506
507 // export all media objects
508 $linked_mobs = array();
509 foreach ($this->mobs as $mob) {
510 if (ilObject::_exists($mob) && ilObject::_lookupType($mob) == "mob") {
511 $this->exportHTMLMOB($mob, $linked_mobs);
512 }
513 if (is_callable($a_update_callback)) {
514 $cnt++;
515 $a_update_callback($total, $cnt);
516 }
517 }
518 $linked_mobs2 = array(); // mobs linked in link areas
519 foreach ($linked_mobs as $mob) {
520 if (ilObject::_exists($mob)) {
521 $this->exportHTMLMOB($mob, $linked_mobs2);
522 }
523 }
524
525 // export all file objects
526 foreach ($this->files as $file) {
527 $this->exportHTMLFile($file);
528 if (is_callable($a_update_callback)) {
529 $cnt++;
530 $a_update_callback($total, $cnt);
531 }
532 }
533
534 // export all files (which are not objects
535 foreach ($this->files_direct as $file_id => $attr) {
536 $this->exportHTMLFileDirect($file_id, $attr[0], $attr[1]);
537 if (is_callable($a_update_callback)) {
538 $cnt++;
539 $a_update_callback($total, $cnt);
540 }
541 }
542
543 $this->exportQuestionFiles();
544
545 // export all glossary terms
547 }
548
555 protected function initResourceTemplate($tempalate_file)
556 {
557 $this->global_screen->layout()->meta()->reset();
558 $tpl = new ilGlobalTemplate($tempalate_file, true, true, "Services/COPage");
563 return $tpl;
564 }
565
569 public function exportHTMLMOB($a_mob_id, &$a_linked_mobs)
570 {
571 $this->log->debug("export html mobs");
572
573 $source_dir = ilUtil::getWebspaceDir() . "/mobs/mm_" . $a_mob_id;
574 if (is_dir($source_dir)) {
575 ilUtil::makeDir($this->mobs_dir . "/mm_" . $a_mob_id);
576 ilUtil::rCopy($source_dir, $this->mobs_dir . "/mm_" . $a_mob_id);
577 }
578
579 $mob_obj = new ilObjMediaObject($a_mob_id);
580
581 $tpl = $this->initResourceTemplate("tpl.fullscreen.html");
582 $med_links = ilMediaItem::_getMapAreasIntLinks($a_mob_id);
583 $link_xml = $this->page_linker->getLinkXML($med_links);
584
585 $params = [
586 "mode" => "media",
587 'enlarge_path' => ilUtil::getImagePath("enlarge.svg", false, "output", true),
588 'fullscreen_link' => $this->page_linker->getFullScreenLink("fullscreen")
589 ];
590 if ($this->ref_id > 0) {
591 $params["ref_id"] = $this->ref_id;
592 $params["link_params"] = "ref_id=" . $this->ref_id;
593 }
594
595 $tpl->setVariable("MEDIA_CONTENT", $this->renderMob($mob_obj, $link_xml, $params));
596 $html = $tpl->printToString();
597 $file = $this->exp_dir . "/media_" . $a_mob_id . ".html";
598 $fp = fopen($file, "w+");
599 fwrite($fp, $html);
600 fclose($fp);
601 unset($fp);
602
603 if ($mob_obj->hasFullscreenItem()) {
604 $tpl = $this->initResourceTemplate("tpl.fullscreen.html");
605 $params["mode"] = "fullscreen";
606 $tpl->setVariable("MEDIA_CONTENT", $this->renderMob($mob_obj, $link_xml, $params));
607 $html = $tpl->printToString();
608 $file = $this->exp_dir . "/fullscreen_" . $a_mob_id . ".html";
609 $fp = fopen($file, "w+");
610 fwrite($fp, $html);
611 fclose($fp);
612 unset($fp);
613 }
614
615 $linked_mobs = $mob_obj->getLinkedMediaObjects();
616 $a_linked_mobs = array_merge($a_linked_mobs, $linked_mobs);
617 }
618
626 protected function renderMob(\ilObjMediaObject $mob_obj, string $link_xml, array $params)
627 {
628 // render media object html
629 $xh = xslt_create();
630 $output = xslt_process(
631 $xh,
632 "arg:/_xml",
633 "arg:/_xsl",
634 null,
635 array(
636 "/_xml" =>
637 "<dummy>" .
638 $mob_obj->getXML(IL_MODE_ALIAS) .
639 $mob_obj->getXML(IL_MODE_OUTPUT) .
640 $link_xml .
641 "</dummy>",
642 "/_xsl" => file_get_contents("./Services/COPage/xsl/page.xsl")
643 ),
644 $params
645 );
646 xslt_free($xh);
647 unset($xh);
648 return $output;
649 }
650
651
655 public function exportHTMLFile($a_file_id)
656 {
657 $file_dir = $this->files_dir . "/file_" . $a_file_id;
658 ilUtil::makeDir($file_dir);
659
660 include_once("./Modules/File/classes/class.ilObjFile.php");
661 $file_obj = new ilObjFile($a_file_id, false);
662 $source_file = $file_obj->getFile($file_obj->getVersion());
663 if (!is_file($source_file)) {
664 $source_file = $file_obj->getFile();
665 }
666 if (is_file($source_file)) {
667 copy($source_file, $file_dir . "/" . $file_obj->getFileName());
668 }
669 }
670
674 public function exportHTMLFileDirect($a_file_id, $a_source_file, $a_file_name)
675 {
676 $file_dir = $this->files_dir . "/file_" . $a_file_id;
677 ilUtil::makeDir($file_dir);
678
679 if (is_file($a_source_file)) {
680 copy(
681 $a_source_file,
682 $file_dir . "/" . ilUtil::getASCIIFilename($a_file_name)
683 );
684 }
685 }
686
690 protected function exportQuestionFiles()
691 {
692 // export questions (images)
693 if (count($this->q_ids) > 0) {
694 foreach ($this->q_ids as $q_id) {
695 \ilUtil::makeDirParents($this->exp_dir . "/assessment/0/" . $q_id . "/images");
697 \ilUtil::getWebspaceDir() . "/assessment/0/" . $q_id . "/images",
698 $this->exp_dir . "/assessment/0/" . $q_id . "/images"
699 );
700 }
701 }
702 }
703
708 public function exportHTMLGlossaryTerms()
709 {
710 foreach ($this->glossary_terms as $term_id) {
711 $tpl = $this->initResourceTemplate("tpl.glossary_term_output.html");
712
713 $term_gui = new ilGlossaryTermGUI($term_id);
714 $term_gui->setPageLinker($this->page_linker);
715 $term_gui->setOfflineDirectory($this->exp_dir);
716 $term_gui->output(true, $tpl);
717
718 // write file
719 $html = $tpl->printToString();
720 $file = $this->exp_dir . "/term_" . $term_id . ".html";
721 $fp = fopen($file, "w+");
722 fwrite($fp, $html);
723 fclose($fp);
724 }
725 }
726}
user()
Definition: user.php:4
$total
Definition: Utf8Test.php:87
An exception for terminatinating execution or to throw for unit testing.
const IL_MODE_ALIAS
const IL_MODE_OUTPUT
HTML export class for pages.
exportHTMLFile($a_file_id)
Export file object.
__construct($a_exp_dir, \ILIAS\COPage\PageLinker $linker=null, $ref_id=0)
ilCOPageHTMLExport constructor.
getPreparedMainTemplate($a_tpl="")
Get prepared main template.
exportHTMLMOB($a_mob_id, &$a_linked_mobs)
Export media object to html.
createDirectories()
Create directories.
exportStyles()
Export content style.
exportHTMLGlossaryTerms()
Export glossary terms.
exportHTMLFileDirect($a_file_id, $a_source_file, $a_file_name)
Export file from path.
collectPageElements($a_type, $a_id, $lang="")
Collect page elements (that need to be exported separately)
renderMob(\ilObjMediaObject $mob_obj, string $link_xml, array $params)
Render Mob.
exportSupportScripts()
Export support scripts.
setContentStyleId($a_val)
Set content style id.
initResourceTemplate($tempalate_file)
Get resource template.
getContentStyleId()
Get content style id.
exportResourceFile(string $target_dir, string $file)
Export resource file.
exportQuestionFiles()
Export question images.
exportPageElements($a_update_callback=null)
Export page elements.
Class ilGlobalPageTemplate.
special template class to simplify handling of ITX/PEAR
static getDefinitionList($a_term_id)
static
GUI class for glossary terms.
static getLogger($a_component_id)
Get component logger.
static _getMapAreasIntLinks($a_mob_id)
get all internal links of map areas of a mob
Class ilObjFile.
Class ilObjMediaObject.
getXML($a_mode=IL_MODE_FULL, $a_inst=0, $a_sign_locals=false)
get MediaObject XLM Tag
static _getMobsOfObject($a_type, $a_id, $a_usage_hist_nr=0, $a_lang="-")
get mobs of object
Class ilObjStyleSheet.
static getBasicImageDir()
Get basic image dir.
static getSyntaxStylePath()
get syntax style path
static getContentStylePath($a_style_id, $add_random=true, $add_token=true)
get content style path
static _lookupTitle($a_id)
lookup object title
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
static _lookupType($a_id, $a_reference=false)
lookup object type
static _getQuestionIdsForPage($a_parent_type, $a_page_id, $a_lang="-")
Get all questions of a page.
static getUsagesOfPage($a_usage_id, $a_usage_type, $a_hist_nr=0, $a_all_hist_nrs=false, $a_lang="-")
Get page content usages for page.
static getAssignedMaterial($a_user_id, $a_tref_id, $a_level)
Get assigned material (for a skill level and user)
static getFlashVideoPlayerDirectory()
Get flash video player directory.
static getJsFilePaths()
Get js file paths.
static copyPlayerFilesToTargetDirectory($a_target_dir)
Copy css files to target dir.
Page for user portfolio.
ILIAS Setting Class.
static _lookupTemplateId($a_obj_id)
Lookup template ID.
static _lookupType($a_obj_id)
Lookup Type.
static getWebspaceDir($mode="filesystem")
get webspace directory
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
static makeDirParents($a_dir)
Create a new directory and all parent directories.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
Tree handler for personal workspace.
global $DIC
Definition: goto.php:24
xslt_free(&$proc)
xslt_create()
if(strpos( $jquery_path, './')===0) elseif(strpos($jquery_path, '.')===0) $mathJaxSetting
Definition: latex.php:54
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
Class ChatMainBarProvider \MainMenu\Provider.
$lang
Definition: xapiexit.php:8