ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilHelpGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once ("Services/Help/classes/class.ilHelp.php");
6 
16 class ilHelpGUI
17 {
19  const ID_PART_SCREEN = "screen";
20  const ID_PART_SUB_SCREEN = "sub_screen";
21  const ID_PART_COMPONENT = "component";
23  var $screen_id = array();
24 
28  function __construct()
29  {
30  global $ilCtrl;
31 
32  $this->ctrl = $ilCtrl;
33  }
34 
41  function setDefaultScreenId($a_part, $a_id)
42  {
43  $this->def_screen_id[$a_part] = $a_id;
44  }
45 
51  function setScreenId($a_id)
52  {
53  $this->screen_id[self::ID_PART_SCREEN] = $a_id;
54  }
55 
61  function setSubScreenId($a_id)
62  {
63  $this->screen_id[self::ID_PART_SUB_SCREEN] = $a_id;
64  }
65 
72  function setScreenIdComponent($a_comp)
73  {
74  $this->screen_id_component = $a_comp;
75  }
76 
77 
84  function getScreenId()
85  {
86  $comp = ($this->screen_id_component != "")
87  ? $this->screen_id_component
88  : $this->def_screen_id[self::ID_PART_COMPONENT];
89 
90  if ($comp == "")
91  {
92  return "";
93  }
94 
95  $scr_id = ($this->screen_id[self::ID_PART_SCREEN] != "")
96  ? $this->screen_id[self::ID_PART_SCREEN]
97  : $this->def_screen_id[self::ID_PART_SCREEN];
98 
99  $sub_scr_id = ($this->screen_id[self::ID_PART_SUB_SCREEN] != "")
100  ? $this->screen_id[self::ID_PART_SUB_SCREEN]
101  : $this->def_screen_id[self::ID_PART_SUB_SCREEN];
102 
103  $screen_id = $comp."/".
104  $scr_id."/".
105  $sub_scr_id;
106 
107  return $screen_id;
108  }
109 
110 
117  function addHelpSection($a_help_id, $a_level = 1)
118  {
119  $this->help_sections[] = array("help_id" => $a_help_id, $a_level);
120  }
121 
128  function hasSections()
129  {
130  global $ilSetting;
131 
132  include_once("./Services/Help/classes/class.ilHelpMapping.php");
134  }
135 
142  function getHelpSections()
143  {
144  include_once("./Services/Help/classes/class.ilHelpMapping.php");
145  return ilHelpMapping::getHelpSectionsForId($this->getScreenId(), (int) $_GET["ref_id"]);
146  }
147 
154  function setCtrlPar()
155  {
156  global $ilCtrl;
157 
158  /*$h_ids = $sep = "";
159  foreach ($this->getHelpSections() as $hs)
160  {
161  $h_ids.= $sep.$hs;
162  $sep = ",";
163  }*/
164  $ilCtrl->setParameterByClass("ilhelpgui", "help_screen_id", $this->getScreenId().".".$_GET["ref_id"]);
165  }
166 
167 
171  function executeCommand()
172  {
173  $cmd = $this->ctrl->getCmd("showHelp");
174  $next_class = $this->ctrl->getNextClass($this);
175 
176  switch($next_class)
177  {
178  default:
179  return $this->$cmd();
180  break;
181  }
182  }
183 
187  function showHelp()
188  {
189  global $ilHelp, $lng, $ilSetting;
190 
191  if ($_GET["help_screen_id"] != "")
192  {
193  ilSession::set("help_screen_id", $_GET["help_screen_id"]);
194  $help_screen_id = $_GET["help_screen_id"];
195  }
196  else
197  {
198  $help_screen_id = ilSession::get("help_screen_id");
199  }
200 
201  ilSession::set("help_search_term", "");
202 
203  $this->resetCurrentPage();
204 
205  $id_arr = explode(".", $help_screen_id);
206  include_once("./Services/Help/classes/class.ilHelpMapping.php");
207  include_once("./Services/Help/classes/class.ilHelp.php");
208 
209  $help_arr = ilHelpMapping::getHelpSectionsForId($id_arr[0], $id_arr[1]);
210  $oh_lm_id = ilHelp::getHelpLMId();
211 
212  if ($oh_lm_id > 0 && count($help_arr) > 0)
213  {
214  include_once("./Services/Accordion/classes/class.ilAccordionGUI.php");
215  $acc = new ilAccordionGUI();
216  $acc->setId("oh_acc_".$h_id);
217  $acc->setUseSessionStorage(true);
218  $acc->setBehaviour(ilAccordionGUI::FIRST_OPEN);
219 
220  foreach ($help_arr as $h_id)
221  {
222  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
223  $st_id = $h_id;
224 
225  if (!ilLMObject::_exists($st_id))
226  {
227  continue;
228  }
229 
230  $pages = ilLMObject::getPagesOfChapter($oh_lm_id, $st_id);
231  include_once("./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php");
232  $grp_list = new ilGroupedListGUI();
233  foreach ($pages as $pg)
234  {
235  $grp_list->addEntry(ilLMObject::_lookupTitle($pg["child"]), "#", "",
236  "return il.Help.showPage(".$pg["child"].");");
237  }
238 
239  $acc->addItem(ilLMObject::_lookupTitle($st_id), $grp_list->getHTML());
240  }
241  $h_tpl = new ilTemplate("tpl.help.html", true, true, "Services/Help");
242  $h_tpl->setVariable("HEAD", $lng->txt("help"));
243 
244  $h_tpl->setCurrentBlock("search");
245  include_once("./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
246  $h_tpl->setVariable("GL_SEARCH", ilGlyphGUI::get(ilGlyphGUI::SEARCH));
247  $h_tpl->parseCurrentBlock();
248 
249  $h_tpl->setVariable("CONTENT", $acc->getHTML());
250  include_once("./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
251  $h_tpl->setVariable("CLOSE_IMG", ilGlyphGUI::get(ilGlyphGUI::CLOSE));
252  echo $h_tpl->get();
253  }
254  exit;
255  }
256 
263  function showPage()
264  {
265  global $lng;
266 
267  $page_id = (int) $_GET["help_page"];
268 
269  $h_tpl = new ilTemplate("tpl.help.html", true, true, "Services/Help");
270  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
271 
272 
273  $h_tpl->setCurrentBlock("backlink");
274  $h_tpl->setVariable("TXT_BACK", $lng->txt("back"));
275  if (($t =ilSession::get("help_search_term")) != "")
276  {
277  $h_tpl->setVariable("ONCLICK_BACK",
278  "return il.Help.search('".ilUtil::prepareFormOutput($t)."');");
279  }
280  else
281  {
282  $h_tpl->setVariable("ONCLICK_BACK",
283  "return il.Help.listHelp(event, true);");
284  }
285  $h_tpl->parseCurrentBlock();
286 
287 
288  $h_tpl->setVariable("HEAD", $lng->txt("help")." - ".
289  ilLMObject::_lookupTitle($page_id));
290 
291  include_once("./Services/COPage/classes/class.ilPageUtil.php");
292  if (!ilPageUtil::_existsAndNotEmpty("lm", $page_id))
293  {
294  exit;
295  }
296  include_once("./Services/COPage/classes/class.ilPageObject.php");
297  include_once("./Services/COPage/classes/class.ilPageObjectGUI.php");
298 
299  // get page object
300  include_once("./Modules/LearningModule/classes/class.ilObjContentObject.php");
301  include_once("./Modules/LearningModule/classes/class.ilLMPageGUI.php");
302  $page_gui = new ilLMPageGUI($page_id);
303  $cfg = $page_gui->getPageConfig();
304  $page_gui->setPresentationTitle("");
305  $page_gui->setTemplateOutput(false);
306  $page_gui->setHeader("");
307  $page_gui->setRawPageContent(true);
308  $cfg->setEnablePCType("Map", false);
309  $cfg->setEnablePCType("Tabs", false);
310  $cfg->setEnablePCType("FileList", false);
311 
312  $page_gui->getPageObject()->buildDom();
313  $int_links = $page_gui->getPageObject()->getInternalLinks();
314  $link_xml = $this->getLinkXML($int_links);
315  $link_xml.= $this->getLinkTargetsXML();
316 //echo htmlentities($link_xml);
317  $page_gui->setLinkXML($link_xml);
318 
319  $ret = $page_gui->showPage();
320 
321  $h_tpl->setVariable("CONTENT", $ret);
322  include_once("./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
323  $h_tpl->setVariable("CLOSE_IMG", ilGlyphGUI::get(ilGlyphGUI::CLOSE));
324 
325  ilSession::set("help_pg", $page_id);
326 
327  $page = $h_tpl->get();
328 
329  // replace style classes
330  //$page = str_replace("ilc_text_inline_Strong", "ilHelpStrong", $page);
331 
332  echo $page;
333  exit;
334  }
335 
342  function resetCurrentPage()
343  {
344  ilSession::clear("help_pg");
345  }
346 
347 
354  function getTabTooltipText($a_tab_id)
355  {
356  global $lng;
357 
358  include_once("./Services/Help/classes/class.ilHelp.php");
359  if ($this->screen_id_component != "")
360  {
361  return ilHelp::getTooltipPresentationText($this->screen_id_component."_".$a_tab_id);
362  //return $lng->txt("help_tt_".$this->screen_id_component."_".$a_tab_id);
363  }
364  return "";
365  }
366 
373  static function initHelp($a_tpl)
374  {
375  global $ilUser, $ilSetting;
376 
377  $module_id = (int) $ilSetting->get("help_module");
378 
379  if ((OH_REF_ID > 0 || $module_id > 0) && $ilUser->getLanguage() == "de")
380  {
381  if (ilSession::get("help_pg") > 0)
382  {
383  $a_tpl->addOnLoadCode("il.Help.showCurrentPage(".ilSession::get("help_pg").");", 3);
384  }
385  if ($ilUser->getPref("hide_help_tt"))
386  {
387  $a_tpl->addJavascript("./Services/Help/js/ilHelp.js");
388  $a_tpl->addOnLoadCode("if (il && il.Help) {il.Help.switchTooltips();}", 3);
389  }
390  }
391  }
392 
400  {
401  global $ilUser;
402 
403  $ilUser->writePref("hide_help_tt", "1");
404  }
405 
412  function activateTooltips()
413  {
414  global $ilUser;
415 
416  $ilUser->writePref("hide_help_tt", "0");
417  }
418 
422  function getLinkXML($a_int_links)
423  {
424  global $ilCtrl;
425 
426  $link_info = "<IntLinkInfos>";
427  foreach ($a_int_links as $int_link)
428  {
429  $target = $int_link["Target"];
430  if (substr($target, 0, 4) == "il__")
431  {
432  $target_arr = explode("_", $target);
433  $target_id = $target_arr[count($target_arr) - 1];
434  $type = $int_link["Type"];
435  $targetframe = "None";
436 
437  // anchor
438  $anc = $anc_add = "";
439  if ($int_link["Anchor"] != "")
440  {
441  $anc = $int_link["Anchor"];
442  $anc_add = "_".rawurlencode($int_link["Anchor"]);
443  }
444 
445  switch($type)
446  {
447  case "PageObject":
448  case "StructureObject":
449  if ($type == "PageObject")
450  {
451  $href = "#pg_".$target_id;
452  }
453  else
454  {
455  $href = "#";
456  }
457  break;
458 
459  }
460 
461  $link_info.="<IntLinkInfo Target=\"$target\" Type=\"$type\" ".
462  "TargetFrame=\"$targetframe\" LinkHref=\"$href\" LinkTarget=\"\" Anchor=\"\"/>";
463  }
464  }
465  $link_info.= "</IntLinkInfos>";
466 
467  return $link_info;
468  }
469 
473  function getLinkTargetsXML()
474  {
475  $link_info = "<LinkTargets>";
476  $link_info.="<LinkTarget TargetFrame=\"None\" LinkTarget=\"\" OnClick=\"return il.Help.openLink(event);\" />";
477  $link_info.= "</LinkTargets>";
478  return $link_info;
479  }
480 
487  function search()
488  {
489  global $lng;
490 
491  $term = $_GET["term"];
492 
493  if ($term == "")
494  {
495  $term = ilSession::get("help_search_term");
496  }
497 
498  $this->resetCurrentPage();
499 
500  $h_tpl = new ilTemplate("tpl.help.html", true, true, "Services/Help");
501  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
502 
503  $h_tpl->setCurrentBlock("backlink");
504  $h_tpl->setVariable("TXT_BACK", $lng->txt("back"));
505  $h_tpl->setVariable("ONCLICK_BACK",
506  "return il.Help.listHelp(event, true);");
507  $h_tpl->parseCurrentBlock();
508 
509 
510  $h_tpl->setVariable("HEAD", $lng->txt("help")." - ".
511  $lng->txt("search_result"));
512 
513  $h_tpl->setCurrentBlock("search");
514  include_once("./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
515  $h_tpl->setVariable("GL_SEARCH", ilGlyphGUI::get(ilGlyphGUI::SEARCH));
516  $h_tpl->setVariable("VAL_SEARCH", ilUtil::prepareFormOutput($term));
517  $h_tpl->parseCurrentBlock();
518 
519  include_once("./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
520  $h_tpl->setVariable("CLOSE_IMG", ilGlyphGUI::get(ilGlyphGUI::CLOSE));
521 
522  $lm_id = ilHelp::getHelpLMId();
523  include_once("./Services/Search/classes/class.ilRepositoryObjectDetailSearch.php");
524  $s = new ilRepositoryObjectDetailSearch($lm_id);
525  $s->setQueryString($term);
526  $result = $s->performSearch();
527 
528  include_once("./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php");
529  $grp_list = new ilGroupedListGUI();
530  foreach ($result->getResults() as $r)
531  {
532  $grp_list->addEntry(ilLMObject::_lookupTitle($r["item_id"]), "#", "",
533  "return il.Help.showPage(".$r["item_id"].");");
534  }
535  $h_tpl->setVariable("CONTENT", $grp_list->getHTML());
536 
537  ilSession::set("help_search_term", $term);
538 
539  echo $h_tpl->get();;
540  exit;
541  }
542 
543 }
544 ?>
setSubScreenId($a_id)
Set sub screen id.
getTabTooltipText($a_tab_id)
Get tab tooltip text.
showHelp()
Show online help.
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
$target_arr
Definition: goto.php:49
executeCommand()
execute command
$result
setScreenId($a_id)
Set screen id.
$_GET["client_id"]
static initHelp($a_tpl)
Render current help page.
static getHelpLMId()
Get help lm id.
static _exists($a_id)
checks wether a lm content object with specified id exists or not
addHelpSection($a_help_id, $a_level=1)
Add help section.
activateTooltips()
Activate tooltips.
Help GUI class.
static getHelpSectionsForId($a_screen_id, $a_ref_id)
Get help sections for screen id.
$cmd
Definition: sahs_server.php:35
static get($a_var)
Get a value.
static get($a_glyph, $a_text="")
Get glyph html.
static set($a_var, $a_val)
Set a value.
$target_id
Definition: goto.php:51
deactivateTooltips()
Deactivate tooltips.
static hasScreenIdSections($a_screen_id)
Has given screen Id any sections?
setCtrlPar()
Get help section url parameter.
showPage()
Show page.
static _lookupTitle($a_obj_id)
Lookup title.
const ID_PART_SUB_SCREEN
resetCurrentPage()
Hide help.
static getTooltipPresentationText($a_tt_id)
Get tooltip for id.
__construct()
constructor
global $ilCtrl
Definition: ilias.php:18
getScreenId()
Get screen id.
$r
Definition: example_031.php:79
search()
Search.
static _existsAndNotEmpty($a_parent_type, $a_id, $a_lang="-")
checks whether page exists and is not empty (may return true on some empty pages) ...
setScreenIdComponent($a_comp)
Set screen id component.
Grouped list GUI class.
Extension of ilPageObjectGUI for learning modules.
special template class to simplify handling of ITX/PEAR
$ilUser
Definition: imgupload.php:18
static clear($a_var)
Unset a value.
getLinkTargetsXML()
Get XMl for Link Targets.
Create styles array
The data for the language used.
setDefaultScreenId($a_part, $a_id)
Set default screen id.
static getPagesOfChapter($a_lm_id, $a_chap_id)
Get pages of chapter.
getLinkXML($a_int_links)
get xml for links
const ID_PART_COMPONENT
global $ilSetting
Definition: privfeed.php:17
global $lng
Definition: privfeed.php:17
getHelpSections()
Get help sections.
$ret
Definition: parser.php:6
Accordion user interface class.
const ID_PART_SCREEN
hasSections()
Has sections?