54 $this->
user = $DIC->user();
55 $ilCtrl = $DIC->ctrl();
56 $ilTabs = $DIC->tabs();
57 $lng = $DIC->language();
61 $this->submission = $a_submission;
64 $this->ctrl = $ilCtrl;
65 $this->tabs_gui = $ilTabs;
77 if (!$this->ass->getPeerReview()) {
81 $class = $ilCtrl->getNextClass($this);
82 $cmd = $ilCtrl->getCmd(
"showpeerreviewoverview");
85 case "ilfilesystemgui":
86 $ilCtrl->saveParameter($this, array(
"fu"));
89 $parts = explode(
"__",
$_GET[
"fu"]);
90 $giver_id = $parts[0];
98 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($peer_id,
true);
99 if (is_array($peer_items)) {
100 foreach ($peer_items as $item) {
101 if ($item[
"giver_id"] == $giver_id) {
107 $ilCtrl->redirect($this,
"editPeerReview");
110 $ilTabs->clearTargets();
111 $ilTabs->setBackTarget(
113 $ilCtrl->getLinkTarget($this,
"editPeerReview")
119 $fs_gui =
new ilFileSystemGUI($fstorage->getPeerReviewUploadPath($peer_id, $giver_id));
121 $fs_gui->setAllowDirectories(
false);
122 $fs_gui->setTitle($this->ass->getTitle() .
": " .
123 $lng->txt(
"exc_peer_review") .
" - " .
124 $lng->txt(
"exc_peer_review_give"));
125 $ret = $this->ctrl->forwardCommand($fs_gui);
129 $this->ass->updatePeerReviewTimestamp((
int) $_REQUEST[
"peer_id"]);
132 $rating_gui->setObject(
135 (int) $_REQUEST[
"peer_id"],
138 $this->ctrl->forwardCommand($rating_gui);
139 $ilCtrl->redirect($this,
"editPeerReview");
142 case "ilexsubmissiontextgui":
143 if (!$this->submission->isTutor()) {
144 $ilTabs->clearTargets();
145 $ilTabs->setBackTarget(
147 $ilCtrl->getLinkTarget($this,
"editPeerReview")
149 $this->ctrl->setReturn($this,
"editPeerReview");
151 $ilTabs->clearTargets();
152 $ilTabs->setBackTarget(
154 $ilCtrl->getLinkTarget($this,
"showGivenPeerReview")
156 $this->ctrl->setReturn($this,
"showGivenPeerReview");
159 $ilCtrl->forwardCommand($gui);
163 $this->{$cmd .
"Object"}();
170 $this->ctrl->returnToParent($this);
177 $lng = $DIC->language();
178 $ilCtrl = $DIC->ctrl();
189 if ($state->hasSubmissionEndedForAllUsers() &&
190 $ass->getPeerReview()) {
191 $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI",
"ass_id", $a_submission->
getAssignment()->getId());
193 $nr_missing_fb = $a_submission->
getPeerReview()->getNumberOfMissingFeedbacksForReceived();
198 if ($state->isPeerReviewAllowed()) {
200 if ($ass->getPeerReviewDeadline()) {
201 $dl_info =
" (" . sprintf(
202 $lng->txt(
"exc_peer_review_deadline_info_button"),
203 $state->getPeerReviewDeadlinePresentation()
208 $button->setPrimary($nr_missing_fb);
209 $button->setCaption(
$lng->txt(
"exc_peer_review_give") . $dl_info,
false);
210 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"editPeerReview"));
211 $edit_pc = $button->render();
212 } elseif ($ass->getPeerReviewDeadline()) {
213 $edit_pc =
$lng->txt(
"exc_peer_review_deadline_reached");
217 if ((!$ass->getPeerReviewDeadline() ||
218 $ass->getPeerReviewDeadline() < time())) {
220 if ($ass->getPeerReviewDeadline() &&
223 $button->setCaption(
"exc_peer_review_given");
224 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"showGivenPeerReview"));
225 $view_pc = $button->render() .
" ";
229 if (!$nr_missing_fb) {
231 $received = (bool)
sizeof($a_submission->
getPeerReview()->getPeerReviewsByPeerId($a_submission->
getUserId(),
true));
234 $button->setCaption(
"exc_peer_review_show");
235 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"showReceivedPeerReview"));
236 $view_pc .= $button->render();
240 $view_pc .=
$lng->txt(
"exc_peer_review_show_received_none");
245 $view_pc .=
$lng->txt(
"exc_peer_review_show_missing");
255 $sep = ($edit_pc !=
"" && $view_pc !=
"")
259 $a_info->
addProperty(
$lng->txt(
"exc_peer_review"), $edit_pc . $sep . $view_pc);
261 $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI",
"ass_id",
"");
267 return ($this->submission->isOwner() &&
268 $this->ass->afterDeadlineStrict() &&
269 (!$this->ass->getPeerReviewDeadline() ||
270 $this->ass->getPeerReviewDeadline() > time()));
275 return ($this->submission->isTutor() ||
276 ($this->submission->isOwner() &&
277 $this->ass->afterDeadlineStrict() &&
278 (!$this->ass->getPeerReviewDeadline() ||
279 $this->ass->getPeerReviewDeadline() < time())));
291 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
292 if (!
sizeof($peer_items)) {
297 $tpl->setTitle($this->ass->getTitle() .
": " .
$lng->txt(
"exc_peer_review_given"));
303 $tpl->setContent($info_widget->getHTML());
313 (!$this->submission->isTutor() &&
314 $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived())) {
318 $this->tabs_gui->clearTargets();
319 $this->tabs_gui->setBackTarget($this->lng->txt(
"back"), $this->ctrl->getLinkTarget($this,
"returnToParent"));
321 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($this->submission->getUserId(), !$this->submission->isTutor());
322 if (!
sizeof($peer_items)) {
325 $ilCtrl->redirect($this,
"returnToParent");
328 $tpl->setTitle($this->ass->getTitle() .
": " .
$lng->txt(
"exc_peer_review_show"));
334 $tpl->setContent($info_widget->getHTML());
341 if ($this->submission->isTutor()) {
342 $user_title = $a_by_peer
343 ?
$lng->txt(
"exc_peer_review_recipient")
344 :
$lng->txt(
"exc_peer_review_giver");
358 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"showReceivedPeerReview");
361 $file_info[
"last_submission"][
"txt"],
362 $file_info[
"last_submission"][
"value"] .
368 $sub_data =
'<a href="' . $file_info[
"files"][
"download_url"] .
'">' .
$lng->txt(
"download") .
'</a>';
373 foreach ($a_peer_items as $peer) {
375 $giver_id = $this->submission->getUserId();
376 $peer_id = $peer[
"peer_id"];
377 $id_title =
$lng->txt(
"exc_peer_review_recipient");
380 $giver_id = $peer[
"giver_id"];
381 $peer_id = $this->submission->getUserId();
382 $id_title =
$lng->txt(
"exc_peer_review_giver");
383 $user_id = $giver_id;
387 if ($this->submission->isTutor()) {
389 } elseif (!$this->ass->hasPeerReviewPersonalized()) {
390 $id_value = $peer[
"seq"];
394 $a_info_widget->
addSection($id_title .
": " . $id_value);
401 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"editPeerReviewItem");
404 $file_info[
"last_submission"][
"txt"],
405 $file_info[
"last_submission"][
"value"] .
411 $sub_data =
'<a href="' . $file_info[
"files"][
"download_url"] .
'">' .
$lng->txt(
"download") .
'</a>';
419 $values = $this->submission->getPeerReview()->getPeerReviewValues($giver_id, $peer_id);
421 foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
422 $crit_id = $item->getId()
426 $item->setPeerReviewContext(
432 $title = $item->getTitle();
433 $html = $item->getHTML($values[$crit_id]);
434 $a_info_widget->
addProperty($title ? $title :
" ", $html ? $html :
" ");
444 foreach ($a_submission->
getFiles() as $file) {
446 return '<div class="warning">' .
$lng->txt(
"exc_late_submission") .
'</div>';
459 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
460 if (!
sizeof($peer_items)) {
465 $missing = $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived();
467 $dl = $this->ass->getPeerReviewDeadline();
468 if (!$dl || $dl < time()) {
469 ilUtil::sendInfo(sprintf($this->lng->txt(
"exc_peer_review_missing_info"), $missing));
472 $this->lng->txt(
"exc_peer_review_missing_info_deadline"),
483 $this->submission->getUserId(),
487 $tpl->setContent($tbl->getHTML());
503 $tpl->setContent($a_form->getHTML());
508 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
509 foreach ($peer_items as $item) {
510 if ($item[
"peer_id"] == $a_peer_id) {
525 $text = array_shift($text);
526 if (trim($text[
"atext"])) {
539 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
540 foreach ($peer_items as $item) {
541 if ($item[
"peer_id"] == $a_peer_id) {
547 $ilCtrl->saveParameter($this,
"peer_id");
550 $form->setFormAction($ilCtrl->getFormAction($this,
"updatePeerReview"));
552 $form->setTitle($this->ass->getTitle() .
": " .
$lng->txt(
"exc_peer_review_give"));
555 if (!$this->ass->hasPeerReviewPersonalized()) {
556 $id_title =
$lng->txt(
"id");
557 $id_value = $peer[
"seq"];
559 $id_title =
$lng->txt(
"exc_peer_review_recipient");
563 $id->setValue($id_value);
569 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"editPeerReviewItem");
572 $last_sub->setValue($file_info[
"last_submission"][
"value"] .
574 $form->addItem($last_sub);
578 $sub_data =
'<a href="' . $file_info[
"files"][
"download_url"] .
'">' .
$lng->txt(
"download") .
'</a>';
583 $form->addItem($sub);
588 $input->setTitle(
$lng->txt(
"exc_peer_review"));
589 $form->addItem($input);
591 $values = $this->submission->getPeerReview()->getPeerReviewValues($this->submission->getUserId(), $a_peer_id);
593 foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
594 $crit_id = $item->getId()
598 $item->setPeerReviewContext(
600 $this->submission->getUserId(),
604 $item->addToPeerReviewForm($values[$crit_id]);
607 $form->addCommandButton(
"updatePeerReview",
$lng->txt(
"save"));
608 $form->addCommandButton(
"editPeerReview",
$lng->txt(
"cancel"));
622 !$ilCtrl->isAsynch()) {
626 $peer_id = (int)
$_POST[
"peer_id"];
627 $crit_id =
$_POST[
"crit_id"];
630 if (!is_numeric($crit_id)) {
635 $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
636 $html = $crit->updateFromAjax();
641 echo
$tpl->getOnLoadCodeForAsynch();
655 $peer_id = $_REQUEST[
"peer_id"];
658 if ($form->checkInput()) {
662 foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
663 $item->setPeerReviewContext(
665 $this->submission->getUserId(),
669 $value = $item->importFromPeerReviewForm();
670 if ($value !== null) {
671 $crit_id = $item->getId()
674 $values[$crit_id] = $value;
676 if (!$item->validate($value)) {
682 $this->submission->getPeerReview()->updatePeerReview($peer_id, $values);
686 ilUtil::sendSuccess($this->lng->txt(
"exc_peer_review_updated"),
true);
687 $ilCtrl->redirect($this,
"editPeerReview");
693 $form->setValuesByPost();
703 $this->submission->getUserIds(),
704 $this->submission->hasSubmitted(),
705 $this->submission->validatePeerReviews()
718 $parts = explode(
"__",
$_GET[
"fu"]);
719 $giver_id = $parts[0];
720 $peer_id = $parts[1];
721 $crit_id = $parts[2];
723 if (!is_numeric($crit_id)) {
729 $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
730 $file = $crit->getFileByHash();
735 $ilCtrl->redirect($this,
"returnToParent");
749 !$this->ass->getPeerReview()) {
755 "showPeerReviewOverview",
760 $panel_data = $tbl->getPanelInfo();
761 if (is_array($panel_data) && count($panel_data) > 0) {
762 $ptpl =
new ilTemplate(
"tpl.exc_peer_review_overview_panel.html",
true,
true,
"Modules/Exercise");
763 foreach ($panel_data as $item) {
764 $ptpl->setCurrentBlock(
"user_bl");
765 foreach ($item[
"value"] as
$user) {
766 $ptpl->setVariable(
"USER", $user);
767 $ptpl->parseCurrentBlock();
770 $ptpl->setCurrentBlock(
"item_bl");
771 $ptpl->setVariable(
"TITLE", $item[
"title"]);
772 $ptpl->parseCurrentBlock();
776 $panel->setHeading($this->lng->txt(
"exc_peer_review_overview_invalid_users"));
777 $panel->setBody($ptpl->get());
791 !$this->ass->getPeerReview()) {
795 $ilTabs->clearTargets();
798 $cgui->setFormAction($ilCtrl->getFormAction($this));
799 $cgui->setHeaderText(sprintf($this->lng->txt(
"exc_peer_review_reset_sure"), $this->ass->getTitle()));
800 $cgui->setCancel($this->lng->txt(
"cancel"),
"showPeerReviewOverview");
801 $cgui->setConfirm($this->lng->txt(
"delete"),
"resetPeerReview");
803 $tpl->setContent($cgui->getHTML());
811 !$this->ass->getPeerReview()) {
816 $all_giver_ids = $peer_review->resetPeerReviews();
818 if (is_array($all_giver_ids)) {
821 if (
$exercise->isCompletionBySubmissionEnabled() &&
823 foreach ($all_giver_ids as $user_id) {
826 $pgui->handlePeerReviewChange();
831 ilUtil::sendSuccess($this->lng->txt(
"exc_peer_review_reset_done"),
true);
832 $ilCtrl->redirect($this,
"showPeerReviewOverview");
static getInstanceByType($a_type)
editPeerReviewItemObject(ilPropertyFormGUI $a_form=null)
static getOverviewContent(ilInfoScreenGUI $a_info, ilExSubmission $a_submission)
setValue($a_value)
Set Value.
if(isset($_FILES['img_file']) &&is_array($_FILES['img_file'])) $panel
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...
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
static getInstanceByIds($a_ass_id, $a_user_id=0)
Get instance by IDs (recommended for consumer code)
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.
showPeerReviewOverviewObject()
showReceivedPeerReviewObject()
getLateSubmissionInfo(ilExSubmission $a_submission)
showGivenPeerReviewObject()
getSubmissionContent(ilExSubmission $a_submission)
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, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
__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
Exercise submission //TODO: This class has to much static methods related to delivered "files"...
File System Explorer GUI class.
downloadPeerReviewObject()
getFiles(array $a_file_ids=null, $a_only_valid=false, $a_min_timestamp=null)
Get submission items (not only files)
Object-based submissions (ends up as static file)
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
Confirmation screen class.