ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilLMTOCExplorer.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 require_once("./Modules/LearningModule/classes/class.ilLMExplorer.php");
5 require_once("./Modules/LearningModule/classes/class.ilStructureObject.php");
6 
7 /*
8 * Explorer View for Learning Module Editor
9 *
10 * @author Alex Killing <alex.killing@gmx.de>
11 * @version $Id: class.ilLMTOCExplorer.php 25692 2010-09-15 09:44:16Z mwarkus $
12 *
13 * @ingroup ModulesIliasLearningModule
14 */
16 {
17  var $offline;
18 
25  function ilLMTOCExplorer($a_target,&$a_lm_obj)
26  {
27  $this->offline = false;
28  $this->force_open_path = array();
29  parent::ilLMExplorer($a_target, $a_lm_obj);
30  $this->lm_set = new ilSetting("lm");
31  }
32 
36  function setOfflineMode($a_offline = true)
37  {
38  $this->offline = $a_offline;
39  }
40 
44  function offlineMode()
45  {
46  return $this->offline;
47  }
48 
49 
53  function setForceOpenPath($a_path)
54  {
55  $this->force_open_path = $a_path;
56  }
57 
61  function buildTitle($a_title, $a_id, $a_type)
62  {
63 //echo "<br>-$a_title-$a_type-$a_id-";
64  if ($a_type == "st")
65  {
67  $this->lm_obj->isActiveNumbering());
68  }
69 
70  if ($this->lm_obj->getTOCMode() == "chapters" || $a_type != "pg")
71  {
72  return $a_title;
73  }
74  else
75  {
76  if ($a_type == "pg")
77  {
79  $this->lm_obj->getPageHeader(), $this->lm_obj->isActiveNumbering(),
80  $this->lm_set->get("time_scheduled_page_activation"));
81  }
82  }
83  }
84 
85 
89  function getImage($a_name)
90  {
91  return ilUtil::getImagePath($a_name, false, "output", $this->offlineMode());
92  }
93 
94 
95  function isClickable($a_type, $a_node_id)
96  {
97  global $ilUser;
98 
99  $orig_node_id = $a_node_id;
100 
101  if ($a_type == "st")
102  {
103  if (!$this->offlineMode())
104  {
105  $a_node = $this->tree->fetchSuccessorNode($a_node_id, "pg");
106  $a_node_id = $a_node["child"];
107  if ($a_node_id == 0)
108  {
109  return false;
110  }
111  }
112  else
113  {
114  // get next activated page
115  $found = false;
116  while (!$found)
117  {
118  $a_node = $this->tree->fetchSuccessorNode($a_node_id, "pg");
119  $a_node_id = $a_node["child"];
120  include_once("./Services/COPage/classes/class.ilPageObject.php");
121  $active = ilPageObject::_lookupActive($a_node_id, $this->lm_obj->getType(),
122  $this->lm_set->get("time_scheduled_page_activation"));
123 
124  if ($a_node_id > 0 && !$active)
125  {
126  $found = false;
127  }
128  else
129  {
130  $found = true;
131  }
132  }
133  if ($a_node_id <= 0)
134  {
135  return false;
136  }
137  else
138  {
139  $path = $this->tree->getPathId($a_node_id);
140  if (!in_array($orig_node_id, $path))
141  {
142  return false;
143  }
144  }
145  }
146  }
147 
148  if ($a_type == "pg")
149  {
150  // check public area mode
151  include_once("./Modules/LearningModule/classes/class.ilLMObject.php");
152  include_once 'Services/Payment/classes/class.ilPaymentObject.php';
153  if (($ilUser->getId() == ANONYMOUS_USER_ID ||
154  ilPaymentObject::_requiresPurchaseToAccess((int)$this->lm_obj->getRefId())) &&
155  !ilLMObject::_isPagePublic($a_node_id, true))
156  {
157  return false;
158  }
159  }
160 
161  return true;
162  }
163 
167  function buildLinkTarget($a_node_id, $a_type)
168  {
169  if (!$this->offlineMode())
170  {
171  return parent::buildLinkTarget($a_node_id, $a_type);
172  }
173  else
174  {
175  if ($a_node_id < 1)
176  {
177  $a_node_id = $this->tree->getRootId();
178  }
179  if ($a_type != "pg")
180  {
181  // get next activated page
182  $found = false;
183  while (!$found)
184  {
185  $a_node = $this->tree->fetchSuccessorNode($a_node_id, "pg");
186  $a_node_id = $a_node["child"];
187  include_once("./Services/COPage/classes/class.ilPageObject.php");
188  $active = ilPageObject::_lookupActive($a_node_id, $this->lm_obj->getType(),
189  $this->lm_set->get("time_scheduled_page_activation"));
190 
191  if ($a_node_id > 0 && !$active)
192  {
193  $found = false;
194  }
195  else
196  {
197  $found = true;
198  }
199  }
200  }
201  if (!$this->lm_obj->cleanFrames())
202  {
203  return "frame_".$a_node_id."_maincontent.html";
204  }
205  else
206  {
207  return "lm_pg_".$a_node_id.".html";
208  }
209  }
210  }
211 
215  function forceExpanded($a_obj_id)
216  {
217  if ($this->offlineMode())
218  {
219  return true;
220  }
221  else
222  {
223  if (in_array($a_obj_id, $this->force_open_path))
224  {
225  return true;
226  }
227  return false;
228  }
229  }
230 
231  function isVisible($a_id, $a_type)
232  {
233  include_once("./Services/COPage/classes/class.ilPageObject.php");
234  $active = ilPageObject::_lookupActive($a_id, $this->lm_obj->getType(),
235  $this->lm_set->get("time_scheduled_page_activation"));
236 
237  if(!$active && $a_type == "pg")
238  {
239  return false;
240  }
241  else
242  {
243  return true;
244  }
245  }
246 
247 } // END class.ilLMTOCExplorer
248 ?>