ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilIndividualAssessmentMemberGUI.php
Go to the documentation of this file.
1 <?php
2 
3 require_once 'Services/Form/classes/class.ilTextAreaInputGUI.php';
4 require_once 'Services/Form/classes/class.ilTextInputGUI.php';
5 require_once 'Services/Form/classes/class.ilCheckboxInputGUI.php';
6 require_once 'Services/Form/classes/class.ilNonEditableValueGUI.php';
7 require_once 'Services/Form/classes/class.ilSelectInputGUI.php';
8 require_once 'Modules/IndividualAssessment/classes/LearningProgress/class.ilIndividualAssessmentLPInterface.php';
9 require_once 'Modules/IndividualAssessment/classes/Notification/class.ilIndividualAssessmentPrimitiveInternalNotificator.php';
10 require_once 'Modules/IndividualAssessment/classes/class.ilIndividualAssessmentLP.php';
11 
20  protected $notificator;
21 
22  public function __construct($members_gui ,$a_parent_gui, $a_ref_id) {
23  $this->notificator = new ilIndividualAssessmentPrimitiveInternalNotificator();
24  global $DIC;
25  $this->ctrl = $DIC['ilCtrl'];
26  $this->members_gui = $members_gui;
27  $this->parent_gui = $a_parent_gui;
28  $this->object = $a_parent_gui->object;
29  $this->ref_id = $a_ref_id;
30  $this->tpl = $DIC['tpl'];
31  $this->lng = $DIC['lng'];
32  $this->ctrl->saveParameter($this,'usr_id');
33  $this->examinee = new ilObjUser($_GET['usr_id']);
34  $this->examiner = $DIC['ilUser'];
35  $this->setTabs($DIC['ilTabs']);
36  $this->member = $this->object->membersStorage()
37  ->loadMember($this->object, $this->examinee);
38  }
39 
40  public function executeCommand() {
41  $edited_by_other = $this->targetWasEditedByOtherUser($this->member);
42  $read_permission = $this->object->accessHandler()->checkAccessToObj($this->object,'read_learning_progress');
43  $edit_permission = $this->object->accessHandler()->checkAccessToObj($this->object,'edit_learning_progress');
44  if(!$read_permission && !$edit_permission) {
45  $a_parent_gui->handleAccessViolation();
46  }
47  $cmd = $this->ctrl->getCmd();
48  switch($cmd) {
49  case 'edit':
50  case 'save':
51  case 'finalize':
52  case 'finalizeConfirmation':
53  if($edited_by_other || !$edit_permission) {
54  $a_parent_gui->handleAccessViolation();
55  }
56  break;
57  case 'view':
58  if(($edited_by_other || !$edit_permission) && !$read_permission) {
59  $a_parent_gui->handleAccessViolation();
60  }
61  break;
62  case 'cancel':
63  break;
64  default:
65  $a_parent_gui->handleAccessViolation();
66  }
67  $this->$cmd();
68  }
69 
70  protected function setTabs(ilTabsGUI $tabs) {
71  $tabs->clearTargets();
72  $tabs->setBackTarget($this->lng->txt('back'),
73  $this->getBackLink());
74  }
75 
76  protected function getBackLink() {
77  return $this->ctrl->getLinkTargetByClass(
78  array(get_class($this->parent_gui)
79  ,get_class($this->members_gui))
80  ,'view');
81  }
82 
83  protected function cancel() {
84  $this->ctrl->redirect($this->members_gui);
85  }
86 
87  protected function finalizeConfirmation() {
88  if($this->mayBeEdited()) {
89  $form = $this->initGradingForm();
90  $form->setValuesByArray($_POST);
91  if($form->checkInput()) {
92  $member = $this->updateDataInMemberByArray($this->member,$_POST);
93  if($member->mayBeFinalized()) {
94  $this->parent_gui->setScreenId("iass", "member", "finalizeConfirmation");
95  include_once './Services/Utilities/classes/class.ilConfirmationGUI.php';
96  $confirm = new ilConfirmationGUI();
97  $confirm->addHiddenItem('record', $_POST['record']);
98  $confirm->addHiddenItem('internal_note', $_POST['internal_note']);
99  $confirm->addHiddenItem('notify', $_POST['notify']);
100  $confirm->addHiddenItem('learning_progress',$_POST['learning_progress']);
101  $confirm->setHeaderText($this->lng->txt('iass_finalize_user_qst'));
102  $confirm->setFormAction($this->ctrl->getFormAction($this));
103  $confirm->setConfirm($this->lng->txt('iass_finalize'), 'finalize');
104  $confirm->setCancel($this->lng->txt('cancel'), 'save');
105  $this->tpl->setContent($confirm->getHTML());
106  } else {
107  ilUtil::sendFailure($this->lng->txt('iass_may_not_finalize'));
108  $this->edit();
109  }
110  } else {
111  $this->edit();
112  }
113  } else {
114  $this->view();
115  }
116  }
117 
118  protected function finalize() {
119  if($this->mayBeEdited()) {
120  $form = $this->initGradingForm();
121  $form->setValuesByArray($_POST);
122  if($form->checkInput()) {
123  $member = $this->updateDataInMemberByArray($this->member,$_POST);
124  if($member->mayBeFinalized()) {
125  $this->member = $member->withFinalized()->maybeSendNotification($this->notificator);
126  $this->object->membersStorage()->updateMember($this->member);
127  ilUtil::sendSuccess($this->lng->txt('iass_membership_finalized'));
128  if($this->object->isActiveLP()) {
130  }
131  $this->view();
132  } else {
133  ilUtil::sendFailure($this->lng->txt('iass_may_not_finalize'));
134  $this->edit();
135  }
136  } else {
137  $this->edit();
138  }
139  } else {
140  $this->view();
141  }
142  }
143 
144  protected function mayBeEdited() {
145  return !$this->member->finalized() && !$this->targetWasEditedByOtherUser($this->member);
146  }
147 
148  protected function edit() {
149  if($this->mayBeEdited()) {
150  $this->parent_gui->setScreenId("iass", "member", "edit");
151  $form = $this->fillForm($this->initGradingForm(),$this->member);
152  $this->renderForm($form);
153  } else {
154  $this->view();
155  }
156  }
157 
158  protected function renderForm(ilPropertyFormGUI $a_form) {
159  $this->tpl->setContent($a_form->getHTML());
160  }
161 
162  protected function view() {
163  $this->parent_gui->setScreenId("iass", "member", "view");
164  $form = $this->fillForm($this->initGradingForm(false),$this->member);
165  $this->renderForm($form);
166  }
167 
168  protected function save() {
169  if($this->mayBeEdited()) {
170  $this->parent_gui->setScreenId("iass", "member", "save");
171  $form = $this->initGradingForm();
172  $form->setValuesByArray($_POST);
173  if($form->checkInput()) {
174  $this->member = $this->updateDataInMemberByArray($this->member,$_POST);
175  $this->object->membersStorage()->updateMember($this->member);
176  ilUtil::sendSuccess($this->lng->txt('iass_membership_saved'));
177  if($this->object->isActiveLP()) {
179  }
180  }
181  $this->renderForm($form);
182  } else {
183  $this->view();
184  }
185  }
186 
188  $member = $member->withRecord($data['record'])
189  ->withInternalNote($data['internal_note'])
190  ->withLPStatus($data['learning_progress'])
191  ->withExaminerId($this->examiner->getId())
192  ->withNotify(($data['notify'] == 1 ? true : false));
193  return $member;
194  }
195 
196  protected function initGradingForm($may_be_edited = true) {
197  require_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
198  $form = new ilPropertyFormGUI();
199  $form->setFormAction($this->ctrl->getFormAction($this));
200  $form->setTitle($this->lng->txt('iass_edit_record'));
201 
202  $examinee_name = $this->examinee->getLastname().', '.$this->examinee->getFirstname();
203 
204  $usr_name = new ilNonEditableValueGUI($this->lng->txt('name'),'name');
205  $form->addItem($usr_name);
206  // record
207  $ti = new ilTextAreaInputGUI($this->lng->txt('iass_record'), 'record');
208  $ti->setInfo($this->lng->txt('iass_record_info'));
209  $ti->setCols(40);
210  $ti->setRows(5);
211  $ti->setDisabled(!$may_be_edited);
212  $form->addItem($ti);
213 
214  // description
215  $ta = new ilTextAreaInputGUI($this->lng->txt('iass_internal_note'), 'internal_note');
216  $ta->setInfo($this->lng->txt('iass_internal_note_info'));
217  $ta->setCols(40);
218  $ta->setRows(5);
219  $ta->setDisabled(!$may_be_edited);
220  $form->addItem($ta);
221 
222  $learning_progress = new ilSelectInputGUI($this->lng->txt('grading'),'learning_progress');
223  $learning_progress->setOptions(
224  array(ilIndividualAssessmentMembers::LP_IN_PROGRESS => $this->lng->txt('iass_status_pending')
225  , ilIndividualAssessmentMembers::LP_COMPLETED => $this->lng->txt('iass_status_completed')
226  , ilIndividualAssessmentMembers::LP_FAILED => $this->lng->txt('iass_status_failed')));
227  $learning_progress->setDisabled(!$may_be_edited);
228  $form->addItem($learning_progress);
229 
230  // notify examinee
231  $notify = new ilCheckboxInputGUI($this->lng->txt('iass_notify'), 'notify');
232  $notify->setInfo($this->lng->txt('iass_notify_explanation'));
233  $notify->setDisabled(!$may_be_edited);
234  $form->addItem($notify);
235 
236  if($may_be_edited) {
237  $form->addCommandButton('save', $this->lng->txt('save'));
238  $form->addCommandButton('finalizeConfirmation',$this->lng->txt('iass_finalize'));
239  }
240  $form->addCommandButton('cancel', $this->lng->txt('iass_return'));
241  return $form;
242  }
243 
244  protected function fillForm(ilPropertyFormGUI $a_form, ilIndividualAssessmentMember $member) {
245  $a_form->setValuesByArray(array(
246  'name' => $member->name()
247  , 'record' => $member->record()
248  , 'internal_note' => $member->internalNote()
249  , 'notify' => $member->notify()
250  , 'learning_progress' => (int)$member->LPStatus()
251  ));
252  return $a_form;
253  }
254 
256  return (int)$member->examinerId() !== (int)$this->examiner->getId()
257  && 0 !== (int)$member->examinerId();
258  }
259 }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
__construct($members_gui, $a_parent_gui, $a_ref_id)
This class represents a selection list property in a property form.
Tabs GUI.
This class represents a property form user interface.
$_GET["client_id"]
examinerId()
Get the user id of the examiner.
$cmd
Definition: sahs_server.php:35
This class represents a checkbox property in a property form.
static updateLPStatusOfMember(ilIndividualAssessmentMember $member)
setBackTarget($a_title, $a_target, $a_frame="")
back target for upper context
withRecord($record)
Clone this object and set a record.
fillForm(ilPropertyFormGUI $a_form, ilIndividualAssessmentMember $member)
setInfo($a_info)
Set Information Text.
targetWasEditedByOtherUser(ilIndividualAssessmentMember $member)
For the purpose of streamlining the grading and learning-process status definition outside of tests...
clearTargets()
clear all targets
setOptions($a_options)
Set Options.
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
Edit the record of a user, set LP.
notify()
Will the user be notified after finalization?
name()
Get the examinee name corresponding to this membership.
This class represents a non editable value in a property form.
Create new PHPExcel object
obj_idprivate
This class represents a text area property in a property form.
updateDataInMemberByArray(ilIndividualAssessmentMember $member, $data)
global $DIC
$_POST["username"]
setValuesByArray($a_values, $a_restrict_to_value_keys=false)
Set form values from an array.
LPStatus()
Get the LP-status corresponding to this membership.
Confirmation screen class.