ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
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 {
18  var $help_sections = array();
19  const ID_PART_SCREEN = "screen";
20  const ID_PART_SUB_SCREEN = "sub_screen";
21  const ID_PART_COMPONENT = "component";
22  var $def_screen_id = array();
23  var $screen_id = array();
24 
28  function ilHelpGUI()
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  $this->resetCurrentPage();
202 
203  $id_arr = explode(".", $help_screen_id);
204  include_once("./Services/Help/classes/class.ilHelpMapping.php");
205  $help_arr = ilHelpMapping::getHelpSectionsForId($id_arr[0], $id_arr[1]);
206 
207  $hm = (int) $ilSetting->get("help_module");
208 
209  if ((OH_REF_ID > 0 || $hm > 0) && count($help_arr) > 0)
210  {
211  if (OH_REF_ID > 0)
212  {
213  $oh_lm_id = ilObject::_lookupObjId(OH_REF_ID);
214  }
215  else
216  {
217  include_once("./Services/Help/classes/class.ilObjHelpSettings.php");
218  $oh_lm_id = ilObjHelpSettings::lookupModuleLmId($hm);
219  }
220 
221  include_once("./Services/Accordion/classes/class.ilAccordionGUI.php");
222  $acc = new ilAccordionGUI();
223  $acc->setId("oh_acc");
224  $acc->setBehaviour(ilAccordionGUI::FIRST_OPEN);
225 
226  foreach ($help_arr as $h_id)
227  {
228  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
229  $st_id = $h_id;
230 
231  if (!ilLMObject::_exists($st_id))
232  {
233  continue;
234  }
235 
236  $pages = ilLMObject::getPagesOfChapter($oh_lm_id, $st_id);
237  include_once("./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php");
238  $grp_list = new ilGroupedListGUI();
239  foreach ($pages as $pg)
240  {
241  $grp_list->addEntry(ilLMObject::_lookupTitle($pg["child"]), "#", "",
242  "return il.Help.showPage(".$pg["child"].");");
243  }
244 
245  $acc->addItem(ilLMObject::_lookupTitle($st_id), $grp_list->getHTML());
246  }
247  $h_tpl = new ilTemplate("tpl.help.html", true, true, "Services/Help");
248  $h_tpl->setVariable("HEAD", $lng->txt("help"));
249  $h_tpl->setVariable("CONTENT", $acc->getHTML());
250  $h_tpl->setVariable("CLOSE_IMG", ilUtil::img(ilUtil::getImagePath("icon_close2_s.png")));
251  echo $h_tpl->get();
252  }
253  exit;
254  }
255 
262  function showPage()
263  {
264  global $lng;
265 
266  $page_id = (int) $_GET["help_page"];
267 
268  $h_tpl = new ilTemplate("tpl.help.html", true, true, "Services/Help");
269  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
270 
271  $h_tpl->setCurrentBlock("backlink");
272  $h_tpl->setVariable("TXT_BACK", $lng->txt("back"));
273  $h_tpl->setVariable("ONCLICK_BACK",
274  "return il.Help.listHelp(event, true);");
275  $h_tpl->parseCurrentBlock();
276 
277 
278  $h_tpl->setVariable("HEAD", $lng->txt("help")." - ".
279  ilLMObject::_lookupTitle($page_id));
280 
281  include_once("./Services/COPage/classes/class.ilPageUtil.php");
282  if (!ilPageUtil::_existsAndNotEmpty("lm", $page_id))
283  {
284  exit;
285  }
286  include_once("./Services/COPage/classes/class.ilPageObject.php");
287  include_once("./Services/COPage/classes/class.ilPageObjectGUI.php");
288 
289  // get page object
290  include_once("./Modules/LearningModule/classes/class.ilObjContentObject.php");
291  include_once("./Modules/LearningModule/classes/class.ilLMPageGUI.php");
292  $page_gui = new ilLMPageGUI($page_id);
293  $cfg = $page_gui->getPageConfig();
294  $page_gui->setPresentationTitle("");
295  $page_gui->setTemplateOutput(false);
296  $page_gui->setHeader("");
297  $page_gui->setRawPageContent(true);
298  $cfg->setEnablePCType("Map", false);
299  $cfg->setEnablePCType("Tabs", false);
300  $cfg->setEnablePCType("FileList", false);
301 
302  $page_gui->getPageObject()->buildDom();
303  $int_links = $page_gui->getPageObject()->getInternalLinks();
304  $link_xml = $this->getLinkXML($int_links);
305  $link_xml.= $this->getLinkTargetsXML();
306 //echo htmlentities($link_xml);
307  $page_gui->setLinkXML($link_xml);
308 
309  $ret = $page_gui->showPage();
310 
311  $h_tpl->setVariable("CONTENT", $ret);
312  $h_tpl->setVariable("CLOSE_IMG", ilUtil::img(ilUtil::getImagePath("icon_close2_s.png")));
313 
314  ilSession::set("help_pg", $page_id);
315 
316  $page = $h_tpl->get();
317 
318  // replace style classes
319  //$page = str_replace("ilc_text_inline_Strong", "ilHelpStrong", $page);
320 
321  echo $page;
322  exit;
323  }
324 
331  function resetCurrentPage()
332  {
333  ilSession::clear("help_pg");
334  }
335 
336 
343  function getTabTooltipText($a_tab_id)
344  {
345  global $lng;
346 
347  include_once("./Services/Help/classes/class.ilHelp.php");
348  if ($this->screen_id_component != "")
349  {
350  return ilHelp::getTooltipPresentationText($this->screen_id_component."_".$a_tab_id);
351  //return $lng->txt("help_tt_".$this->screen_id_component."_".$a_tab_id);
352  }
353  return "";
354  }
355 
362  function initHelp($a_tpl)
363  {
364  global $ilUser, $ilSetting;
365 
366  $module_id = (int) $ilSetting->get("help_module");
367 
368  if ((OH_REF_ID > 0 || $module_id > 0) && $ilUser->getLanguage() == "de")
369  {
370  if (ilSession::get("help_pg") > 0)
371  {
372  $a_tpl->addOnLoadCode("il.Help.showCurrentPage(".ilSession::get("help_pg").");", 3);
373  }
374  if ($ilUser->getPref("hide_help_tt"))
375  {
376  $a_tpl->addOnLoadCode("if (il && il.Help) il.Help.switchTooltips();", 3);
377  }
378  }
379  }
380 
388  {
389  global $ilUser;
390 
391  $ilUser->writePref("hide_help_tt", "1");
392  }
393 
400  function activateTooltips()
401  {
402  global $ilUser;
403 
404  $ilUser->writePref("hide_help_tt", "0");
405  }
406 
410  function getLinkXML($a_int_links)
411  {
412  global $ilCtrl;
413 
414  $link_info = "<IntLinkInfos>";
415  foreach ($a_int_links as $int_link)
416  {
417  $target = $int_link["Target"];
418  if (substr($target, 0, 4) == "il__")
419  {
420  $target_arr = explode("_", $target);
421  $target_id = $target_arr[count($target_arr) - 1];
422  $type = $int_link["Type"];
423  $targetframe = "None";
424 
425  // anchor
426  $anc = $anc_add = "";
427  if ($int_link["Anchor"] != "")
428  {
429  $anc = $int_link["Anchor"];
430  $anc_add = "_".rawurlencode($int_link["Anchor"]);
431  }
432 
433  switch($type)
434  {
435  case "PageObject":
436  case "StructureObject":
437  if ($type == "PageObject")
438  {
439  $href = "#pg_".$target_id;
440  }
441  else
442  {
443  $href = "#";
444  }
445  break;
446 
447  }
448 
449  $link_info.="<IntLinkInfo Target=\"$target\" Type=\"$type\" ".
450  "TargetFrame=\"$targetframe\" LinkHref=\"$href\" LinkTarget=\"\" Anchor=\"\"/>";
451  }
452  }
453  $link_info.= "</IntLinkInfos>";
454 
455  return $link_info;
456  }
457 
461  function getLinkTargetsXML()
462  {
463  $link_info = "<LinkTargets>";
464  $link_info.="<LinkTarget TargetFrame=\"None\" LinkTarget=\"\" OnClick=\"return il.Help.openLink(event);\" />";
465  $link_info.= "</LinkTargets>";
466  return $link_info;
467  }
468 
469 }
470 ?>