30 $this->submission = $a_submission;
34 $this->tabs_gui = $ilTabs;
43 if(!$this->ass->getPeerReview())
48 $class = $ilCtrl->getNextClass($this);
49 $cmd = $ilCtrl->getCmd(
"showpeerreviewoverview");
53 case "ilfilesystemgui":
54 $ilCtrl->saveParameter($this, array(
"fu"));
57 $parts = explode(
"__",
$_GET[
"fu"]);
58 $giver_id = $parts[0];
67 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($peer_id,
true);
68 if(
sizeof($peer_items))
70 foreach($peer_items as $item)
72 if($item[
"giver_id"] == $giver_id)
80 $ilCtrl->redirect($this,
"editPeerReview");
83 $ilTabs->clearTargets();
84 $ilTabs->setBackTarget($lng->txt(
"back"),
85 $ilCtrl->getLinkTarget($this,
"editPeerReview"));
87 include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
91 include_once(
"./Services/FileSystem/classes/class.ilFileSystemGUI.php");
92 $fs_gui =
new ilFileSystemGUI($fstorage->getPeerReviewUploadPath($peer_id, $giver_id));
94 $fs_gui->setAllowDirectories(
false);
95 $fs_gui->setTitle($this->ass->getTitle().
": ".
96 $lng->txt(
"exc_peer_review").
" - ".
97 $lng->txt(
"exc_peer_review_give"));
98 $ret = $this->ctrl->forwardCommand($fs_gui);
102 $this->ass->updatePeerReviewTimestamp((
int)
$_REQUEST[
"peer_id"]);
104 include_once(
"./Services/Rating/classes/class.ilRatingGUI.php");
106 $rating_gui->setObject($this->ass->getId(),
"ass",
107 (int)$_REQUEST[
"peer_id"],
"peer");
108 $this->ctrl->forwardCommand($rating_gui);
109 $ilCtrl->redirect($this,
"editPeerReview");
112 case "ilexsubmissiontextgui":
113 if(!$this->submission->isTutor())
115 $ilTabs->clearTargets();
116 $ilTabs->setBackTarget($lng->txt(
"back"),
117 $ilCtrl->getLinkTarget($this,
"editPeerReview"));
118 $this->ctrl->setReturn($this,
"editPeerReview");
122 $ilTabs->clearTargets();
123 $ilTabs->setBackTarget($lng->txt(
"back"),
124 $ilCtrl->getLinkTarget($this,
"showGivenPeerReview"));
125 $this->ctrl->setReturn($this,
"showGivenPeerReview");
127 include_once
"Modules/Exercise/classes/class.ilExSubmissionTextGUI.php";
129 $ilCtrl->forwardCommand($gui);
133 $this->{
$cmd.
"Object"}();
140 $this->ctrl->returnToParent($this);
149 if(
$ass->afterDeadlineStrict() &&
150 $ass->getPeerReview())
152 $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI",
"ass_id", $a_submission->
getAssignment()->getId());
154 $nr_missing_fb = $a_submission->
getPeerReview()->getNumberOfMissingFeedbacksForReceived(
$ass->getId(),
$ass->getPeerReviewMin());
157 if(!
$ass->getPeerReviewDeadline() ||
158 $ass->getPeerReviewDeadline() > time())
161 if(
$ass->getPeerReviewDeadline())
163 $dl_info =
" (".sprintf($lng->txt(
"exc_peer_review_deadline_info_button"),
168 $button->setPrimary($nr_missing_fb);
169 $button->setCaption($lng->txt(
"exc_peer_review_give").$dl_info,
false);
170 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"editPeerReview"));
171 $edit_pc = $button->render();
173 else if(
$ass->getPeerReviewDeadline())
175 $edit_pc = $lng->txt(
"exc_peer_review_deadline_reached");
179 if((!
$ass->getPeerReviewDeadline() ||
180 $ass->getPeerReviewDeadline() < time()))
183 if(
$ass->getPeerReviewDeadline() &&
187 $button->setCaption(
"exc_peer_review_given");
188 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"showGivenPeerReview"));
189 $view_pc = $button->render().
" ";
196 $received = (bool)
sizeof($a_submission->
getPeerReview()->getPeerReviewsByPeerId($a_submission->
getUserId(),
true));
200 $button->setCaption(
"exc_peer_review_show");
201 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"showReceivedPeerReview"));
202 $view_pc .= $button->render();
207 $view_pc .= $lng->txt(
"exc_peer_review_show_received_none");
213 $view_pc .= $lng->txt(
"exc_peer_review_show_missing");
223 $a_info->
addProperty($lng->txt(
"exc_peer_review"), $edit_pc.
" ".$view_pc);
225 $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI",
"ass_id",
"");
231 return ($this->submission->isOwner() &&
232 $this->ass->afterDeadlineStrict() &&
233 (!$this->ass->getPeerReviewDeadline() ||
234 $this->ass->getPeerReviewDeadline() > time()));
239 return ($this->submission->isTutor() ||
240 ($this->submission->isOwner() &&
241 $this->ass->afterDeadlineStrict() &&
242 (!$this->ass->getPeerReviewDeadline() ||
243 $this->ass->getPeerReviewDeadline() < time())));
255 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
256 if(!
sizeof($peer_items))
262 $tpl->setTitle($this->ass->getTitle().
": ".$lng->txt(
"exc_peer_review_given"));
264 include_once
"Services/InfoScreen/classes/class.ilInfoScreenGUI.php";
269 $tpl->setContent($info_widget->getHTML());
277 (!$this->submission->isTutor() &&
278 $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived()))
283 $this->tabs_gui->clearTargets();
284 $this->tabs_gui->setBackTarget($this->lng->txt(
"back"), $this->ctrl->getLinkTarget($this,
"returnToParent"));
286 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($this->submission->getUserId(), !$this->submission->isTutor());
287 if(!
sizeof($peer_items))
291 $ilCtrl->redirect($this,
"returnToParent");
294 $tpl->setTitle($this->ass->getTitle().
": ".$lng->txt(
"exc_peer_review_show"));
296 include_once
"Services/InfoScreen/classes/class.ilInfoScreenGUI.php";
301 $tpl->setContent($info_widget->getHTML());
308 include_once
"Services/User/classes/class.ilUserUtil.php";
310 if($this->submission->isTutor())
312 $user_title = $a_by_peer
313 ? $lng->txt(
"exc_peer_review_recipient")
314 : $lng->txt(
"exc_peer_review_giver");
324 $a_info_widget->
addSection($lng->txt(
"exc_submission"));
327 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"showReceivedPeerReview");
329 $a_info_widget->
addProperty($file_info[
"last_submission"][
"txt"], $file_info[
"last_submission"][
"value"]);
334 $sub_data =
'<a href="'.$file_info[
"files"][
"download_url"].
'">'.$lng->txt(
"download").
'</a>';
336 $a_info_widget->
addProperty($lng->txt(
"exc_submission"), $sub_data);
339 foreach($a_peer_items as $peer)
343 $giver_id = $this->submission->getUserId();
344 $peer_id = $peer[
"peer_id"];
345 $id_title = $lng->txt(
"exc_peer_review_recipient");
350 $giver_id = $peer[
"giver_id"];
351 $peer_id = $this->submission->getUserId();
352 $id_title = $lng->txt(
"exc_peer_review_giver");
353 $user_id = $giver_id;
357 if($this->submission->isTutor())
361 else if(!$this->ass->hasPeerReviewPersonalized())
363 $id_value = $peer[
"seq"];
369 $a_info_widget->
addSection($id_title.
": ".$id_value);
377 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"editPeerReviewItem");
379 $a_info_widget->
addProperty($file_info[
"last_submission"][
"txt"], $file_info[
"last_submission"][
"value"]);
384 $sub_data =
'<a href="'.$file_info[
"files"][
"download_url"].
'">'.$lng->txt(
"download").
'</a>';
386 $a_info_widget->
addProperty($lng->txt(
"exc_submission"), $sub_data);
392 $values = $this->submission->getPeerReview()->getPeerReviewValues($giver_id, $peer_id);
394 foreach($this->ass->getPeerReviewCriteriaCatalogueItems() as $item)
396 $crit_id = $item->getId()
400 $item->setPeerReviewContext(
406 $title = $item->getTitle();
407 $html = $item->getHTML($values[$crit_id]);
422 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
423 if(!
sizeof($peer_items))
429 $missing = $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived();
432 $dl = $this->ass->getPeerReviewDeadline();
433 if(!$dl || $dl < time())
435 ilUtil::sendInfo(sprintf($this->lng->txt(
"exc_peer_review_missing_info"), $missing));
439 ilUtil::sendInfo(sprintf($this->lng->txt(
"exc_peer_review_missing_info_deadline"), $missing,
444 include_once
"Modules/Exercise/classes/class.ilExAssignmentPeerReviewTableGUI.php";
446 $peer_items,
"returnToParent");
447 $tpl->setContent(
$tbl->getHTML());
465 $tpl->setContent($a_form->getHTML());
470 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
471 foreach($peer_items as $item)
473 if($item[
"peer_id"] == $a_peer_id)
492 if(trim(
$text[
"atext"]))
495 include_once
"Services/RTE/classes/class.ilRTE.php";
506 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
507 foreach($peer_items as $item)
509 if($item[
"peer_id"] == $a_peer_id)
516 $ilCtrl->saveParameter($this,
"peer_id");
518 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
520 $form->setFormAction($ilCtrl->getFormAction($this,
"updatePeerReview"));
522 $form->setTitle($this->ass->getTitle().
": ".$lng->txt(
"exc_peer_review_give"));
525 if(!$this->ass->hasPeerReviewPersonalized())
527 $id_title = $lng->txt(
"id");
528 $id_value = $peer[
"seq"];
532 include_once
"Services/User/classes/class.ilUserUtil.php";
533 $id_title = $lng->txt(
"exc_peer_review_recipient");
537 $id->setValue($id_value);
543 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"editPeerReviewItem");
546 $last_sub->setValue($file_info[
"last_submission"][
"value"]);
547 $form->addItem($last_sub);
552 $sub_data =
'<a href="'.$file_info[
"files"][
"download_url"].
'">'.$lng->txt(
"download").
'</a>';
557 $form->addItem($sub);
562 $input->setTitle($lng->txt(
"exc_peer_review"));
563 $form->addItem($input);
565 $values = $this->submission->getPeerReview()->getPeerReviewValues($this->submission->getUserId(), $a_peer_id);
567 foreach($this->ass->getPeerReviewCriteriaCatalogueItems() as $item)
569 $crit_id = $item->getId()
573 $item->setPeerReviewContext(
575 $this->submission->getUserId(),
579 $item->addToPeerReviewForm($values[$crit_id]);
582 $form->addCommandButton(
"updatePeerReview", $lng->txt(
"save"));
583 $form->addCommandButton(
"editPeerReview", $lng->txt(
"cancel"));
595 !$ilCtrl->isAsynch())
600 $peer_id = (int)
$_POST[
"peer_id"];
601 $crit_id =
$_POST[
"crit_id"];
602 $giver_id = $ilUser->getId();
604 include_once
"Modules/Exercise/classes/class.ilExcCriteria.php";
605 if(!is_numeric($crit_id))
613 $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
614 $html = $crit->updateFromAjax();
619 echo $tpl->getOnLoadCodeForAsynch();
636 if($form->checkInput())
641 foreach($this->ass->getPeerReviewCriteriaCatalogueItems() as $item)
643 $item->setPeerReviewContext(
645 $this->submission->getUserId(),
649 $value = $item->importFromPeerReviewForm();
652 $crit_id = $item->getId()
655 $values[$crit_id] = $value;
657 if(!$item->validate($value))
665 $this->submission->getPeerReview()->updatePeerReview($peer_id, $values);
670 $ilCtrl->redirect($this,
"editPeerReview");
678 $form->setValuesByPost();
685 $exercise =
new ilObjExercise($this->ass->getExerciseId(),
false);
687 $this->submission->getUserIds(),
688 $this->submission->hasSubmitted(),
689 $this->submission->validatePeerReviews()
703 $parts = explode(
"__",
$_GET[
"fu"]);
704 $giver_id = $parts[0];
705 $peer_id = $parts[1];
706 $crit_id = $parts[2];
708 include_once
"Modules/Exercise/classes/class.ilExcCriteria.php";
709 if(!is_numeric($crit_id))
718 $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
719 $file = $crit->getFileByHash();
726 $ilCtrl->redirect($this,
"returnToParent");
740 !$this->ass->getPeerReview())
745 include_once
"Modules/Exercise/classes/class.ilExAssignmentPeerReviewOverviewTableGUI.php";
750 $panel_data =
$tbl->getPanelInfo();
751 if(
sizeof($panel_data))
753 $ptpl =
new ilTemplate(
"tpl.exc_peer_review_overview_panel.html",
true,
true,
"Modules/Exercise");
754 foreach($panel_data as $item)
756 $ptpl->setCurrentBlock(
"user_bl");
757 foreach($item[
"value"] as $user)
759 $ptpl->setVariable(
"USER", $user);
760 $ptpl->parseCurrentBlock();
763 $ptpl->setCurrentBlock(
"item_bl");
764 $ptpl->setVariable(
"TITLE", $item[
"title"]);
765 $ptpl->parseCurrentBlock();
768 include_once
"Services/UIComponent/Panel/classes/class.ilPanelGUI.php";
770 $panel->setHeading($this->lng->txt(
"exc_peer_review_overview_invalid_users"));
771 $panel->setBody($ptpl->get());
772 $panel = $panel->getHTML();
775 $tpl->setContent(
$tbl->getHTML().$panel);
783 !$this->ass->getPeerReview())
788 $ilTabs->clearTargets();
790 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
792 $cgui->setFormAction($ilCtrl->getFormAction($this));
793 $cgui->setHeaderText(sprintf($this->lng->txt(
"exc_peer_review_reset_sure"), $this->ass->getTitle()));
794 $cgui->setCancel($this->lng->txt(
"cancel"),
"showPeerReviewOverview");
795 $cgui->setConfirm($this->lng->txt(
"delete"),
"resetPeerReview");
797 $tpl->setContent($cgui->getHTML());
805 !$this->ass->getPeerReview())
810 include_once
"Modules/Exercise/classes/class.ilExPeerReview.php";
812 $all_giver_ids = $peer_review->resetPeerReviews();
814 if(is_array($all_giver_ids))
817 $exercise =
new ilObjExercise($this->ass->getExerciseId(),
false);
818 if($exercise->isCompletionBySubmissionEnabled() &&
821 include_once
"Modules/Exercise/classes/class.ilExSubmission.php";
822 foreach($all_giver_ids as $user_id)
826 $pgui->handlePeerReviewChange();
832 $ilCtrl->redirect($this,
"showPeerReviewOverview");
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static getInstanceByType($a_type)
editPeerReviewItemObject(ilPropertyFormGUI $a_form=null)
static getOverviewContent(ilInfoScreenGUI $a_info, ilExSubmission $a_submission)
setValue($a_value)
Set Value.
initPeerReviewItemForm($a_peer_id)
static getInstanceById($a_id)
addSection($a_title)
add a new section
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
confirmResetPeerReviewObject()
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
setTableId($a_val)
Set table id.
List all peers to be reviewed for user.
static getNamePresentation($a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false)
Default behaviour is:
showPeerReviewOverviewObject()
showReceivedPeerReviewObject()
special template class to simplify handling of ITX/PEAR
static formatDate(ilDateTime $date)
Format a date public.
showGivenPeerReviewObject()
getSubmissionContent(ilExSubmission $a_submission)
static deliverFile($a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
__construct(ilExAssignment $a_ass, ilExSubmission $a_submission=null)
Constructor.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
renderInfoWidget(ilInfoScreenGUI $a_info_widget, array $a_peer_items, $a_by_peer=false)
static getInstance()
Get instance.
List all peer groups for assignment.
This class represents a non editable value in a property form.
create()
Create directory.
addProperty($a_name, $a_value, $a_link="")
add a property to current section
const PEER_REVIEW_VALID_NONE
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
File System Explorer GUI class.
downloadPeerReviewObject()
processExerciseStatus(ilExAssignment $a_ass, array $a_user_ids, $a_has_submitted, array $a_valid_submissions=null)
getFiles(array $a_file_ids=null, $a_only_valid=false, $a_min_timestamp=null)
Object-based submissions (ends up as static file)
Confirmation screen class.