54 $this->
user = $DIC->user();
56 $ilTabs = $DIC->tabs();
57 $lng = $DIC->language();
61 $this->submission = $a_submission;
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")
116 include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
120 include_once(
"./Services/FileSystem/classes/class.ilFileSystemGUI.php");
121 $fs_gui =
new ilFileSystemGUI($fstorage->getPeerReviewUploadPath($peer_id, $giver_id));
123 $fs_gui->setAllowDirectories(
false);
124 $fs_gui->setTitle($this->ass->getTitle() .
": " .
125 $lng->txt(
"exc_peer_review") .
" - " .
126 $lng->txt(
"exc_peer_review_give"));
127 $ret = $this->ctrl->forwardCommand($fs_gui);
131 $this->ass->updatePeerReviewTimestamp((
int) $_REQUEST[
"peer_id"]);
133 include_once(
"./Services/Rating/classes/class.ilRatingGUI.php");
135 $rating_gui->setObject(
138 (int) $_REQUEST[
"peer_id"],
141 $this->ctrl->forwardCommand($rating_gui);
142 $ilCtrl->redirect($this,
"editPeerReview");
145 case "ilexsubmissiontextgui":
146 if (!$this->submission->isTutor()) {
147 $ilTabs->clearTargets();
148 $ilTabs->setBackTarget(
150 $ilCtrl->getLinkTarget($this,
"editPeerReview")
152 $this->ctrl->setReturn($this,
"editPeerReview");
154 $ilTabs->clearTargets();
155 $ilTabs->setBackTarget(
157 $ilCtrl->getLinkTarget($this,
"showGivenPeerReview")
159 $this->ctrl->setReturn($this,
"showGivenPeerReview");
161 include_once
"Modules/Exercise/classes/class.ilExSubmissionTextGUI.php";
167 $this->{$cmd .
"Object"}();
174 $this->ctrl->returnToParent($this);
181 $lng = $DIC->language();
184 include_once(
"./Modules/Exercise/classes/class.ilExcAssMemberState.php");
194 if (
$state->hasSubmissionEndedForAllUsers() &&
195 $ass->getPeerReview()) {
196 $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI",
"ass_id", $a_submission->
getAssignment()->getId());
198 $nr_missing_fb = $a_submission->
getPeerReview()->getNumberOfMissingFeedbacksForReceived();
203 if (
$state->isPeerReviewAllowed()) {
205 if ($ass->getPeerReviewDeadline()) {
206 $dl_info =
" (" . sprintf(
207 $lng->txt(
"exc_peer_review_deadline_info_button"),
208 $state->getPeerReviewDeadlinePresentation()
213 $button->setPrimary($nr_missing_fb);
214 $button->setCaption(
$lng->txt(
"exc_peer_review_give") . $dl_info,
false);
215 $button->setUrl(
$ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"editPeerReview"));
216 $edit_pc = $button->render();
217 } elseif ($ass->getPeerReviewDeadline()) {
218 $edit_pc =
$lng->txt(
"exc_peer_review_deadline_reached");
222 if ((!$ass->getPeerReviewDeadline() ||
223 $ass->getPeerReviewDeadline() < time())) {
225 if ($ass->getPeerReviewDeadline() &&
228 $button->setCaption(
"exc_peer_review_given");
229 $button->setUrl(
$ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"showGivenPeerReview"));
230 $view_pc = $button->render() .
" ";
234 if (!$nr_missing_fb) {
236 $received = (bool)
sizeof($a_submission->
getPeerReview()->getPeerReviewsByPeerId($a_submission->
getUserId(),
true));
239 $button->setCaption(
"exc_peer_review_show");
240 $button->setUrl(
$ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExPeerReviewGUI"),
"showReceivedPeerReview"));
241 $view_pc .= $button->render();
245 $view_pc .=
$lng->txt(
"exc_peer_review_show_received_none");
250 $view_pc .=
$lng->txt(
"exc_peer_review_show_missing");
260 $sep = ($edit_pc !=
"" && $view_pc !=
"")
264 $a_info->
addProperty(
$lng->txt(
"exc_peer_review"), $edit_pc . $sep . $view_pc);
266 $ilCtrl->setParameterByClass(
"ilExPeerReviewGUI",
"ass_id",
"");
272 return ($this->submission->isOwner() &&
273 $this->ass->afterDeadlineStrict() &&
274 (!$this->ass->getPeerReviewDeadline() ||
275 $this->ass->getPeerReviewDeadline() > time()));
280 return ($this->submission->isTutor() ||
281 ($this->submission->isOwner() &&
282 $this->ass->afterDeadlineStrict() &&
283 (!$this->ass->getPeerReviewDeadline() ||
284 $this->ass->getPeerReviewDeadline() < time())));
296 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
297 if (!
sizeof($peer_items)) {
302 $tpl->setTitle($this->ass->getTitle() .
": " .
$lng->txt(
"exc_peer_review_given"));
304 include_once
"Services/InfoScreen/classes/class.ilInfoScreenGUI.php";
309 $tpl->setContent($info_widget->getHTML());
319 (!$this->submission->isTutor() &&
320 $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived())) {
324 $this->tabs_gui->clearTargets();
325 $this->tabs_gui->setBackTarget($this->lng->txt(
"back"), $this->ctrl->getLinkTarget($this,
"returnToParent"));
327 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByPeerId($this->submission->getUserId(), !$this->submission->isTutor());
328 if (!
sizeof($peer_items)) {
331 $ilCtrl->redirect($this,
"returnToParent");
334 $tpl->setTitle($this->ass->getTitle() .
": " .
$lng->txt(
"exc_peer_review_show"));
336 include_once
"Services/InfoScreen/classes/class.ilInfoScreenGUI.php";
341 $tpl->setContent($info_widget->getHTML());
348 include_once
"Services/User/classes/class.ilUserUtil.php";
350 if ($this->submission->isTutor()) {
351 $user_title = $a_by_peer
352 ?
$lng->txt(
"exc_peer_review_recipient")
353 :
$lng->txt(
"exc_peer_review_giver");
367 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"showReceivedPeerReview");
370 $file_info[
"last_submission"][
"txt"],
371 $file_info[
"last_submission"][
"value"] .
377 $sub_data =
'<a href="' . $file_info[
"files"][
"download_url"] .
'">' .
$lng->txt(
"download") .
'</a>';
382 foreach ($a_peer_items as $peer) {
384 $giver_id = $this->submission->getUserId();
385 $peer_id = $peer[
"peer_id"];
386 $id_title =
$lng->txt(
"exc_peer_review_recipient");
389 $giver_id = $peer[
"giver_id"];
390 $peer_id = $this->submission->getUserId();
391 $id_title =
$lng->txt(
"exc_peer_review_giver");
392 $user_id = $giver_id;
396 if ($this->submission->isTutor()) {
398 } elseif (!$this->ass->hasPeerReviewPersonalized()) {
399 $id_value = $peer[
"seq"];
403 $a_info_widget->
addSection($id_title .
": " . $id_value);
410 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"editPeerReviewItem");
413 $file_info[
"last_submission"][
"txt"],
414 $file_info[
"last_submission"][
"value"] .
420 $sub_data =
'<a href="' . $file_info[
"files"][
"download_url"] .
'">' .
$lng->txt(
"download") .
'</a>';
428 $values = $this->submission->getPeerReview()->getPeerReviewValues($giver_id, $peer_id);
430 foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
431 $crit_id = $item->getId()
435 $item->setPeerReviewContext(
441 $title = $item->getTitle();
453 foreach ($a_submission->
getFiles() as $file) {
455 return '<div class="warning">' .
$lng->txt(
"exc_late_submission") .
'</div>';
468 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
469 if (!
sizeof($peer_items)) {
474 $missing = $this->submission->getPeerReview()->getNumberOfMissingFeedbacksForReceived();
476 $dl = $this->ass->getPeerReviewDeadline();
477 if (!$dl || $dl < time()) {
478 ilUtil::sendInfo(sprintf($this->lng->txt(
"exc_peer_review_missing_info"), $missing));
481 $this->lng->txt(
"exc_peer_review_missing_info_deadline"),
488 include_once
"Modules/Exercise/classes/class.ilExAssignmentPeerReviewTableGUI.php";
493 $this->submission->getUserId(),
513 $tpl->setContent($a_form->getHTML());
518 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
519 foreach ($peer_items as $item) {
520 if ($item[
"peer_id"] == $a_peer_id) {
536 if (trim(
$text[
"atext"])) {
538 include_once
"Services/RTE/classes/class.ilRTE.php";
550 $peer_items = $this->submission->getPeerReview()->getPeerReviewsByGiver($this->submission->getUserId());
551 foreach ($peer_items as $item) {
552 if ($item[
"peer_id"] == $a_peer_id) {
558 $ilCtrl->saveParameter($this,
"peer_id");
560 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
562 $form->setFormAction(
$ilCtrl->getFormAction($this,
"updatePeerReview"));
564 $form->setTitle($this->ass->getTitle() .
": " .
$lng->txt(
"exc_peer_review_give"));
567 if (!$this->ass->hasPeerReviewPersonalized()) {
568 $id_title =
$lng->txt(
"id");
569 $id_value = $peer[
"seq"];
571 include_once
"Services/User/classes/class.ilUserUtil.php";
572 $id_title =
$lng->txt(
"exc_peer_review_recipient");
576 $id->setValue($id_value);
582 $file_info =
$submission->getDownloadedFilesInfoForTableGUIS($this,
"editPeerReviewItem");
585 $last_sub->setValue($file_info[
"last_submission"][
"value"] .
587 $form->addItem($last_sub);
591 $sub_data =
'<a href="' . $file_info[
"files"][
"download_url"] .
'">' .
$lng->txt(
"download") .
'</a>';
596 $form->addItem($sub);
601 $input->setTitle(
$lng->txt(
"exc_peer_review"));
604 $values = $this->submission->getPeerReview()->getPeerReviewValues($this->submission->getUserId(), $a_peer_id);
606 foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
607 $crit_id = $item->getId()
611 $item->setPeerReviewContext(
613 $this->submission->getUserId(),
617 $item->addToPeerReviewForm(
$values[$crit_id]);
620 $form->addCommandButton(
"updatePeerReview",
$lng->txt(
"save"));
621 $form->addCommandButton(
"editPeerReview",
$lng->txt(
"cancel"));
639 $peer_id = (int)
$_POST[
"peer_id"];
640 $crit_id =
$_POST[
"crit_id"];
643 include_once
"Modules/Exercise/classes/class.ilExcCriteria.php";
644 if (!is_numeric($crit_id)) {
649 $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
650 $html = $crit->updateFromAjax();
655 echo $tpl->getOnLoadCodeForAsynch();
669 $peer_id = $_REQUEST[
"peer_id"];
672 if (
$form->checkInput()) {
676 foreach ($this->ass->getPeerReviewCriteriaCatalogueItems() as $item) {
677 $item->setPeerReviewContext(
679 $this->submission->getUserId(),
683 $value = $item->importFromPeerReviewForm();
684 if ($value !== null) {
685 $crit_id = $item->getId()
690 if (!$item->validate($value)) {
696 $this->submission->getPeerReview()->updatePeerReview($peer_id,
$values);
700 ilUtil::sendSuccess($this->lng->txt(
"exc_peer_review_updated"),
true);
701 $ilCtrl->redirect($this,
"editPeerReview");
707 $form->setValuesByPost();
717 $this->submission->getUserIds(),
718 $this->submission->hasSubmitted(),
719 $this->submission->validatePeerReviews()
732 $parts = explode(
"__",
$_GET[
"fu"]);
733 $giver_id = $parts[0];
734 $peer_id = $parts[1];
735 $crit_id = $parts[2];
737 include_once
"Modules/Exercise/classes/class.ilExcCriteria.php";
738 if (!is_numeric($crit_id)) {
744 $crit->setPeerReviewContext($this->ass, $giver_id, $peer_id);
745 $file = $crit->getFileByHash();
750 $ilCtrl->redirect($this,
"returnToParent");
764 !$this->ass->getPeerReview()) {
768 include_once
"Modules/Exercise/classes/class.ilExAssignmentPeerReviewOverviewTableGUI.php";
771 "showPeerReviewOverview",
776 $panel_data =
$tbl->getPanelInfo();
777 if (is_array($panel_data) && count($panel_data) > 0) {
778 $ptpl =
new ilTemplate(
"tpl.exc_peer_review_overview_panel.html",
true,
true,
"Modules/Exercise");
779 foreach ($panel_data as $item) {
780 $ptpl->setCurrentBlock(
"user_bl");
781 foreach ($item[
"value"] as
$user) {
782 $ptpl->setVariable(
"USER", $user);
783 $ptpl->parseCurrentBlock();
786 $ptpl->setCurrentBlock(
"item_bl");
787 $ptpl->setVariable(
"TITLE", $item[
"title"]);
788 $ptpl->parseCurrentBlock();
791 include_once
"Services/UIComponent/Panel/classes/class.ilPanelGUI.php";
793 $panel->setHeading($this->lng->txt(
"exc_peer_review_overview_invalid_users"));
794 $panel->setBody($ptpl->get());
795 $panel = $panel->getHTML();
798 $tpl->setContent(
$tbl->getHTML() . $panel);
808 !$this->ass->getPeerReview()) {
812 $ilTabs->clearTargets();
814 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
816 $cgui->setFormAction(
$ilCtrl->getFormAction($this));
817 $cgui->setHeaderText(sprintf($this->lng->txt(
"exc_peer_review_reset_sure"), $this->ass->getTitle()));
818 $cgui->setCancel($this->lng->txt(
"cancel"),
"showPeerReviewOverview");
819 $cgui->setConfirm($this->lng->txt(
"delete"),
"resetPeerReview");
821 $tpl->setContent($cgui->getHTML());
829 !$this->ass->getPeerReview()) {
833 include_once
"Modules/Exercise/classes/class.ilExPeerReview.php";
835 $all_giver_ids = $peer_review->resetPeerReviews();
837 if (is_array($all_giver_ids)) {
840 if (
$exercise->isCompletionBySubmissionEnabled() &&
842 include_once
"Modules/Exercise/classes/class.ilExSubmission.php";
843 foreach ($all_giver_ids as $user_id) {
846 $pgui->handlePeerReviewChange();
851 ilUtil::sendSuccess($this->lng->txt(
"exc_peer_review_reset_done"),
true);
852 $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.
initPeerReviewItemForm($a_peer_id)
static getInstanceById($a_id)
if(!array_key_exists('StateId', $_REQUEST)) $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.
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
showPeerReviewOverviewObject()
showReceivedPeerReviewObject()
getLateSubmissionInfo(ilExSubmission $a_submission)
if(isset($_POST['submit'])) $form
special template class to simplify handling of ITX/PEAR
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.