ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilAssQuestionHintPageObjectCommandForwarder.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionAbstractPageObjectCommandForwarder.php';
5 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintsGUI.php';
6 
16 {
20  const PRESENTATION_MODE_AUTHOR = 'PRESENTATION_MODE_AUTHOR';
21 
25  const PRESENTATION_MODE_PREVIEW = 'PRESENTATION_MODE_PREVIEW';
26 
30  const PRESENTATION_MODE_REQUEST = 'PRESENTATION_MODE_REQUEST';
31 
37  protected $presentationMode = null;
38 
45  protected $questionHint = null;
46 
57  {
58  parent::__construct($questionOBJ, $ctrl, $tabs, $lng);
59 
60  $this->questionHint = new ilAssQuestionHint();
61 
62  if (!isset($_GET['hint_id']) || !(int) $_GET['hint_id'] || !$this->questionHint->load((int) $_GET['hint_id'])) {
63  ilUtil::sendFailure('invalid hint id given: ' . (int) $_GET['hint_id'], true);
64  $this->ctrl->redirectByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST);
65  }
66  }
67 
73  public function forward()
74  {
75  switch ($this->getPresentationMode()) {
76  case self::PRESENTATION_MODE_AUTHOR:
77 
78  $pageObjectGUI = $this->buildAuthorPresentationPageObjectGUI();
79  break;
80 
81  case self::PRESENTATION_MODE_PREVIEW:
82 
83  $pageObjectGUI = $this->buildPreviewPresentationPageObjectGUI();
84  break;
85 
86  case self::PRESENTATION_MODE_REQUEST:
87 
88  $pageObjectGUI = $this->buildRequestPresentationPageObjectGUI();
89  break;
90  }
91 
92  $this->ctrl->setParameter($pageObjectGUI, 'hint_id', $this->questionHint->getId());
93 
94  $this->ctrl->forwardCommand($pageObjectGUI);
95  }
96 
104  {
105  $this->tabs->setBackTarget(
106  $this->lng->txt('tst_question_hints_back_to_hint_list'),
107  $this->ctrl->getLinkTargetByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST)
108  );
109 
110  $pageObjectGUI = $this->getPageObjectGUI(
111  $this->questionHint->getPageObjectType(),
112  $this->questionHint->getId()
113  );
114 
115  $pageObjectGUI->setEnabledTabs(false);
116 
117  $pageObjectGUI->setPresentationTitle(
118  ilAssQuestionHint::getHintIndexLabel($this->lng, $this->questionHint->getIndex())
119  );
120 
121  return $pageObjectGUI;
122  }
123 
131  {
132  $this->tabs->setBackTarget(
133  $this->lng->txt('tst_question_hints_back_to_hint_list'),
134  $this->ctrl->getLinkTargetByClass('ilAssQuestionHintRequestGUI', ilAssQuestionHintRequestGUI::CMD_SHOW_LIST)
135  );
136 
137  $pageObjectGUI = $this->getPageObjectGUI(
138  $this->questionHint->getPageObjectType(),
139  $this->questionHint->getId()
140  );
141 
142  $pageObjectGUI->setEnabledTabs(false);
143 
144  $pageObjectGUI->setPresentationTitle(
145  ilAssQuestionHint::getHintIndexLabel($this->lng, $this->questionHint->getIndex())
146  );
147 
148  return $pageObjectGUI;
149  }
150 
158  {
159  $this->tabs->setBackTarget(
160  $this->lng->txt('tst_question_hints_back_to_hint_list'),
161  $this->ctrl->getLinkTargetByClass('ilAssQuestionHintsGUI', ilAssQuestionHintsGUI::CMD_SHOW_LIST)
162  );
163 
164  $this->ensurePageObjectExists(
165  $this->questionHint->getPageObjectType(),
166  $this->questionHint->getId()
167  );
168 
169  $pageObjectGUI = $this->getPageObjectGUI(
170  $this->questionHint->getPageObjectType(),
171  $this->questionHint->getId()
172  );
173 
174  $pageObjectGUI->setEnabledTabs(true);
175 
176  return $pageObjectGUI;
177  }
178 
184  public function getPresentationMode()
185  {
187  }
188 
196  {
197  switch ($presentationMode) {
198  case self::PRESENTATION_MODE_AUTHOR:
199  case self::PRESENTATION_MODE_PREVIEW:
200  case self::PRESENTATION_MODE_REQUEST:
201 
202  $this->presentationMode = $presentationMode;
203  break;
204 
205  default: throw new ilTestQuestionPoolException('invalid presentation mode given: ' . $presentationMode);
206  }
207  }
208 
215  protected function getPageObjectGUI($pageObjectType, $pageObjectId)
216  {
217  include_once("./Modules/TestQuestionPool/classes/class.ilAssHintPageGUI.php");
218  $pageObjectGUI = new ilAssHintPageGUI($pageObjectId);
219  $pageObjectGUI->obj->addUpdateListener(
220  $this->questionOBJ,
221  'updateTimestamp'
222  );
223  return $pageObjectGUI;
224  }
225 
231  protected function ensurePageObjectExists($pageObjectType, $pageObjectId)
232  {
233  include_once("./Modules/TestQuestionPool/classes/class.ilAssHintPage.php");
234  if (!ilAssHintPage::_exists($pageObjectType, $pageObjectId)) {
235  $pageObject = new ilAssHintPage();
236  $pageObject->setParentId($this->questionOBJ->getId());
237  $pageObject->setId($pageObjectId);
238  $pageObject->createFromXML();
239  }
240  }
241 }
ensurePageObjectExists($pageObjectType, $pageObjectId)
ensures an existing page object with giben type/id
static _exists($a_parent_type, $a_id, $a_lang="", $a_no_cache=false)
Checks whether page exists.
This class provides processing control methods.
Tabs GUI.
$_GET["client_id"]
Abstract basic class which is to be extended by the concrete assessment question type classes...
buildPreviewPresentationPageObjectGUI()
forwards the command to page object gui for author presentation
const CMD_SHOW_LIST
command constants
static getHintIndexLabel(ilLanguage $lng, $hintIndex)
Assessment hint page object.
getPageObjectGUI($pageObjectType, $pageObjectId)
instantiates, initialises and returns a page object gui object
Assessment hint page GUI class.
buildAuthorPresentationPageObjectGUI()
forwards the command to page object gui for author presentation
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
buildRequestPresentationPageObjectGUI()
forwards the command to page object gui for author presentation
language handling
__construct(assQuestion $questionOBJ, ilCtrl $ctrl, ilTabsGUI $tabs, ilLanguage $lng)
Constructor.