ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ilExerciseManagementGUI Class Reference

@ilCtrl_Calls ilExerciseManagementGUI: ilRepositorySearchGUI @ilCtrl_Calls ilExerciseManagementGUI: ilExSubmissionTeamGUI, ilExSubmissionFileGUI @ilCtrl_Calls ilExerciseManagementGUI: ilExSubmissionTextGUI, ilExPeerReviewGUI @ilCtrl_Calls ilExerciseManagementGUI: ilParticipantsPerAssignmentTableGUI @ilCtrl_Calls ilExerciseManagementGUI: ilResourceCollectionGUI, ilRepoStandardUploadHandlerGUI @ilCtrl_Calls ilExerciseManagementGUI: ilExerciseSubmissionFeedbackGUI More...

+ Collaboration diagram for ilExerciseManagementGUI:

Public Member Functions

 __construct (InternalService $service, ?ilExAssignment $a_ass=null)
 Constructor. More...
 
 executeCommand ()
 
 addSubTabs (string $a_activate)
 
 waitingDownloadObject ()
 
 membersObject ()
 All participants and submission of one assignment. More...
 
 downloadSelectedObject ()
 
 downloadSubmissionsObject (?array $selected_participants=null)
 
 backToCurrentOverview ()
 
 membersApplyObject ()
 
 membersResetObject ()
 
 saveGradesObject ()
 
 editMark (int $user_id)
 
 saveMarkObject ()
 
 editRemark (int $user_id)
 
 saveRemarkObject ()
 
 compareTextAssignmentsObject ()
 TODO -> Deal with the redirection after update the grade via action button. More...
 
 getReportPanel (array $a_data)
 
 getEvaluationModal (array $a_data)
 
 getEvaluationModalForm (array $a_data)
 
 saveEvaluationFromModalObject ()
 
 showClipboardObject ()
 
 addUserFromAutoCompleteObject ()
 
 addMembersObject ($a_user_ids=array())
 
 selectAssignmentObject ()
 
 showParticipantObject ()
 Show Participant. More...
 
 showParticipantApplyObject ()
 
 showParticipantResetObject ()
 
 selectParticipantObject ()
 
 showGradesOverviewObject ()
 
 redirectFeedbackMailObject ()
 
 sendMembersObject ()
 
 confirmDeassignMembersObject ()
 
 deassignMembersObject ()
 
 saveStatusParticipantObject (?array $selected_ass_ids=null)
 Save assignment status (participant view) More...
 
 saveStatusAllObject (?array $a_selected=null, bool $a_redirect=true)
 
 saveStatusSelectedObject ()
 
 exportExcelObject ()
 
 createTeamsObject ()
 
 dissolveTeamsObject ()
 
 adoptTeamsFromGroupObject (?ilPropertyFormGUI $a_form=null)
 
 createTeamsFromGroupsObject ()
 
 getMultiFeedbackForm (int $a_ass_id)
 
 handleMultiFeedbackUploadResult (FileUpload $upload, UploadResult $result)
 
 showMultiFeedbackObject (?FormAdapterGUI $form=null)
 
 downloadMultiFeedbackZipObject ()
 Download multi-feedback structrue file. More...
 
 uploadMultiFeedbackObject ()
 Upload multi feedback file. More...
 
 showMultiFeedbackConfirmationTableObject ()
 Show multi feedback confirmation table. More...
 
 saveAllMultiFeedbackObject ()
 Save all multi feedback files. More...
 
 cancelMultiFeedbackObject ()
 Cancel Multi Feedback. More...
 
 saveMultiFeedback (array $ids)
 Save multi feedback. More...
 
 initFilter ()
 
 openSubmissionPrintViewObject ()
 Open HTML view for portfolio submissions. More...
 
 openSubmissionViewObject (bool $print_version=false)
 Open HTML view for portfolio submissions. More...
 
 collectFeedbackDataFromPeer (int $user_id, string $ts, string $text)
 
 sendGradingNotificationObject ()
 

Data Fields

const VIEW_ASSIGNMENT = 1
 
const VIEW_PARTICIPANT = 2
 
const VIEW_GRADES = 3
 
const FEEDBACK_ONLY_SUBMISSION = "submission_only"
 
const FEEDBACK_FULL_SUBMISSION = "submission_feedback"
 
const GRADE_NOT_GRADED = "notgraded"
 
const GRADE_PASSED = "passed"
 
const GRADE_FAILED = "failed"
 

Protected Member Functions

 getViewBack ()
 
 initSubmission ()
 
 getMarkForm (int $user_id)
 
 getRemarkForm (int $user_id)
 
 sendGradesModalRedirect ()
 
 getMultiActionUserIds (bool $a_keep_teams=false)
 
 saveStatus (array $a_data, bool $a_redirect=true)
 
 initGroupForm ()
 
 initIndividualDeadlineModal ()
 
 parseIndividualDeadlineData (array $a_data)
 
 handleIndividualDeadlineCallsObject ()
 
 initIndividualDeadlineForm (array $a_ass_map, array $ids)
 
 setIndividualDeadlineObject ()
 
 getWebFilePathFromExternalFilePath (string $external_file_path)
 Get the object specific file path from an external full file path. More...
 
 setBackToMembers ()
 
 setFailedObject ()
 
 setPassedObject ()
 
 setSingleStatus ($ass_id, $part_id, $status)
 

Protected Attributes

ZipAdapter $zip
 
ilGlobalTemplateInterface $tpl
 
ILIAS Exercise InternalDomainService $domain
 
ILIAS Exercise Notification NotificationManager $notification
 
TutorFeedbackFileManager $tutor_feedback_file
 
InternalGUIService $gui
 
ILIAS HTTP Services $http
 
ilCtrl $ctrl
 
ilTabsGUI $tabs_gui
 
ilLanguage $lng
 
ilAccessHandler $access
 
Factory $ui_factory
 
Renderer $ui_renderer
 
array $filter = []
 
ilToolbarGUI $toolbar
 
ilObjExercise $exercise
 
ilExAssignment $assignment = null
 
TaskFactory $task_factory
 
ilLogger $log
 
ilObjUser $user
 
InternalService $service
 
ilDBInterface $db = null
 
int $ass_id = 0
 
int $requested_member_id = 0
 
int $requested_part_id = 0
 
int $requested_ass_id = 0
 
string $requested_idl_id
 
bool $done = false
 
array $requested_learning_comments
 
string $requested_comment
 
string $requested_user_login
 
array $selected_participants
 
array $listed_participants
 
array $selected_ass_ids
 
array $listed_ass_ids
 
array $requested_marks
 
array $requested_status
 
array $requested_tutor_notices
 
array $requested_group_members
 
string $requested_filter_status
 
string $requested_filter_feedback
 
GUIRequest $request
 
ilExerciseSubmissionFeedbackGUI $feedback_gui
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilExerciseManagementGUI::__construct ( InternalService  $service,
?ilExAssignment  $a_ass = null 
)

Constructor.

Parameters
InternalService$service
ilExAssignment | null$a_ass

Definition at line 104 of file class.ilExerciseManagementGUI.php.

105 {
106 global $DIC;
107
108 $this->service = $service;
109 $this->gui = $gui = $service->gui();
110 $this->domain = $domain = $service->domain();
111
112 $this->user = $domain->user();
113 $this->log = $domain->logger()->exc();
114 $this->access = $domain->access();
115 $this->lng = $domain->lng();
116
117 $this->toolbar = $gui->toolbar();
118 $this->ui_factory = $gui->ui()->factory();
119 $this->ui_renderer = $gui->ui()->renderer();
120 $this->ctrl = $gui->ctrl();
121 $this->tabs_gui = $gui->tabs();
122 $this->tpl = $gui->ui()->mainTemplate();
123 $this->http = $gui->http();
124
125 $this->task_factory = $domain->backgroundTasks()->taskFactory();
126 $this->request = $gui->request();
128
129 $this->exercise = $request->getExercise();
130 if ($a_ass !== null) {
131 $this->assignment = $a_ass;
132 $this->ass_id = $this->assignment->getId();
133 }
134 $this->requested_member_id = $request->getMemberId();
135 $this->requested_part_id = $request->getParticipantId();
136 $this->requested_ass_id = $request->getAssId();
137 $this->requested_idl_id = $request->getIdlId();
138 $this->done = $request->getDone();
139 $this->requested_learning_comments = $request->getLearningComments();
140 $this->requested_comment = $request->getComment();
141 $this->requested_user_login = $request->getUserLogin();
142 $this->selected_participants = $request->getSelectedParticipants();
143 $this->listed_participants = $request->getListedParticipants();
144 $this->selected_ass_ids = $request->getSelectedAssignments();
145 $this->listed_ass_ids = $request->getListedAssignments();
146 $this->requested_marks = $request->getMarks();
147 $this->requested_status = $request->getStatus();
148 $this->requested_tutor_notices = $request->getTutorNotices();
149 $this->requested_group_members = $request->getGroupMembers();
150 $this->requested_filter_status = $request->getFilterStatus();
151 $this->requested_filter_feedback = $request->getFilterFeedback();
152
153 $this->notification = $domain->notification($request->getRefId());
154
155 $this->feedback_gui = $DIC->exercise()->internal()->gui()->getSubmissionFeedbackGUI(
156 $this->exercise,
157 $this->notification
158 );
159
160 $this->ctrl->saveParameter($this, array("vw", "member_id"));
161 if ($this->ass_id > 0) {
162 $this->tutor_feedback_file = $domain->assignment()->tutorFeedbackFile($this->ass_id);
163 }
164 $this->zip = $domain->resources()->zip();
165 $this->ctrl->saveParameter($this, array("part_id"));
166 }
getTutorNotices()
key might be ass_ids or user_ids!
getMarks()
key might be ass_ids or user_ids!
getStatus()
key might be ass_ids or user_ids!
request(?array $query_params=null, ?array $post_data=null)
Get request wrapper.
ILIAS Exercise InternalDomainService $domain
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:26

References $DIC, $domain, $gui, $request, $service, ILIAS\Repository\access(), ILIAS\Repository\ctrl(), ILIAS\Exercise\InternalService\domain(), ILIAS\Exercise\GUIRequest\getAssId(), ILIAS\Exercise\GUIRequest\getComment(), ILIAS\Exercise\GUIRequest\getDone(), ILIAS\Exercise\GUIRequest\getExercise(), ILIAS\Exercise\GUIRequest\getFilterFeedback(), ILIAS\Exercise\GUIRequest\getFilterStatus(), ILIAS\Exercise\GUIRequest\getGroupMembers(), ILIAS\Exercise\GUIRequest\getIdlId(), ILIAS\Exercise\GUIRequest\getLearningComments(), ILIAS\Exercise\GUIRequest\getListedAssignments(), ILIAS\Exercise\GUIRequest\getListedParticipants(), ILIAS\Exercise\GUIRequest\getMarks(), ILIAS\Exercise\GUIRequest\getMemberId(), ILIAS\Exercise\GUIRequest\getParticipantId(), ILIAS\Exercise\GUIRequest\getRefId(), ILIAS\Exercise\GUIRequest\getSelectedAssignments(), ILIAS\Exercise\GUIRequest\getSelectedParticipants(), ILIAS\Exercise\GUIRequest\getStatus(), ILIAS\Exercise\GUIRequest\getTutorNotices(), ILIAS\Exercise\GUIRequest\getUserLogin(), ILIAS\Exercise\InternalService\gui(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\UI\examples\Symbol\Glyph\Notification\notification(), ILIAS\Exercise\InternalGUIService\request(), ILIAS\Repository\toolbar(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

Member Function Documentation

◆ addMembersObject()

ilExerciseManagementGUI::addMembersObject (   $a_user_ids = array())

Definition at line 1044 of file class.ilExerciseManagementGUI.php.

1044 : void
1045 {
1046 if (!count($a_user_ids)) {
1047 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("no_checkbox"), true);
1048 } else {
1049 if (!$this->exercise->members_obj->assignMembers($a_user_ids)) {
1050 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("exc_members_already_assigned"), true);
1051 } else {
1052 $this->tpl->setOnScreenMessage('success', $this->lng->txt("exc_members_assigned"), true);
1053 }
1054 }
1055 $this->ctrl->redirect($this, "members");
1056 }

References ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ addSubTabs()

ilExerciseManagementGUI::addSubTabs ( string  $a_activate)

Definition at line 310 of file class.ilExerciseManagementGUI.php.

310 : void
311 {
312 $ilTabs = $this->tabs_gui;
314 $ilCtrl = $this->ctrl;
315
316 $ass_id = $this->assignment !== null ? $this->assignment->getId() : 0;
317 $part_id = $this->requested_part_id;
318
319 $ilCtrl->setParameter($this, "vw", "");
320 $ilCtrl->setParameter($this, "member_id", "0");
321 $ilCtrl->setParameter($this, "ass_id", "0");
322 $ilCtrl->setParameter($this, "part_id", "0");
323
324 $ilTabs->addSubTab(
325 "assignment",
326 $lng->txt("exc_assignment_view"),
327 $ilCtrl->getLinkTarget($this, "members")
328 );
329 $ilTabs->addSubTab(
330 "participant",
331 $lng->txt("exc_participant_view"),
332 $ilCtrl->getLinkTarget($this, "showParticipant")
333 );
334 $ilTabs->addSubTab(
335 "grades",
336 $lng->txt("exc_grades_overview"),
337 $ilCtrl->getLinkTarget($this, "showGradesOverview")
338 );
339 $ilTabs->activateSubTab($a_activate);
340
341 $ilCtrl->setParameter($this, "ass_id", $ass_id);
342 $ilCtrl->setParameter($this, "part_id", $part_id);
343 }
txt(string|LanguageIdentifier $a_topic, ?int $n=null)
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...

References $ass_id, $ctrl, $lng, $requested_part_id, $tabs_gui, and ilLanguage\txt().

Referenced by executeCommand(), and membersObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addUserFromAutoCompleteObject()

ilExerciseManagementGUI::addUserFromAutoCompleteObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1018 of file class.ilExerciseManagementGUI.php.

1018 : void
1019 {
1020 if ($this->requested_user_login == "") {
1021 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('msg_no_search_string'));
1022 $this->membersObject();
1023 return;
1024 }
1025 $users = explode(',', $this->requested_user_login);
1026
1027 $user_ids = array();
1028 foreach ($users as $user) {
1030
1031 if (!$user_id) {
1032 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('user_not_known'));
1033 $this->membersObject();
1034 return;
1035 }
1036
1037 $user_ids[] = $user_id;
1038 }
1039
1040 $this->addMembersObject($user_ids);
1041 }
membersObject()
All participants and submission of one assignment.
static _lookupId(string|array $a_user_str)

References $user_id, ilObjUser\_lookupId(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ adoptTeamsFromGroupObject()

ilExerciseManagementGUI::adoptTeamsFromGroupObject ( ?ilPropertyFormGUI  $a_form = null)

Definition at line 1654 of file class.ilExerciseManagementGUI.php.

1656 : void {
1657 $ilCtrl = $this->ctrl;
1658 $ilTabs = $this->tabs_gui;
1659 $lng = $this->lng;
1660 $tpl = $this->tpl;
1661
1662 $ilTabs->clearTargets();
1663 $ilTabs->setBackTarget(
1664 $lng->txt("back"),
1665 $ilCtrl->getLinkTarget($this, $this->getViewBack())
1666 );
1667
1668 if ($a_form === null) {
1669 $a_form = $this->initGroupForm();
1670 }
1671 $tpl->setContent($a_form->getHTML());
1672 }
setContent(string $a_html)
Sets content for standard template.

◆ backToCurrentOverview()

ilExerciseManagementGUI::backToCurrentOverview ( )

Definition at line 518 of file class.ilExerciseManagementGUI.php.

518 : void
519 {
520 if ($this->assignment !== null) {
521 $this->ctrl->redirect($this, "members");
522 } else {
523 $this->ctrl->redirect($this, "showParticipant");
524 }
525 }

References ILIAS\Repository\ctrl().

Referenced by downloadSelectedObject(), and downloadSubmissionsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cancelMultiFeedbackObject()

ilExerciseManagementGUI::cancelMultiFeedbackObject ( )

Cancel Multi Feedback.

Definition at line 1946 of file class.ilExerciseManagementGUI.php.

1946 : void
1947 {
1948 $this->ctrl->redirect($this, "members");
1949 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ collectFeedbackDataFromPeer()

ilExerciseManagementGUI::collectFeedbackDataFromPeer ( int  $user_id,
string  $ts,
string  $text 
)

Definition at line 2372 of file class.ilExerciseManagementGUI.php.

2376 : array {
2377 $user = new ilObjUser($user_id);
2378 $uname = $user->getFirstname() . " " . $user->getLastname();
2379
2380 $data = array(
2381 "uid" => $user_id,
2382 "uname" => $uname,
2383 "udate" => $ts,
2384 "utext" => $this->gui->getUIUtil()->formatTextInput($text) // mob id to mob src
2385 );
2386
2387 //get data peer and assign it
2388 $peer_review = new ilExPeerReview($this->assignment);
2389 $data["peer"] = array();
2390 foreach ($peer_review->getPeerReviewsByPeerId($user_id) as $value) {
2391 $data["peer"][] = $value['giver_id'];
2392 }
2393
2394 $data["fb_received"] = count($data["peer"]);
2395 $data["fb_given"] = $peer_review->countGivenFeedback(true, $user_id);
2396
2397 return $data;
2398 }
Exercise peer review.
User class.
$data
Definition: storeScorm.php:45
$text
Definition: xapiexit.php:21

Referenced by compareTextAssignmentsObject().

+ Here is the caller graph for this function:

◆ compareTextAssignmentsObject()

ilExerciseManagementGUI::compareTextAssignmentsObject ( )

TODO -> Deal with the redirection after update the grade via action button.

Extract the data collection to another method. List and compare use this. DRY

Exceptions
ilDateTimeException|ilExcUnknownAssignmentTypeException

Definition at line 735 of file class.ilExerciseManagementGUI.php.

735 : void
736 {
737 $this->setBackToMembers();
738 $subm = $this->domain->submission($this->assignment->getId());
739
740 $group_panels_tpl = new ilTemplate("tpl.exc_group_report_panels.html", true, true, "components/ILIAS/Exercise");
741 $group_panels_tpl->setVariable('TITLE', $this->lng->txt("exc_compare_selected_submissions"));
742
743 $report_html = "";
744 //participant ids selected via checkboxes
745 $participants = array_keys($this->getMultiActionUserIds());
746
747 foreach ($participants as $participant_id) {
748 $subs = $subm->getSubmissionsOfUser($participant_id);
749 $ts = "";
750 $text = "";
751 if ($s = $subs->current()) {
752 $ts = $s->getTimestamp();
753 $text = $s->getText();
754 }
755
756 $feedback_data = $this->collectFeedbackDataFromPeer(
757 $participant_id,
758 $ts,
759 $text
760 );
761
762 $submission_data = $this->assignment->getExerciseMemberAssignmentData((int) $participant_id, $this->filter["status"] ?? "");
763
764 if (is_array($submission_data)) {
765 $data = array_merge($feedback_data, $submission_data);
766 $report_html .= $this->getReportPanel($data);
767 }
768 }
769
770 $group_panels_tpl->setVariable('CONTENT', $report_html);
771 $this->tpl->setContent($group_panels_tpl->get());
772 }
collectFeedbackDataFromPeer(int $user_id, string $ts, string $text)
getMultiActionUserIds(bool $a_keep_teams=false)
special template class to simplify handling of ITX/PEAR
filter(string $filter_id, array $class_path, string $cmd, bool $activated=true, bool $expanded=true)

References $data, $text, collectFeedbackDataFromPeer(), ILIAS\Repository\filter(), getMultiActionUserIds(), getReportPanel(), ILIAS\Repository\lng(), and setBackToMembers().

+ Here is the call graph for this function:

◆ confirmDeassignMembersObject()

ilExerciseManagementGUI::confirmDeassignMembersObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1377 of file class.ilExerciseManagementGUI.php.

1377 : void
1378 {
1379 $ilCtrl = $this->ctrl;
1380 $tpl = $this->tpl;
1381 $lng = $this->lng;
1382
1383 $members = $this->getMultiActionUserIds();
1384
1385 $cgui = new ilConfirmationGUI();
1386 $cgui->setFormAction($ilCtrl->getFormAction($this));
1387 $cgui->setHeaderText($lng->txt("exc_msg_sure_to_deassign_participant"));
1388 $cgui->setCancel($lng->txt("cancel"), "members");
1389 $cgui->setConfirm($lng->txt("remove"), "deassignMembers");
1390 foreach ($members as $k => $m) {
1391 $cgui->addItem(
1392 "member_ids[]",
1393 $k,
1394 ilUserUtil::getNamePresentation((int) $k, false, false, "", true)
1395 );
1396 }
1397
1398 $tpl->setContent($cgui->getHTML());
1399 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getNamePresentation( $a_user_id, bool $a_user_image=false, bool $a_profile_link=false, string $a_profile_back_link='', bool $a_force_first_lastname=false, bool $a_omit_login=false, bool $a_sortable=true, bool $a_return_data_array=false, $a_ctrl_path=null)
Default behaviour is:

References $lng, ILIAS\News\Common\Table\$tpl, ilUserUtil\getNamePresentation(), and ILIAS\UICore\GlobalTemplate\setContent().

+ Here is the call graph for this function:

◆ createTeamsFromGroupsObject()

ilExerciseManagementGUI::createTeamsFromGroupsObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1718 of file class.ilExerciseManagementGUI.php.

1718 : void
1719 {
1720 $lng = $this->lng;
1721
1722 $req_members = $this->requested_group_members;
1723
1724 $form = $this->initGroupForm();
1725 if ($form->checkInput()) {
1726 $map = ilExAssignmentTeam::getGroupMembersMap($this->exercise->getRefId());
1727 $all_members = $teams = array();
1728 $valid = true;
1729 foreach (array_keys($map) as $grp_id) {
1730 if (isset($req_members[$grp_id]) && is_array($req_members[$grp_id])) {
1731 $members = $req_members[$grp_id];
1732 $teams[] = $members;
1733 $invalid_team_members = array();
1734
1735 foreach ($members as $user_id) {
1736 if (!array_key_exists($user_id, $all_members)) {
1737 $all_members[$user_id] = $grp_id;
1738 } else {
1739 // user is selected in multiple groups
1740 $invalid_team_members[] = $user_id;
1741 }
1742 }
1743
1744 if ($invalid_team_members !== []) {
1745 $valid = false;
1746
1747 $alert = array();
1748 foreach ($invalid_team_members as $user_id) {
1749 $user_name = ilUserUtil::getNamePresentation($user_id, false, false, "", true);
1750 $grp_title = $map[$all_members[$user_id]]["title"];
1751 $alert[] = sprintf($lng->txt("exc_adopt_group_teams_conflict"), $user_name, $grp_title);
1752 }
1753 $input = $form->getItemByPostVar("grpt[" . $grp_id . "]");
1754 $input->setAlert(implode("<br/>", $alert));
1755 }
1756 }
1757 }
1758 if ($valid) {
1759 if ($teams !== []) {
1760 $existing_users = array_keys(ilExAssignmentTeam::getAssignmentTeamMap($this->assignment->getId()));
1761
1762 // create teams from group selections
1763 $sum = array("added" => 0, "blocked" => 0);
1764 foreach ($teams as $members) {
1765 foreach ($members as $user_id) {
1766 if (!$this->exercise->members_obj->isAssigned($user_id)) {
1767 $this->exercise->members_obj->assignMember($user_id);
1768 }
1769
1770 if (!in_array($user_id, $existing_users)) {
1771 $sum["added"]++;
1772 } else {
1773 $sum["blocked"]++;
1774 }
1775 }
1776
1777 $first = array_shift($members);
1778 $team = ilExAssignmentTeam::getInstanceByUserId($this->assignment->getId(), $first, true);
1779
1780 // getTeamId() does NOT send notification
1781 // $team->sendNotification($this->exercise->getRefId(), $first, "add");
1782
1783 foreach ($members as $user_id) {
1784 $team->addTeamMember($user_id);
1785 }
1786 }
1787
1788 $mess = array();
1789 if ($sum["added"] !== 0) {
1790 $mess[] = sprintf($lng->txt("exc_adopt_group_teams_added"), $sum["added"]);
1791 }
1792 if ($sum["blocked"] !== 0) {
1793 $mess[] = sprintf($lng->txt("exc_adopt_group_teams_blocked"), $sum["blocked"]);
1794 }
1795 if ($sum["added"] !== 0) {
1796 $this->tpl->setOnScreenMessage('success', implode(" ", $mess), true);
1797 } else {
1798 $this->tpl->setOnScreenMessage('failure', implode(" ", $mess), true);
1799 }
1800 }
1801 $this->ctrl->redirect($this, "members");
1802 } else {
1803 $this->tpl->setOnScreenMessage('failure', $lng->txt("form_input_not_valid"));
1804 }
1805 }
1806
1807 $form->setValuesByPost();
1808 $this->adoptTeamsFromGroupObject($form);
1809 }
static getAssignmentTeamMap(int $a_ass_id)
static getInstanceByUserId(int $a_assignment_id, int $a_user_id, bool $a_create_on_demand=false)
static getGroupMembersMap(int $a_exc_ref_id)
adoptTeamsFromGroupObject(?ilPropertyFormGUI $a_form=null)

References $lng, $user_id, ILIAS\Repository\ctrl(), ilExAssignmentTeam\getAssignmentTeamMap(), ilExAssignmentTeam\getGroupMembersMap(), ilExAssignmentTeam\getInstanceByUserId(), and ilUserUtil\getNamePresentation().

+ Here is the call graph for this function:

◆ createTeamsObject()

ilExerciseManagementGUI::createTeamsObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1574 of file class.ilExerciseManagementGUI.php.

1574 : void
1575 {
1576 $ilCtrl = $this->ctrl;
1577
1578 $members = $this->getMultiActionUserIds(true);
1579
1580 $new_members = array();
1581
1582 foreach ($members as $group) {
1583 if (is_array($group)) {
1584 $new_members = array_merge($new_members, $group);
1585
1586 $first_user = $group;
1587 $first_user = array_shift($first_user);
1588 $team = ilExAssignmentTeam::getInstanceByUserId($this->assignment->getId(), $first_user);
1589 foreach ($group as $user_id) {
1590 $team->removeTeamMember($user_id);
1591 }
1592 } else {
1593 $new_members[] = $group;
1594 }
1595 }
1596
1597 if ($new_members !== []) {
1598 // see ilExSubmissionTeamGUI::addTeamMemberActionObject()
1599
1600 $first_user = array_shift($new_members);
1601 $team = ilExAssignmentTeam::getInstanceByUserId($this->assignment->getId(), $first_user, true);
1602 foreach ($new_members as $user_id) {
1603 $team->addTeamMember($user_id);
1604 }
1605
1606 // re-evaluate complete team, as some members might have had submitted
1607 $submission = new ilExSubmission($this->assignment, $first_user);
1608 $this->exercise->processExerciseStatus(
1609 $this->assignment,
1610 $team->getMembers(),
1611 $submission->hasSubmitted(),
1612 $submission->validatePeerReviews()
1613 );
1614 }
1615
1616 $this->tpl->setOnScreenMessage('success', $this->lng->txt("msg_obj_modified"), true);
1617 $ilCtrl->redirect($this, "members");
1618 }
Exercise submission //TODO: This class has many static methods related to delivered "files".

References $user_id, ilExAssignmentTeam\getInstanceByUserId(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ deassignMembersObject()

ilExerciseManagementGUI::deassignMembersObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1406 of file class.ilExerciseManagementGUI.php.

1406 : void
1407 {
1408 $ilCtrl = $this->ctrl;
1409 $lng = $this->lng;
1410
1411 $member_ids = $this->request->getMemberIds();
1412
1413 foreach ($member_ids as $usr_id) {
1414 $this->exercise->members_obj->deassignMember((int) $usr_id);
1415 }
1416 $this->tpl->setOnScreenMessage('success', $lng->txt("exc_msg_participants_removed"), true);
1417 $ilCtrl->redirect($this, "members");
1418 }

References $lng.

◆ dissolveTeamsObject()

ilExerciseManagementGUI::dissolveTeamsObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1623 of file class.ilExerciseManagementGUI.php.

1623 : void
1624 {
1625 $ilCtrl = $this->ctrl;
1626
1627 $members = $this->getMultiActionUserIds(true);
1628
1629 foreach ($members as $group) {
1630 // if single member - nothing to do
1631 if (is_array($group)) {
1632 // see ilExSubmissionTeamGUI::removeTeamMemberObject()
1633
1634 $first_user = $group;
1635 $first_user = array_shift($first_user);
1636 $team = ilExAssignmentTeam::getInstanceByUserId($this->assignment->getId(), $first_user);
1637 foreach ($group as $user_id) {
1638 $team->removeTeamMember($user_id);
1639 }
1640
1641 // reset ex team members, as any submission is not valid without team
1642 $this->exercise->processExerciseStatus(
1643 $this->assignment,
1644 $group,
1645 false
1646 );
1647 }
1648 }
1649
1650 $this->tpl->setOnScreenMessage('success', $this->lng->txt("msg_obj_modified"), true);
1651 $ilCtrl->redirect($this, "members");
1652 }

References $user_id, ilExAssignmentTeam\getInstanceByUserId(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ downloadMultiFeedbackZipObject()

ilExerciseManagementGUI::downloadMultiFeedbackZipObject ( )

Download multi-feedback structrue file.

Definition at line 1879 of file class.ilExerciseManagementGUI.php.

1879 : void
1880 {
1881 $st_file = $this->domain->assignment()->tutorFeedbackZip()->getMultiFeedbackStructureFile(
1882 $this->assignment,
1883 $this->exercise
1884 );
1885 $this->gui->httpUtil()->deliverString(
1886 $st_file->content,
1887 $st_file->filename,
1888 "application/zip"
1889 );
1890 }

◆ downloadSelectedObject()

ilExerciseManagementGUI::downloadSelectedObject ( )

Definition at line 490 of file class.ilExerciseManagementGUI.php.

490 : void
491 {
492 if (count($this->selected_participants) > 0) {
493 $this->downloadSubmissionsObject($this->selected_participants);
494 } else {
495 $this->backToCurrentOverview();
496 }
497 }
downloadSubmissionsObject(?array $selected_participants=null)

References backToCurrentOverview(), and downloadSubmissionsObject().

+ Here is the call graph for this function:

◆ downloadSubmissionsObject()

ilExerciseManagementGUI::downloadSubmissionsObject ( ?array  $selected_participants = null)

Definition at line 498 of file class.ilExerciseManagementGUI.php.

498 : void
499 {
500 $participant_id = $this->requested_part_id;
501
502 $download_task = new ilDownloadSubmissionsBackgroundTask(
503 (int) $GLOBALS['DIC']->user()->getId(),
504 $this->exercise->getRefId(),
505 $this->exercise->getId(),
506 $this->ass_id,
507 $participant_id,
509 );
510
511 if ($download_task->run()) {
512 $this->tpl->setOnScreenMessage('success', $this->lng->txt('exc_down_files_started_bg'), true);
513 }
514
515 $this->backToCurrentOverview();
516 }
Download submissions and feedback for exercises.
$GLOBALS["DIC"]
Definition: wac.php:66

References $GLOBALS, $requested_part_id, $selected_participants, backToCurrentOverview(), ILIAS\Survey\Mode\getId(), ILIAS\Repository\lng(), and ILIAS\Repository\user().

Referenced by downloadSelectedObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ editMark()

ilExerciseManagementGUI::editMark ( int  $user_id)

Definition at line 583 of file class.ilExerciseManagementGUI.php.

583 : void
584 {
585 $this->ctrl->setParameter($this, "part_id", $user_id);
586 $this->gui
587 ->modal($this->lng->txt("exc_mark"))
588 ->form($this->getMarkForm($user_id))
589 ->send();
590 }

References $user_id, ILIAS\Repository\ctrl(), getMarkForm(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ editRemark()

ilExerciseManagementGUI::editRemark ( int  $user_id)

Definition at line 625 of file class.ilExerciseManagementGUI.php.

625 : void
626 {
627 $this->ctrl->setParameter($this, "part_id", $user_id);
628 $this->gui
629 ->modal($this->lng->txt("trac_comment"))
630 ->form($this->getRemarkForm($user_id))
631 ->send();
632 }

References $user_id, ILIAS\Repository\ctrl(), getRemarkForm(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ executeCommand()

ilExerciseManagementGUI::executeCommand ( )
Exceptions
ilCtrlException
ilExcUnknownAssignmentTypeException

Definition at line 172 of file class.ilExerciseManagementGUI.php.

172 : void
173 {
174 $ilCtrl = $this->ctrl;
176 $ilTabs = $this->tabs_gui;
177
178 $class = $ilCtrl->getNextClass($this);
179 //$cmd = $ilCtrl->getCmd("listPublicSubmissions");
180
181 switch ($class) {
182 // feedback files IRSS
183 case strtolower(ilResourceCollectionGUI::class):
184 $ilTabs->clearTargets();
185 $ilTabs->setBackTarget(
186 $lng->txt("back"),
187 $ilCtrl->getLinkTarget($this, $this->getViewBack())
188 );
189 $this->domain->assignment()->tutorFeedbackFile($this->ass_id)->addObserver();
190 $this->tpl->setOnScreenMessage('info', $lng->txt("exc_fb_tutor_info"));
191 $gui = $this->gui->assignment()->getTutorFeedbackFileResourceCollectionGUI(
192 $this->exercise->getRefId(),
193 $this->assignment->getId(),
194 $this->requested_member_id
195 );
196 $this->ctrl->forwardCommand($gui);
197 break;
198
199 case 'ilrepositorysearchgui':
200 $rep_search = new ilRepositorySearchGUI();
201 $ref_id = $this->exercise->getRefId();
202 $rep_search->addUserAccessFilterCallable(function ($a_user_ids) use ($ref_id) {
203 return $GLOBALS['DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
204 'edit_submissions_grades',
205 'edit_submissions_grades',
206 $ref_id,
207 $a_user_ids
208 );
209 });
210 $rep_search->setTitle($this->lng->txt("exc_add_participant"));
211 $rep_search->setCallback($this, 'addMembersObject');
212
213 // Set tabs
214 $this->addSubTabs("assignment");
215 $this->ctrl->setReturn($this, 'members');
216
217 $this->ctrl->forwardCommand($rep_search);
218 break;
219
220 case strtolower(ilRepoStandardUploadHandlerGUI::class):
221 $form = $this->getMultiFeedbackForm($this->assignment->getId());
222 $gui = $form->getRepoStandardUploadHandlerGUI("mfzip");
223 $this->ctrl->forwardCommand($gui);
224 break;
225
226 case "ilexsubmissionteamgui":
227 $gui = new ilExSubmissionTeamGUI($this->exercise, $this->initSubmission());
228 $ilCtrl->forwardCommand($gui);
229 break;
230
231 case "ilexsubmissionfilegui":
232 $gui = new ilExSubmissionFileGUI($this->exercise, $this->initSubmission());
233 $ilCtrl->forwardCommand($gui);
234 break;
235
236 case "ilexsubmissiontextgui":
237 $ilCtrl->saveParameter($this, array("part_id"));
238 $gui = new ilExSubmissionTextGUI($this->exercise, $this->initSubmission());
239 $ilCtrl->forwardCommand($gui);
240 break;
241
242 case "ilexpeerreviewgui":
243 $gui = new ilExPeerReviewGUI($this->assignment, $this->initSubmission());
244 $ilCtrl->forwardCommand($gui);
245 break;
246
247 case "ilparticipantsperassignmenttablegui":
249 $this,
250 "members",
251 $this->exercise,
252 $this->assignment->getId(),
253 $this->feedback_gui
254 );
255 $this->ctrl->forwardCommand($table);
256 break;
257
258 case "ilexercisesubmissionfeedbackgui":
259 $this->ctrl->forwardCommand($this->feedback_gui);
260 break;
261
262 default:
263 $cmd = $ilCtrl->getCmd();
264 switch ($cmd) {
265 case 'downloadSubmissions':
266 $cmd = $ilCtrl->getCmd("downloadSubmissions");
267 break;
268 default:
269 $cmd = $ilCtrl->getCmd("listPublicSubmissions");
270 break;
271 }
272 $this->{$cmd . "Object"}();
273 break;
274 }
275 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References $ctrl, $GLOBALS, $gui, $lng, $tabs_gui, addSubTabs(), ILIAS\Exercise\InternalGUIService\assignment(), ILIAS\Repository\ctrl(), getMultiFeedbackForm(), initSubmission(), ILIAS\Repository\lng(), and ilLanguage\txt().

+ Here is the call graph for this function:

◆ exportExcelObject()

ilExerciseManagementGUI::exportExcelObject ( )

Definition at line 1560 of file class.ilExerciseManagementGUI.php.

1560 : void
1561 {
1562 $this->exercise->exportGradesExcel();
1563 exit;
1564 }
exit
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References exit.

◆ getEvaluationModal()

ilExerciseManagementGUI::getEvaluationModal ( array  $a_data)

Definition at line 894 of file class.ilExerciseManagementGUI.php.

896 : RoundTrip {
897 $more_id = $a_data['uid'];
898 $this->tpl->addJavaScript("assets/js/exc-text-more.js");
899 $modal_tpl = new ilTemplate("tpl.exc_report_evaluation_modal.html", true, true, "components/ILIAS/Exercise");
900 $modal_tpl->setVariable("USER_NAME", $a_data['uname']);
901
902 $form = $this->getEvaluationModalForm($a_data);
903 //TODO: CHECK ilias string utils. ilUtil shortenText with net blank.
904 if ($this->exercise->hasTutorFeedbackText()) {
905 $max_chars = 500;
906 $more_button = $this->gui->ui()->factory()->button()->standard($this->lng->txt("exc_show_more"), "#");
907 $text = "<div data-exc-show-more='$more_id'><div>";
908 $text .= $a_data["utext"];
909 $text .= "</div><div>";
910 $text .= $this->gui->ui()->renderer()->render($more_button);
911 $text .= "</div></div>";
912 $modal_tpl->setVariable("USER_TEXT", $text);
913 }
914
915 $modal_tpl->setVariable("FORM", $form->getHTML());
916
917 $form_id = 'form_' . $form->getId();
918 $submit_btn = $this->ui_factory->button()->primary($this->lng->txt("save"), '#')
919 ->withOnLoadCode(function ($id) use ($form_id) {
920 return "$('#$id').click(function() { $('#$form_id').submit(); return false; });";
921 });
922
923 return $this->ui_factory->modal()->roundtrip(strtoupper($this->lng->txt("grade_evaluate")), $this->ui_factory->legacy()->content($modal_tpl->get()))->withActionButtons([$submit_btn]);
924 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

Referenced by getReportPanel().

+ Here is the caller graph for this function:

◆ getEvaluationModalForm()

ilExerciseManagementGUI::getEvaluationModalForm ( array  $a_data)

Definition at line 926 of file class.ilExerciseManagementGUI.php.

929 $form = new ilPropertyFormGUI();
930 $this->ctrl->setParameterByClass(
931 self::class,
932 "ass_id",
933 $this->assignment->getId()
934 );
935 $form->setFormAction($this->ctrl->getFormAction($this, "saveEvaluationFromModal"));
936 $form->setId(uniqid('form'));
937
938 //Grade
939 $options = array(
940 self::GRADE_NOT_GRADED => $this->lng->txt("exc_notgraded"),
941 self::GRADE_PASSED => $this->lng->txt("exc_passed"),
942 self::GRADE_FAILED => $this->lng->txt("exc_failed")
943 );
944 $si = new ilSelectInputGUI($this->lng->txt("exc_tbl_status"), "grade");
945 $si->setOptions($options);
946 $si->setValue($a_data['status'] ?? "");
947 $form->addItem($si);
948
949 //Mark
950 $mark_input = new ilTextInputGUI($this->lng->txt("exc_tbl_mark"), "mark");
951 $mark_input->setValue($a_data['mark'] ?? "");
952 $mark_input->setMaxLength(32);
953 $mark_input->setSize(4);
954 $form->addItem($mark_input);
955
956 $item = new ilHiddenInputGUI('mem_id');
957 $item->setValue($a_data['uid'] ?? "");
958 $form->addItem($item);
959
960 //TODO: CHECK ilias string utils. ilUtil shortenText with net blank.
961 if ($this->exercise->hasTutorFeedbackText()) {
962 $ta = new ilTextAreaInputGUI($this->lng->txt("exc_comment"), 'comment');
963 $ta->setInfo($this->lng->txt("exc_comment_for_learner_info"));
964 $ta->setValue($a_data['comment'] ?? "");
965 $ta->setRows(10);
966 $form->addItem($ta);
967 }
968 return $form;
969 }
This class represents a hidden form property in a property form.
This class represents a property form user interface.
This class represents a selection list property in a property form.
This class represents a text area property in a property form.
This class represents a text property in a property form.

◆ getMarkForm()

ilExerciseManagementGUI::getMarkForm ( int  $user_id)
protected

Definition at line 592 of file class.ilExerciseManagementGUI.php.

593 {
594 $this->ctrl->setParameter($this, "part_id", $user_id);
595
596 return $this->gui
597 ->form([self::class], "saveMark")
598 ->asyncModal()
599 ->text(
600 "mark",
601 $this->lng->txt("exc_mark"),
602 "",
603 (string) ilLPMarks::_lookupMark($user_id, $this->exercise->getId())
604 );
605 }
static _lookupMark(int $a_usr_id, int $a_obj_id)

References $user_id, ilLPMarks\_lookupMark(), ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

Referenced by editMark(), and saveMarkObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMultiActionUserIds()

ilExerciseManagementGUI::getMultiActionUserIds ( bool  $a_keep_teams = false)
protected
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1295 of file class.ilExerciseManagementGUI.php.

1295 : array
1296 {
1297 $members = [];
1298 // multi-user
1299 if ($this->assignment !== null) {
1300 if (count($this->selected_participants) == 0) {
1301 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("no_checkbox"), true);
1302 $this->ctrl->redirect($this, "members");
1303 }
1304
1305 foreach ($this->selected_participants as $user_id) {
1306 $submission = new ilExSubmission($this->assignment, $user_id);
1307 $tmembers = $submission->getUserIds();
1308 if (!$a_keep_teams) {
1309 foreach ($tmembers as $tuser_id) {
1310 $members[$tuser_id] = 1;
1311 }
1312 } else {
1313 if ($tmembers) {
1314 $members[] = $tmembers;
1315 } else {
1316 // no team yet
1317 $members[] = $user_id;
1318 }
1319 }
1320 }
1321 }
1322 // multi-ass
1323 else {
1324 if (count($this->selected_ass_ids) == 0) {
1325 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("no_checkbox"), true);
1326 $this->ctrl->redirect($this, "showParticipant");
1327 }
1328
1330
1331 foreach ($this->selected_ass_ids as $ass_id) {
1332 $submission = new ilExSubmission(new ilExAssignment($ass_id), $user_id);
1333 $tmembers = $submission->getUserIds();
1334 if (!$a_keep_teams) {
1335 foreach ($tmembers as $tuser_id) {
1336 $members[$ass_id][] = $tuser_id;
1337 }
1338 } else {
1339 if ($tmembers) {
1340 $members[$ass_id][] = $tmembers;
1341 } else {
1342 // no team yet
1343 $members[$ass_id][] = $user_id;
1344 }
1345 }
1346 }
1347 }
1348
1349 return $members;
1350 }
Exercise assignment.

References $ass_id, $user_id, ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

Referenced by compareTextAssignmentsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMultiFeedbackForm()

ilExerciseManagementGUI::getMultiFeedbackForm ( int  $a_ass_id)

Definition at line 1816 of file class.ilExerciseManagementGUI.php.

1817 {
1818 $lng = $this->lng;
1819
1820 $form = $this->gui->form([self::class], "uploadMultiFeedback")
1821 ->section("main", ilExAssignment::lookupTitle($a_ass_id))
1822 ->file(
1823 "mfzip",
1824 $lng->txt("exc_multi_feedback_file"),
1825 $this->handleMultiFeedbackUploadResult(...),
1826 "rc_id",
1827 "",
1828 1,
1829 ["application/zip"]
1830 );
1831 return $form;
1832 }
static lookupTitle(int $a_id)

References $lng, and ilExAssignment\lookupTitle().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRemarkForm()

ilExerciseManagementGUI::getRemarkForm ( int  $user_id)
protected

Definition at line 634 of file class.ilExerciseManagementGUI.php.

635 {
636 $this->lng->loadLanguageModule("trac");
637 $this->ctrl->setParameter($this, "part_id", $user_id);
638
639 return $this->gui
640 ->form([self::class], "saveRemark")
641 ->asyncModal()
642 ->textarea(
643 "remark",
644 $this->lng->txt("trac_comment"),
645 "",
646 (string) ilLPMarks::_lookupComment($user_id, $this->exercise->getId())
647 );
648 }
static _lookupComment(int $a_usr_id, int $a_obj_id)

References $user_id, ilLPMarks\_lookupComment(), ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

Referenced by editRemark(), and saveRemarkObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getReportPanel()

ilExerciseManagementGUI::getReportPanel ( array  $a_data)
Exceptions
ilDateTimeException

Definition at line 777 of file class.ilExerciseManagementGUI.php.

777 : string
778 {
779 $modal = $this->getEvaluationModal($a_data);
780
781 $this->ctrl->setParameter($this, "member_id", $a_data['uid']);
782 $actions = array(
783 $this->ui_factory->button()->shy($this->lng->txt("grade_evaluate"), "#")->withOnClick($modal->getShowSignal())
784 );
785
786 if ($this->exercise->hasTutorFeedbackMail()) {
787 $actions[] = $this->ui_factory->button()->shy(
788 $this->lng->txt("exc_tbl_action_feedback_mail"),
789 $this->ctrl->getLinkTarget($this, "redirectFeedbackMail")
790 );
791 }
792 if ($this->exercise->hasTutorFeedbackFile()) {
793 $actions[] = $this->ui_factory->button()->shy(
794 $this->lng->txt("exc_tbl_action_feedback_file"),
795 $this->ctrl->getLinkTargetByClass(ilResourceCollectionGUI::class)
796 );
797 }
798
799 $this->ctrl->setParameter($this, "member_id", "");
800
801 $actions_dropdown = $this->ui_factory->dropdown()->standard($actions);
802 if ($a_data['status'] == self::GRADE_NOT_GRADED) {
803 $str_status_key = $this->lng->txt('exc_tbl_status') . ": ";
804 $str_status_value = "-";
805 } else {
806 $str_status_key = $this->lng->txt('exc_tbl_status_time') . ": ";
807 $str_status_value = ilDatePresentation::formatDate(new ilDateTime($a_data["status_time"], IL_CAL_DATETIME));
808 }
809
810 $str_mark_key = $this->lng->txt("exc_tbl_mark") . ": ";
811 $str_mark_value = "-";
812
813 if (($a_data['mark'] != "")) {
814 $str_mark_value = $a_data['mark'];
815 }
816
817 if ($a_data['feedback_time']) {
818 $str_evaluation_key = $this->lng->txt('exc_tbl_feedback_time') . ": ";
819 $str_evaluation_value = ilDatePresentation::formatDate(new ilDateTime($a_data["feedback_time"], IL_CAL_DATETIME));
820 } else {
821 $str_evaluation_key = $this->lng->txt('exc_settings_feedback') . ": ";
822 $str_evaluation_value = "-";
823 }
824
825 $card_content = array(
826 $this->lng->txt("exc_tbl_submission_date") . ": " => ilDatePresentation::formatDate(new ilDateTime($a_data["udate"], IL_CAL_DATETIME)),
827 $str_status_key => $str_status_value,
828 $str_mark_key => $str_mark_value,
829 $str_evaluation_key => $str_evaluation_value,
830 $this->lng->txt('feedback_given') . ": " => $a_data['fb_given'],
831 $this->lng->txt('feedback_received') . ": " => $a_data['fb_received']
832 );
833 $card_tpl = new ilTemplate("tpl.exc_report_details_card.html", true, true, "components/ILIAS/Exercise");
834 foreach ($card_content as $key => $value) {
835 $card_tpl->setCurrentBlock("assingment_card");
836 $card_tpl->setVariable("ROW_KEY", $key);
837 $card_tpl->setVariable("ROW_VALUE", $value);
838 $card_tpl->parseCurrentBlock();
839 }
840
841 $main_panel = $this->ui_factory->panel()->sub($a_data['uname'], $this->ui_factory->legacy()->content(
842 $this->gui->html()->escapeCurly($a_data['utext'])
843 ))
844 ->withFurtherInformation($this->ui_factory->card()->standard($this->lng->txt('text_assignment'))->withSections(array($this->ui_factory->legacy()->content($card_tpl->get()))))->withActions($actions_dropdown);
845
846 $feedback_tpl = new ilTemplate("tpl.exc_report_feedback.html", true, true, "components/ILIAS/Exercise");
847 //if no feedback filter the feedback is displayed. Can be list submissions or compare submissions.
848 $filter_feedback = $this->filter["feedback"] ?? "";
849 if (array_key_exists("peer", $a_data) && (($filter_feedback == self::FEEDBACK_FULL_SUBMISSION) || $filter_feedback == "")) {
850 $feedback_tpl->setCurrentBlock("feedback");
851 foreach ($a_data["peer"] as $peer_id) {
852 if (ilObject::_lookupType($peer_id) == "usr") {
853 $user = new ilObjUser($peer_id);
854 $peer_name = $user->getFirstname() . " " . $user->getLastname();
855 } else {
856 $peer_name = $this->lng->txt("exc_deleted_user");
857 }
858
859 $feedback_tpl->setCurrentBlock("peer_feedback");
860 $feedback_tpl->setVariable("PEER_NAME", $peer_name);
861
862 $submission = new ilExSubmission($this->assignment, $a_data["uid"]);
863 $values = $submission->getPeerReview()->getPeerReviewValues($peer_id, $a_data["uid"]);
864
865 $review_html = "";
866 foreach ($this->assignment->getPeerReviewCriteriaCatalogueItems() as $crit) {
867 $crit_id = $crit->getId()
868 ? $crit->getId()
869 : $crit->getType();
870 $crit->setPeerReviewContext($this->assignment, $peer_id, $a_data["uid"]);
871
872 $review_html .=
873 '<div class="ilBlockPropertyCaption">' . $crit->getTitle() . '</div>' .
874 '<div style="margin:2px 0;">' . $crit->getHTML($values[$crit_id] ?? null) . '</div>';
875 }
876 $feedback_tpl->setVariable("PEER_FEEDBACK", $review_html);
877 $feedback_tpl->parseCurrentBlock();
878 }
879 $feedback_tpl->parseCurrentBlock();
880 }
881 $feedback_tpl->setVariable("GRADE", $this->lng->txt('exc_grading') . ": " . $this->lng->txt('exc_' . $a_data['status']));
882 $comment = ($a_data['comment'] === "")
883 ? "-"
884 : $a_data['comment'];
885 $feedback_tpl->setVariable("COMMENT", $this->lng->txt('exc_comment') . ": <br>" . $comment);
886
887 $feedback_panel = $this->ui_factory->panel()->sub("", $this->ui_factory->legacy()->content($feedback_tpl->get()));
888
889 $report = $this->ui_factory->panel()->report("", array($main_panel, $feedback_panel));
890
891 return $this->ui_renderer->render([$modal,$report]);
892 }
$comment
Definition: buildRTE.php:72
const IL_CAL_DATETIME
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
@classDescription Date and time handling
static _lookupType(int $id, bool $reference=false)

References $comment, $report, $user, ilObject\_lookupType(), ILIAS\Repository\ctrl(), ILIAS\Repository\filter(), ilDatePresentation\formatDate(), getEvaluationModal(), ilObjUser\getFirstname(), ilObjUser\getLastname(), IL_CAL_DATETIME, and ILIAS\Repository\lng().

Referenced by compareTextAssignmentsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getViewBack()

ilExerciseManagementGUI::getViewBack ( )
protected

Definition at line 277 of file class.ilExerciseManagementGUI.php.

277 : string
278 {
279 switch ($this->request->getBackView()) {
281 $back_cmd = "showParticipant";
282 break;
283
285 $back_cmd = "showGradesOverview";
286 break;
287
288 default:
289 // case self::VIEW_ASSIGNMENT:
290 $back_cmd = "members";
291 break;
292 }
293 return $back_cmd;
294 }

References VIEW_GRADES, and VIEW_PARTICIPANT.

Referenced by initSubmission().

+ Here is the caller graph for this function:

◆ getWebFilePathFromExternalFilePath()

ilExerciseManagementGUI::getWebFilePathFromExternalFilePath ( string  $external_file_path)
protected

Get the object specific file path from an external full file path.

Definition at line 2351 of file class.ilExerciseManagementGUI.php.

2353 : string {
2354 list($external_path, $internal_file_path) = explode(CLIENT_ID . "/ilExercise", $external_file_path);
2355 $internal_file_path = "ilExercise" . $internal_file_path;
2356 return $internal_file_path;
2357 }
const CLIENT_ID
Definition: constants.php:41

◆ handleIndividualDeadlineCallsObject()

ilExerciseManagementGUI::handleIndividualDeadlineCallsObject ( )
protected
Exceptions
ilExcUnknownAssignmentTypeException
ilDateTimeException

Definition at line 2033 of file class.ilExerciseManagementGUI.php.

2033 : void
2034 {
2035 $tpl = $this->tpl;
2036
2037 $this->ctrl->saveParameter($this, "part_id");
2038
2039 // from request "dn", see ilExcIdl.js
2040 if ($this->done) {
2041 $this->tpl->setOnScreenMessage('success', $this->lng->txt("settings_saved"), true);
2042 $this->ctrl->redirect($this, $this->assignment !== null
2043 ? "members"
2044 : "showParticipant");
2045 }
2046
2047 // initial form call
2048 if ($this->requested_idl_id != "") {
2049 $tmp = $this->parseIndividualDeadlineData(explode(",", $this->requested_idl_id));
2050 if (is_array($tmp)) {
2051 $form = $this->initIndividualDeadlineForm($tmp[1], $tmp[0]);
2052 echo $form->getHTML() .
2054 }
2055 }
2056 // form "submit"
2057 else {
2058 $tmp = array();
2059 $post = $this->http->request()->getParsedBody();
2060 foreach (array_keys($post) as $id) {
2061 if (substr($id, 0, 3) == "dl_") {
2062 $tmp[] = substr($id, 3);
2063 }
2064 }
2065 $tmp = $this->parseIndividualDeadlineData($tmp);
2066 $ass_map = $tmp[1];
2067 $users = $tmp[0];
2068 unset($tmp);
2069
2070 $form = $this->initIndividualDeadlineForm($ass_map, $users);
2071 $res = array();
2072 if ($valid = $form->checkInput()) {
2073 foreach ($users as $ass_id => $users2) {
2074 $ass = $ass_map[$ass_id];
2075
2076 // :TODO: should individual deadlines BEFORE extended be possible?
2077 $dl = new ilDateTime($ass->getDeadline(), IL_CAL_UNIX);
2078
2079 foreach ($users2 as $user_id) {
2080 $date_field = $form->getItemByPostVar("dl_" . $ass_id . "_" . $user_id);
2081 if (ilDate::_before($date_field->getDate(), $dl)) {
2082 $date_field->setAlert(sprintf($this->lng->txt("exc_individual_deadline_before_global"), ilDatePresentation::formatDate($dl)));
2083 $valid = false;
2084 } else {
2085 $res[$ass_id][$user_id] = $date_field->getDate();
2086 }
2087 }
2088 }
2089 }
2090
2091 if (!$valid) {
2092 $form->setValuesByPost();
2093 echo $form->getHTML() .
2095 } else {
2096 foreach ($res as $ass_id => $users) {
2097 $ass = $ass_map[$ass_id];
2098
2099 foreach ($users as $id => $date) {
2100 $ass->setIndividualDeadline($id, $date);
2101 if (is_numeric($id)) {
2102 $this->notification->sendDeadlineSetNotification($ass_id, $id);
2103 }
2104 }
2105
2106 $subm = $this->domain->submission($ass->getId());
2107 $subm->recalculateLateSubmissions();
2108 }
2109
2110 echo "ok";
2111 }
2112 }
2113
2114 exit();
2115 }
const IL_CAL_UNIX
static _before(ilDateTime $start, ilDateTime $end, string $a_compare_field='', string $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
initIndividualDeadlineForm(array $a_ass_map, array $ids)
getOnLoadCodeForAsynch()
Get js onload code for ajax calls.
foreach($_POST as $key=> $value) $res

References $ass_id, $id, $res, ILIAS\News\Common\Table\$tpl, $user_id, ilDateTime\_before(), ILIAS\Repository\ctrl(), exit, ilDatePresentation\formatDate(), ILIAS\UICore\GlobalTemplate\getOnLoadCodeForAsynch(), ILIAS\FileDelivery\http(), IL_CAL_UNIX, ILIAS\Repository\lng(), and ILIAS\UI\examples\Symbol\Glyph\Notification\notification().

+ Here is the call graph for this function:

◆ handleMultiFeedbackUploadResult()

ilExerciseManagementGUI::handleMultiFeedbackUploadResult ( FileUpload  $upload,
UploadResult  $result 
)

Definition at line 1834 of file class.ilExerciseManagementGUI.php.

1838 $feedback_zip = $this->domain->assignment()->tutorFeedbackZip();
1839 $rid = $feedback_zip->importFromUploadResult(
1840 $this->ass_id,
1841 $this->user->getId(),
1842 $result
1843 );
1844 return new \ILIAS\FileUpload\Handler\BasicHandlerResult(
1845 '',
1846 \ILIAS\FileUpload\Handler\HandlerResult::STATUS_OK,
1847 $rid,
1848 ''
1849 );
1850 }
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.

◆ initFilter()

ilExerciseManagementGUI::initFilter ( )

Definition at line 2191 of file class.ilExerciseManagementGUI.php.

2191 : void
2192 {
2193 if ($this->requested_filter_status != "") {
2194 $this->filter["status"] = $this->requested_filter_status;
2195 }
2196
2197 $this->lng->loadLanguageModule("search");
2198
2199 $this->toolbar->setFormAction($this->ctrl->getFormAction($this, "listTextAssignment"));
2200
2201 // Status
2202
2203 $si_status = new ilSelectInputGUI($this->lng->txt("exc_tbl_status"), "filter_status");
2204 $options = array(
2205 "" => $this->lng->txt("search_any"),
2206 self::GRADE_NOT_GRADED => $this->lng->txt("exc_notgraded"),
2207 self::GRADE_PASSED => $this->lng->txt("exc_passed"),
2208 self::GRADE_FAILED => $this->lng->txt("exc_failed")
2209 );
2210 $si_status->setOptions($options);
2211 $si_status->setValue($this->filter["status"] ?? "");
2212
2213 $si_feedback = new ilSelectInputGUI($this->lng->txt("feedback"), "filter_feedback");
2214 $options = array(
2215 self::FEEDBACK_FULL_SUBMISSION => $this->lng->txt("submissions_feedback"),
2216 self::FEEDBACK_ONLY_SUBMISSION => $this->lng->txt("submissions_only")
2217 );
2218 $si_feedback->setOptions($options);
2219 $si_feedback->setValue($this->filter["feedback"] ?? "");
2220
2221 $this->toolbar->addInputItem($si_status, true);
2222
2223 // Submissions and Feedback
2224 #24713
2225 if ($this->assignment->getPeerReview()) {
2226 if ($this->requested_filter_feedback != "") {
2227 $this->filter["feedback"] = $this->requested_filter_feedback;
2228 } else {
2229 $this->filter["feedback"] = "submission_feedback";
2230 }
2231
2232 $si_feedback = new ilSelectInputGUI($this->lng->txt("feedback"), "filter_feedback");
2233 $options = array(
2234 "submission_feedback" => $this->lng->txt("submissions_feedback"),
2235 "submission_only" => $this->lng->txt("submissions_only")
2236 );
2237 $si_feedback->setOptions($options);
2238 $si_feedback->setValue($this->filter["feedback"] ?? "");
2239
2240 $this->toolbar->addInputItem($si_feedback, true);
2241 }
2242
2243 $this->gui->button(
2244 $this->lng->txt("filter"),
2245 "listTextAssignment"
2246 )->submit()->toToolbar();
2247 }

References ILIAS\UI\Implementation\Component\Input\Field\$options, ILIAS\Repository\ctrl(), ILIAS\Repository\filter(), ILIAS\Repository\lng(), and ILIAS\Repository\toolbar().

+ Here is the call graph for this function:

◆ initGroupForm()

ilExerciseManagementGUI::initGroupForm ( )
protected

Definition at line 1674 of file class.ilExerciseManagementGUI.php.

1675 {
1676 $lng = $this->lng;
1677
1678 $form = new ilPropertyFormGUI();
1679 $form->setTitle($lng->txt("exc_adopt_group_teams") . " - " . $this->assignment->getTitle());
1680 $form->setFormAction($this->ctrl->getFormAction($this, "createTeamsFromGroups"));
1681
1682 $all_members = array();
1683 foreach (ilExAssignmentTeam::getGroupMembersMap($this->exercise->getRefId()) as $grp_id => $group) {
1684 if (count($group["members"]) !== 0) {
1685 $grp_team = new ilCheckboxGroupInputGUI($lng->txt("obj_grp") . " \"" . $group["title"] . "\"", "grpt[" . $grp_id . "]");
1686 $grp_value = $options = array();
1687 foreach ($group["members"] as $user_id) {
1688 $user_name = ilUserUtil::getNamePresentation($user_id, false, false, "", true);
1689 $options[$user_id] = $user_name;
1690 if (!in_array($user_id, $all_members)) {
1691 $grp_value[] = $user_id;
1692 $all_members[] = $user_id;
1693 }
1694 }
1695 asort($options);
1696 foreach ($options as $user_id => $user_name) {
1697 $grp_team->addOption(new ilCheckboxOption($user_name, $user_id));
1698 }
1699 $grp_team->setValue($grp_value);
1700 } else {
1701 $grp_team = new ilNonEditableValueGUI($group["title"]);
1702 $grp_team->setValue($lng->txt("exc_adopt_group_teams_no_members"));
1703 }
1704 $form->addItem($grp_team);
1705 }
1706
1707 if ($all_members !== []) {
1708 $form->addCommandButton("createTeamsFromGroups", $lng->txt("save"));
1709 }
1710 $form->addCommandButton("members", $lng->txt("cancel"));
1711
1712 return $form;
1713 }
This class represents a property in a property form.
This class represents an option in a checkbox group.
This class represents a non editable value in a property form.

References $lng, ILIAS\UI\Implementation\Component\Input\Field\$options, $user_id, ILIAS\Repository\ctrl(), ilExAssignmentTeam\getGroupMembersMap(), and ilUserUtil\getNamePresentation().

+ Here is the call graph for this function:

◆ initIndividualDeadlineForm()

ilExerciseManagementGUI::initIndividualDeadlineForm ( array  $a_ass_map,
array  $ids 
)
protected
Exceptions
ilDateTimeException

Definition at line 2120 of file class.ilExerciseManagementGUI.php.

2124 $form = new ilPropertyFormGUI();
2125 $form->setFormAction($this->ctrl->getFormAction($this));
2126 $form->setName("ilExcIDlForm");
2127
2128 foreach ($ids as $ass_id => $users) {
2129 $ass = $a_ass_map[$ass_id];
2130
2131 $section = new ilFormSectionHeaderGUI();
2132 $section->setTitle($ass->getTitle());
2133 $form->addItem($section);
2134
2135 $teams = ilExAssignmentTeam::getInstancesFromMap($ass->getId());
2136
2137 $values = $ass->getIndividualDeadlines();
2138
2139 foreach ($users as $id) {
2140 // single user
2141 if (is_numeric($id)) {
2142 $name = ilObjUser::_lookupName($id);
2143 $name = $name["lastname"] . ", " . $name["firstname"];
2144 }
2145 // team
2146 else {
2147 $name = "";
2148 $team_id = (int) substr($id, 1);
2149 if (array_key_exists($team_id, $teams)) {
2150 $name = array();
2151 foreach ($teams[$team_id]->getMembers() as $member_id) {
2152 $uname = ilObjUser::_lookupName($member_id);
2153 $name[] = $uname["lastname"] . ", " . $uname["firstname"];
2154 }
2155 asort($name);
2156 $name = implode("<br />", $name);
2157 }
2158 }
2159
2160 $dl = new ilDateTimeInputGUI($name, "dl_" . $ass_id . "_" . $id);
2161 $dl->setShowTime(true);
2162 $dl->setRequired(true);
2163 $form->addItem($dl);
2164
2165 if (array_key_exists($id, $values)) {
2166 $dl->setDate(new ilDateTime($values[$id], IL_CAL_UNIX));
2167 }
2168 }
2169 }
2170
2171 $form->addCommandButton("", $this->lng->txt("save"));
2172
2173 return $form;
2174 }
This class represents a date/time property in a property form.
static getInstancesFromMap(int $a_assignment_id)
This class represents a section header in a property form.
static _lookupName(int $a_user_id)

References $ass_id, $id, ilObjUser\_lookupName(), ilExAssignmentTeam\getInstancesFromMap(), IL_CAL_UNIX, and ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ initIndividualDeadlineModal()

ilExerciseManagementGUI::initIndividualDeadlineModal ( )
protected

Definition at line 1975 of file class.ilExerciseManagementGUI.php.

1975 : string
1976 {
1977 $lng = $this->lng;
1978 $tpl = $this->tpl;
1979
1980 // prepare modal
1981 $modal = $this->ui_factory->modal()->roundtrip(
1982 $lng->txt("exc_individual_deadline"),
1983 $this->ui_factory->legacy()->content('<div id="ilExcIDlBody"></div>')
1984 );
1985 $show = $modal->getShowSignal()->getId();
1986 $close = $modal->getCloseSignal()->getId();
1987
1988 $ajax_url = $this->ctrl->getLinkTarget($this, "handleIndividualDeadlineCalls", "", true, false);
1989
1990 $tpl->addJavaScript("assets/js/ilExcIDl.js", true, 3);
1991 $tpl->addOnLoadCode("il.ExcIDl.init('" . $ajax_url . "','" . $show . "','" . $close . "');");
1992
1994
1995 return $this->ui_renderer->render($modal);
1996 }
addJavaScript(string $a_js_file, bool $a_add_version_parameter=true, int $a_batch=2)
Add a javascript file that should be included in the header.
addOnLoadCode(string $a_code, int $a_batch=2)
Add on load code.

References $close, $lng, ILIAS\News\Common\Table\$tpl, ILIAS\UICore\GlobalTemplate\addJavaScript(), ILIAS\UICore\GlobalTemplate\addOnLoadCode(), ILIAS\Repository\ctrl(), and ilCalendarUtil\initDateTimePicker().

+ Here is the call graph for this function:

◆ initSubmission()

ilExerciseManagementGUI::initSubmission ( )
protected

Definition at line 296 of file class.ilExerciseManagementGUI.php.

297 {
298 $back_cmd = $this->getViewBack();
299 $this->ctrl->setReturn($this, $back_cmd);
300
301 $this->tabs_gui->clearTargets();
302 $this->tabs_gui->setBackTarget(
303 $this->lng->txt("back"),
304 $this->ctrl->getLinkTarget($this, $back_cmd)
305 );
306
307 return new ilExSubmission($this->assignment, $this->requested_member_id, null, true);
308 }

References ILIAS\Repository\ctrl(), getViewBack(), and ILIAS\Repository\lng().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ membersApplyObject()

ilExerciseManagementGUI::membersApplyObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 530 of file class.ilExerciseManagementGUI.php.

530 : void
531 {
532 $this->saveStatusAllObject(null, false);
534 $this,
535 "members",
536 $this->exercise,
537 $this->assignment->getId(),
538 $this->feedback_gui
539 );
540 $exc_tab->resetOffset();
541 $exc_tab->writeFilterToSession();
542
543 $this->membersObject();
544 }
saveStatusAllObject(?array $a_selected=null, bool $a_redirect=true)

References membersObject(), and saveStatusAllObject().

+ Here is the call graph for this function:

◆ membersObject()

ilExerciseManagementGUI::membersObject ( )

All participants and submission of one assignment.

Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 364 of file class.ilExerciseManagementGUI.php.

364 : void
365 {
367 $ilToolbar = $this->toolbar;
368 $ilCtrl = $this->ctrl;
370
371 $this->addSubTabs("assignment");
372 $this->gui->permanentLink()->setGradesPermanentLink();
373
374 // assignment selection
375 $ass = ilExAssignment::getInstancesByExercise($this->exercise->getId());
376
377 if ($this->assignment === null && count($ass) > 0) {
378 $this->assignment = current($ass);
379 }
380
381 reset($ass);
382 if (count($ass) > 1) {
383 $options = array();
384 foreach ($ass as $a) {
385 $options[$a->getId()] = $a->getTitle();
386 }
387 $si = new ilSelectInputGUI($this->lng->txt("exc_assignment"), "ass_id");
388 $si->setOptions($options);
389 $si->setValue($this->assignment->getId());
390 $ilToolbar->addStickyItem($si, true);
391 $this->gui->button(
392 $this->lng->txt("select"),
393 "selectAssignment"
394 )->submit()->toToolbar(true);
395
396 $ilToolbar->addSeparator();
397 }
398 // #16165 - if only 1 assignment dropdown is not displayed;
399 elseif ($this->assignment) {
400 $ilCtrl->setParameter($this, "ass_id", $this->assignment->getId());
401 }
402
403 // add member
404 // is only shown if 'edit_submissions_grades' is granted by rbac. positions
405 // access is not sufficient.
406 $has_rbac_access = $GLOBALS['DIC']->access()->checkAccess(
407 'edit_submissions_grades',
408 '',
409 $this->exercise->getRefId()
410 );
411 if ($has_rbac_access) {
413 $this,
414 $ilToolbar,
415 array(
416 'auto_complete_name' => $lng->txt('user'),
417 'submit_name' => $lng->txt('add'),
418 'add_search' => true,
419 'add_from_container' => $this->exercise->getRefId()
420 )
421 );
422 }
423
424 // #16168 - no assignments
425 if ($ass !== []) {
426 if ($has_rbac_access) {
427 $ilToolbar->addSeparator();
428 }
429
430 // we do not want the ilRepositorySearchGUI form action
431 $ilToolbar->setFormAction($ilCtrl->getFormAction($this));
432
433 $ilCtrl->setParameter($this, "ass_id", $this->assignment->getId());
434
435 if ($this->assignment->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) {
436 if (ilExAssignmentTeam::getAdoptableGroups($this->exercise->getRefId())) {
437 $ilToolbar->addButton(
438 $this->lng->txt("exc_adopt_group_teams"),
439 $this->ctrl->getLinkTarget($this, "adoptTeamsFromGroup")
440 );
441
442 $ilToolbar->addSeparator();
443 }
444 } elseif ($this->exercise->hasTutorFeedbackFile()) {
445 if (!$this->assignment->getAssignmentType()->usesTeams()) {
446
447 $mem_data = $this->assignment->getMemberListData();
448 if (count($mem_data) > 0) {
449 // multi-feedback
450 $ilToolbar->addButton(
451 $this->lng->txt("exc_multi_feedback"),
452 $this->ctrl->getLinkTarget($this, "showMultiFeedback")
453 );
454
455 $ilToolbar->addSeparator();
456 }
457 }
458 }
459
460 $submission_repository = $this->service->repo()->submission();
461
462 if ($submission_repository->hasSubmissions($this->assignment->getId()) !== 0) {
463 $ass_type = $this->assignment->getType();
464 //todo change addFormButton for addButtonInstance
465 if ($ass_type == ilExAssignment::TYPE_TEXT) {
466 $ilToolbar->addFormButton($lng->txt("exc_list_text_assignment"), "listTextAssignment");
467 }
468 $ilToolbar->addFormButton($lng->txt("download_all_returned_files"), "downloadSubmissions");
469 }
470 $this->ctrl->setParameter($this, "vw", self::VIEW_ASSIGNMENT);
471
473 $this,
474 "members",
475 $this->exercise,
476 $this->assignment->getId(),
477 $this->feedback_gui
478 );
480 $exc_tab->getHTML() .
481 $this->initIndividualDeadlineModal()
482 );
483 } else {
484 $this->tpl->setOnScreenMessage('info', $lng->txt("exc_no_assignments_available"));
485 }
486
487 $ilCtrl->setParameter($this, "ass_id", "0");
488 }
static getAdoptableGroups(int $a_exc_ref_id)
static getInstancesByExercise(int $a_exc_id)
static fillAutoCompleteToolbar(object $parent_object, ?ilToolbarGUI $toolbar=null, array $a_options=[], bool $a_sticky=false)
array( auto_complete_name = $lng->txt('user'), auto_complete_size = 15, user_type = array(ilCoursePar...
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples

References Vendor\Package\$a, $ctrl, $GLOBALS, $lng, ILIAS\UI\Implementation\Component\Input\Field\$options, $toolbar, $tpl, addSubTabs(), ILIAS\Repository\ctrl(), ilRepositorySearchGUI\fillAutoCompleteToolbar(), ilExAssignmentTeam\getAdoptableGroups(), ilExAssignment\getInstancesByExercise(), ILIAS\Repository\lng(), ILIAS\UICore\GlobalTemplate\setContent(), ilLanguage\txt(), ilExAssignment\TYPE_TEXT, and ilExAssignment\TYPE_UPLOAD_TEAM.

Referenced by membersApplyObject(), membersResetObject(), and waitingDownloadObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ membersResetObject()

ilExerciseManagementGUI::membersResetObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 549 of file class.ilExerciseManagementGUI.php.

549 : void
550 {
552 $this,
553 "members",
554 $this->exercise,
555 $this->assignment->getId(),
556 $this->feedback_gui
557 );
558 $exc_tab->resetOffset();
559 $exc_tab->resetFilter();
560
561 $this->membersObject();
562 }

References membersObject().

+ Here is the call graph for this function:

◆ openSubmissionPrintViewObject()

ilExerciseManagementGUI::openSubmissionPrintViewObject ( )

Open HTML view for portfolio submissions.

Definition at line 2252 of file class.ilExerciseManagementGUI.php.

2252 : void
2253 {
2254 $this->openSubmissionViewObject(true);
2255 }
openSubmissionViewObject(bool $print_version=false)
Open HTML view for portfolio submissions.

◆ openSubmissionViewObject()

ilExerciseManagementGUI::openSubmissionViewObject ( bool  $print_version = false)

Open HTML view for portfolio submissions.

Definition at line 2260 of file class.ilExerciseManagementGUI.php.

2260 : void
2261 {
2262 global $DIC;
2263
2264 $member_id = $this->requested_member_id;
2265
2266 $submission = new ilExSubmission($this->assignment, $member_id);
2267 $entry = $submission->getSubmittedEntry($print_version);
2268 if (is_null($entry)) {
2269 throw new ilExerciseException("No submission entry for " . $this->assignment->getId() . " / " .
2270 $member_id . ".");
2271 }
2272 $rid = $entry->getRid();
2273
2274 $last_opening = $submission->getLastOpeningHTMLView();
2275 $submission_time = $submission->getLastSubmission();
2276
2277 if ($rid !== "") {
2278 $zip_internal_path = "ilExercise/" . \ilFileSystemAbstractionStorage::createPathFromId(
2279 $this->assignment->getExerciseId(),
2280 "exc"
2281 ) . "/subm_" . $this->assignment->getId() . "/" . $member_id . "/resource.zip";
2282 $obj_id = str_replace([".zip", "print"], "", $entry->getTitle());
2283 $obj_id = $this->assignment->getAssignmentType()->getExportObjIdForResourceId($obj_id);
2284 }
2285 if ($print_version) {
2286 $obj_id .= "print";
2287 }
2288
2289 $obj_dir = $this->assignment->getAssignmentType()->getStringIdentifier() . "_" . $obj_id;
2290
2291 $index_html_file =
2293 DIRECTORY_SEPARATOR .
2294 CLIENT_ID .
2295 DIRECTORY_SEPARATOR .
2296 dirname($zip_internal_path) .
2297 //DIRECTORY_SEPARATOR .
2298 //$obj_dir .
2299 DIRECTORY_SEPARATOR .
2300 "index.html";
2301 // (migrated) pre ilias 10, esp. portfolio
2302 $index_html_file_old =
2304 DIRECTORY_SEPARATOR .
2305 CLIENT_ID .
2306 DIRECTORY_SEPARATOR .
2307 dirname($zip_internal_path) .
2308 DIRECTORY_SEPARATOR .
2309 $obj_dir .
2310 DIRECTORY_SEPARATOR .
2311 "index.html";
2312 $this->log->debug("index html file: " . $index_html_file);
2313
2314 $web_filesystem = $DIC->filesystem()->web();
2315 if ($last_opening > $submission_time && $web_filesystem->has($index_html_file)) {
2317 ilUtil::redirect($index_html_file);
2318 }
2319 $error_msg = "";
2320 if ($rid !== "") {
2321 $file_copied = $this->domain->submission($this->ass_id)->copyRidToWebDir($rid, $zip_internal_path);
2322 }
2323
2324 // e.g. data/ilias/ilExercise/3/exc_327/subm_9/2/20231212085734_167.zip ?
2325 if ($file_copied) {
2326 $this->zip->unzipFile($file_copied);
2327 $web_filesystem->delete($zip_internal_path);
2328 $this->log->debug("deleting: " . $zip_internal_path);
2329
2330 $submission_repository = $this->service->repo()->submission();
2331 $submission_repository->updateWebDirAccessTime($this->assignment->getId(), $member_id);
2332 if (!is_file($index_html_file) && is_file($index_html_file_old)) {
2333 $index_html_file = $index_html_file_old;
2334 }
2336 ilUtil::redirect($index_html_file . "?" . time());
2337 }
2338
2339 $error_msg = $this->lng->txt("exc_copy_zip_error");
2340
2341 if ($error_msg === '' || $error_msg === '0') {
2342 $error_msg = $this->lng->txt("exc_find_zip_error");
2343 }
2344
2345 $this->tpl->setOnScreenMessage('failure', $error_msg);
2346 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static createPathFromId(int $a_container_id, string $a_name)
static redirect(string $a_script)
static signFolderOfStartFile(string $start_file_path)
const ILIAS_WEB_DIR
Definition: constants.php:45

References $DIC, CLIENT_ID, ilFileSystemAbstractionStorage\createPathFromId(), ILIAS_WEB_DIR, ILIAS\Repository\lng(), ilUtil\redirect(), and ilWACSignedPath\signFolderOfStartFile().

+ Here is the call graph for this function:

◆ parseIndividualDeadlineData()

ilExerciseManagementGUI::parseIndividualDeadlineData ( array  $a_data)
protected
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 2001 of file class.ilExerciseManagementGUI.php.

2003 : array {
2004 if ($a_data) {
2005 $map = array();
2006 $ass_tmp = array();
2007 foreach ($a_data as $item) {
2008 $item = explode("_", $item);
2009 $ass_id = $item[0];
2010 $user_id = $item[1];
2011
2012 if (!array_key_exists($ass_id, $ass_tmp)) {
2013 if ($this->assignment &&
2014 $ass_id == $this->assignment->getId()) {
2015 $ass_tmp[$ass_id] = $this->assignment;
2016 } else {
2017 $ass_tmp[$ass_id] = new ilExAssignment($ass_id);
2018 }
2019 }
2020
2021 $map[$ass_id][] = $user_id;
2022 }
2023
2024 return array($map, $ass_tmp);
2025 }
2026 return [];
2027 }

References $ass_id, and $user_id.

◆ redirectFeedbackMailObject()

ilExerciseManagementGUI::redirectFeedbackMailObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1250 of file class.ilExerciseManagementGUI.php.

1250 : void
1251 {
1252 if ($this->requested_member_id > 0) {
1253 $submission = new ilExSubmission($this->assignment, $this->requested_member_id);
1254 $members = $submission->getUserIds();
1255 } elseif ($members = $this->getMultiActionUserIds()) {
1256 $members = array_keys($members);
1257 }
1258
1259 if ($members !== []) {
1260 $logins = array();
1261 foreach ($members as $user_id) {
1262 $member_status = $this->assignment->getMemberStatus($user_id);
1263 $member_status->setFeedback(true);
1264 $member_status->update();
1265
1266 $logins[] = ilObjUser::_lookupLogin($user_id);
1267 }
1268 $logins = implode(",", $logins);
1269
1270 // #16530 - see ilObjCourseGUI::createMailSignature
1271 $sig = chr(13) . chr(10) . chr(13) . chr(10);
1272 $sig .= $this->lng->txt('exc_mail_permanent_link');
1273 $sig .= chr(13) . chr(10) . chr(13) . chr(10);
1274 $sig .= ilLink::_getLink($this->exercise->getRefId());
1275 $sig = rawurlencode(base64_encode($sig));
1276
1278 $this,
1279 $this->getViewBack(),
1280 array(),
1281 array(
1282 'type' => 'new',
1283 'rcp_to' => $logins,
1285 )
1286 ));
1287 }
1288 }
final const string SIGNATURE_KEY
static getRedirectTarget( $gui, string $cmd, array $gui_params=[], array $mail_params=[], array $context_params=[])
static _lookupLogin(int $a_user_id)

References $user_id, ilObjUser\_lookupLogin(), ilMailFormCall\getRedirectTarget(), ILIAS\Repository\lng(), ilUtil\redirect(), and ilMailFormCall\SIGNATURE_KEY.

+ Here is the call graph for this function:

◆ saveAllMultiFeedbackObject()

ilExerciseManagementGUI::saveAllMultiFeedbackObject ( )

Save all multi feedback files.

Definition at line 1936 of file class.ilExerciseManagementGUI.php.

1936 : void
1937 {
1938 $ids = $this->domain->multiFeedbackConfirmationRetrieval($this->assignment)
1939 ->getAllFileIds();
1940 $this->saveMultiFeedback($ids);
1941 }
saveMultiFeedback(array $ids)
Save multi feedback.

◆ saveEvaluationFromModalObject()

ilExerciseManagementGUI::saveEvaluationFromModalObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 976 of file class.ilExerciseManagementGUI.php.

976 : void
977 {
978 $form = $this->getEvaluationModalForm([]);
979 $user_id = 0;
980 $comment = "";
981 $mark = "";
982 $grade = "";
983 if ($form->checkInput()) {
984 $comment = trim($form->getInput('comment'));
985 $user_id = (int) $form->getInput('mem_id');
986 $grade = trim($form->getInput('grade'));
987 $mark = trim($form->getInput('mark'));
988 }
989 if ($this->assignment->getId() && $user_id > 0) {
990 $member_status = $this->assignment->getMemberStatus($user_id);
991 $member_status->setComment(ilUtil::stripSlashes($comment));
992 if ($grade != "") {
993 $member_status->setStatus($grade);
994 }
995 $member_status->setMark($mark);
996 if ($comment != "") {
997 $member_status->setFeedback(true);
998 }
999 $member_status->update();
1000 }
1001 $this->tpl->setOnScreenMessage('success', $this->lng->txt("exc_status_saved"), true);
1002 $this->ctrl->redirect($this, "listTextAssignment");
1003 }
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")

References $comment, $user_id, ILIAS\Repository\ctrl(), ILIAS\Repository\int(), ILIAS\Repository\lng(), and ilUtil\stripSlashes().

+ Here is the call graph for this function:

◆ saveGradesObject()

ilExerciseManagementGUI::saveGradesObject ( )

Definition at line 564 of file class.ilExerciseManagementGUI.php.

564 : void
565 {
566 $ilCtrl = $this->ctrl;
568
569 foreach ($this->requested_learning_comments as $k => $v) {
570 $marks_obj = new ilLPMarks($this->exercise->getId(), (int) $k);
571 $marks_obj->setComment($v);
572 $marks_obj->update();
573 }
574 foreach ($this->requested_marks as $k => $v) {
575 $marks_obj = new ilLPMarks($this->exercise->getId(), (int) $k);
576 $marks_obj->setMark($v);
577 $marks_obj->update();
578 }
579 $this->tpl->setOnScreenMessage('success', $lng->txt("exc_msg_saved_grades"), true);
580 $ilCtrl->redirect($this, "showGradesOverview");
581 }

References $ctrl, $lng, and ilLanguage\txt().

+ Here is the call graph for this function:

◆ saveMarkObject()

ilExerciseManagementGUI::saveMarkObject ( )

Definition at line 607 of file class.ilExerciseManagementGUI.php.

607 : void
608 {
609 $user_id = $this->request->getParticipantId();
610 $form = $this->getMarkForm($user_id);
611 if (!$form->isValid()) {
612 $this->gui
613 ->modal($this->lng->txt("exc_mark"))
614 ->form($form)
615 ->send();
616 return;
617 }
618
619 $marks_obj = new ilLPMarks($this->exercise->getId(), $user_id);
620 $marks_obj->setMark($form->getData("mark"));
621 $marks_obj->update();
623 }

References $user_id, getMarkForm(), ILIAS\Repository\lng(), and sendGradesModalRedirect().

+ Here is the call graph for this function:

◆ saveMultiFeedback()

ilExerciseManagementGUI::saveMultiFeedback ( array  $ids)

Save multi feedback.

Definition at line 1954 of file class.ilExerciseManagementGUI.php.

1954 : void
1955 {
1956 $files = $this->domain->multiFeedbackConfirmationRetrieval($this->assignment)
1957 ->getSelectedFiles($ids);
1958 $feedback_zip = $this->domain->assignment()->tutorFeedbackZip();
1959 $feedback_zip->saveMultiFeedbackFiles(
1960 $this->exercise,
1961 $this->assignment->getId(),
1962 $this->user->getId(),
1963 $files
1964 );
1965
1966 $this->tpl->setOnScreenMessage('success', $this->lng->txt("msg_obj_modified"), true);
1967 $this->ctrl->redirect($this, "members");
1968 }

References $files, ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ saveRemarkObject()

ilExerciseManagementGUI::saveRemarkObject ( )

Definition at line 650 of file class.ilExerciseManagementGUI.php.

650 : void
651 {
652 $user_id = $this->request->getParticipantId();
653 $form = $this->getRemarkForm($user_id);
654 if (!$form->isValid()) {
655 $this->gui
656 ->modal($this->lng->txt("trac_comment"))
657 ->form($form)
658 ->send();
659 return;
660 }
661
662 $marks_obj = new ilLPMarks($this->exercise->getId(), $user_id);
663 $marks_obj->setComment($form->getData("remark"));
664 $marks_obj->update();
666 }

References $user_id, getRemarkForm(), ILIAS\Repository\lng(), and sendGradesModalRedirect().

+ Here is the call graph for this function:

◆ saveStatus()

ilExerciseManagementGUI::saveStatus ( array  $a_data,
bool  $a_redirect = true 
)
protected
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1511 of file class.ilExerciseManagementGUI.php.

1514 : void {
1515 $ilCtrl = $this->ctrl;
1516 $saved_for = array();
1517 foreach ($a_data as $ass_id => $users) {
1518 $ass = ($ass_id < 0)
1519 ? $this->assignment
1520 : new ilExAssignment($ass_id);
1521 foreach ($users as $user_id => $values) {
1522 // this will add team members if available
1523 // $user_id is only the ID of one team member here,
1524 // $sub_user_id will be all team members
1525 $submission = new ilExSubmission($ass, $user_id);
1526 foreach ($submission->getUserIds() as $sub_user_id) {
1527 $uname = ilObjUser::_lookupName($sub_user_id);
1528 $saved_for[$sub_user_id] = $uname["lastname"] . ", " . $uname["firstname"];
1529
1530 $member_status = $ass->getMemberStatus($sub_user_id);
1531
1532 // see bug #22566
1533 $status = $values["status"];
1534 if ($status == "") {
1535 $status = self::GRADE_NOT_GRADED;
1536 }
1537 $member_status->setStatus($status);
1538 if (array_key_exists("mark", $values)) {
1539 $member_status->setMark($values["mark"]);
1540 }
1541 if (array_key_exists("notice", $values)) {
1542 $member_status->setNotice($values["notice"]);
1543 }
1544 $member_status->update();
1545 }
1546 }
1547 }
1548
1549 $save_for_str = "";
1550 if ($saved_for !== []) {
1551 $save_for_str = "(" . implode(" - ", $saved_for) . ")";
1552 }
1553
1554 if ($a_redirect) {
1555 $this->tpl->setOnScreenMessage('success', $this->lng->txt("exc_status_saved") . " " . $save_for_str, true);
1556 $ilCtrl->redirect($this, $this->getViewBack());
1557 }
1558 }

◆ saveStatusAllObject()

ilExerciseManagementGUI::saveStatusAllObject ( ?array  $a_selected = null,
bool  $a_redirect = true 
)
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1457 of file class.ilExerciseManagementGUI.php.

1460 : void {
1461 $user_ids = $this->listed_participants;
1462 $marks = $this->requested_marks;
1464 $status = $this->requested_status;
1465 $filtered_user_ids = $GLOBALS['DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
1466 'edit_submissions_grades',
1467 'edit_submissions_grades',
1468 $this->exercise->getRefId(),
1469 $user_ids
1470 );
1471
1472 $data = array();
1473 foreach ($filtered_user_ids as $user_id) {
1474 if (is_array($a_selected) &&
1475 !in_array($user_id, $a_selected)) {
1476 continue;
1477 }
1478
1479 $data[-1][$user_id] = array(
1480 "status" => $status[$user_id] ?? null
1481 );
1482
1483 if (isset($marks[$user_id])) {
1484 $data[-1][$user_id]["mark"] = $marks[$user_id];
1485 }
1486 if (isset($notices[$user_id])) {
1487 $data[-1][$user_id]["notice"] = $notices[$user_id];
1488 }
1489 }
1490 $this->saveStatus($data, $a_redirect);
1491 }
saveStatus(array $a_data, bool $a_redirect=true)

Referenced by membersApplyObject().

+ Here is the caller graph for this function:

◆ saveStatusParticipantObject()

ilExerciseManagementGUI::saveStatusParticipantObject ( ?array  $selected_ass_ids = null)

Save assignment status (participant view)

Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1424 of file class.ilExerciseManagementGUI.php.

1424 : void
1425 {
1426 $ilCtrl = $this->ctrl;
1427
1428 $member_id = $this->requested_part_id;
1429 $data = array();
1430 $marks = $this->requested_marks;
1431 $status = $this->requested_status;
1433 foreach ($this->listed_ass_ids as $ass_id) {
1434 if (is_array($selected_ass_ids) &&
1435 !in_array($ass_id, $selected_ass_ids)) {
1436 continue;
1437 }
1438
1439 $data[$ass_id][$member_id] = array(
1440 "status" => $status[$ass_id] ?? ""
1441 );
1442 if (isset($marks[$ass_id])) {
1443 $data[$ass_id][$member_id]["mark"] = $marks[$ass_id];
1444 }
1445 if (isset($notices[$ass_id])) {
1446 $data[$ass_id][$member_id]["notice"] = $notices[$ass_id];
1447 }
1448 }
1449
1450 $ilCtrl->setParameter($this, "part_id", $member_id); // #17629
1451 $this->saveStatus($data);
1452 }

References $ass_id, and $data.

◆ saveStatusSelectedObject()

ilExerciseManagementGUI::saveStatusSelectedObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1496 of file class.ilExerciseManagementGUI.php.

1496 : void
1497 {
1498 //$members = $this->getMultiActionUserIds();
1499 if ($this->assignment !== null) {
1500 $this->saveStatusAllObject($this->selected_participants);
1501 } else {
1502 $this->saveStatusParticipantObject($this->selected_ass_ids);
1503 }
1504 }
saveStatusParticipantObject(?array $selected_ass_ids=null)
Save assignment status (participant view)

◆ selectAssignmentObject()

ilExerciseManagementGUI::selectAssignmentObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1061 of file class.ilExerciseManagementGUI.php.

1061 : void
1062 {
1064 $ctrl->setParameter($this, "ass_id", $this->requested_ass_id);
1065 $ctrl->redirect($this, "members");
1066 }
setParameter(object $a_gui_obj, string $a_parameter, $a_value)
@inheritDoc
redirect(object $a_gui_obj, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false)
@inheritDoc

References ilCtrl\redirect(), and ilCtrl\setParameter().

+ Here is the call graph for this function:

◆ selectParticipantObject()

ilExerciseManagementGUI::selectParticipantObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1198 of file class.ilExerciseManagementGUI.php.

1198 : void
1199 {
1201 $ctrl->setParameter($this, "part_id", $this->requested_part_id);
1202 $ctrl->redirect($this, "showParticipant");
1203 }

References ilCtrl\redirect(), and ilCtrl\setParameter().

+ Here is the call graph for this function:

◆ sendGradesModalRedirect()

ilExerciseManagementGUI::sendGradesModalRedirect ( )
protected

Definition at line 668 of file class.ilExerciseManagementGUI.php.

668 : void
669 {
670 $target = $this->ctrl->getLinkTarget($this, "showGradesOverview");
671 $this->gui->send("<script>window.location.href = '" . $target . "';</script>");
672 }

References ILIAS\Scripts\PHPStan\$target, and ILIAS\Repository\ctrl().

Referenced by saveMarkObject(), and saveRemarkObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sendGradingNotificationObject()

ilExerciseManagementGUI::sendGradingNotificationObject ( )

Definition at line 2400 of file class.ilExerciseManagementGUI.php.

2400 : void
2401 {
2402
2403 $ass_id = $this->request->getAssId();
2404 $selected_users = $this->request->getSelectedParticipants();
2405
2406 $graded_users = array_filter($selected_users, function ($user_id) {
2407 return $this->assignment->getMemberStatus($user_id)->getStatus() !== "notgraded";
2408 });
2409
2410 if (count($graded_users) === 0) {
2411 $this->tpl->setOnScreenMessage("failure", $this->lng->txt("exc_no_graded_mem_selected"), true);
2412 $this->ctrl->redirect($this, $this->getViewBack());
2413 }
2414
2415 $not = new ilExerciseMailNotification();
2417 $not->setAssignmentId($ass_id);
2418 $not->setObjId($this->exercise->getId());
2419 $not->setRefId($this->exercise->getRefId());
2420 $not->setRecipients($graded_users);
2421 $not->send();
2422 $this->tpl->setOnScreenMessage("success", $this->lng->txt("exc_graded_mem_notified"), true);
2423 $this->ctrl->redirect($this, $this->getViewBack());
2424 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References $ass_id, $user_id, ILIAS\Repository\ctrl(), ILIAS\Repository\lng(), and ilExerciseMailNotification\TYPE_GRADING_DONE.

+ Here is the call graph for this function:

◆ sendMembersObject()

ilExerciseManagementGUI::sendMembersObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 1357 of file class.ilExerciseManagementGUI.php.

1357 : void
1358 {
1359 $members = $this->getMultiActionUserIds();
1360
1361 $this->tpl->setOnScreenMessage('success', $this->lng->txt("exc_sent"), true);
1362 if ($this->assignment !== null) {
1363 $this->exercise->sendAssignment($this->assignment, array_keys($members));
1364 $this->ctrl->redirect($this, "members");
1365 } else {
1366 foreach ($members as $ass_id => $users) {
1367 $this->exercise->sendAssignment(new ilExAssignment($ass_id), $users);
1368 }
1369 $this->ctrl->setParameter($this, "part_id", $this->requested_part_id); // #17629
1370 $this->ctrl->redirect($this, "showParticipant");
1371 }
1372 }

References $ass_id, ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ setBackToMembers()

ilExerciseManagementGUI::setBackToMembers ( )
protected

Definition at line 2362 of file class.ilExerciseManagementGUI.php.

2362 : void
2363 {
2364 //tabs
2365 $this->tabs_gui->clearTargets();
2366 $this->tabs_gui->setBackTarget(
2367 $this->lng->txt("back"),
2368 $this->ctrl->getLinkTarget($this, "members")
2369 );
2370 }

References ILIAS\Repository\lng().

Referenced by compareTextAssignmentsObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFailedObject()

ilExerciseManagementGUI::setFailedObject ( )
protected

Definition at line 2426 of file class.ilExerciseManagementGUI.php.

2426 : void
2427 {
2428 $members = $this->getMultiActionUserIds();
2429 $done = false;
2430 if ($this->assignment !== null) {
2431 foreach (array_keys($members) as $mem) {
2432 $done = true;
2433 $this->setSingleStatus($this->assignment->getId(), $mem, "failed");
2434 }
2435 if ($done) {
2436 $this->tpl->setOnScreenMessage("success", $this->lng->txt("msg_obj_modified"), true);
2437 }
2438 }
2439 $this->ctrl->redirect($this, "members");
2440 }
setSingleStatus($ass_id, $part_id, $status)

References ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ setIndividualDeadlineObject()

ilExerciseManagementGUI::setIndividualDeadlineObject ( )
protected
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 2179 of file class.ilExerciseManagementGUI.php.

2179 : void
2180 {
2181 // this will only get called if no selection
2182 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("select_one"));
2183
2184 if ($this->assignment !== null) {
2185 $this->membersObject();
2186 } else {
2187 $this->showParticipantObject();
2188 }
2189 }

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ setPassedObject()

ilExerciseManagementGUI::setPassedObject ( )
protected

Definition at line 2442 of file class.ilExerciseManagementGUI.php.

2442 : void
2443 {
2444 $members = $this->getMultiActionUserIds();
2445 $done = false;
2446 if ($this->assignment !== null) {
2447 foreach (array_keys($members) as $mem) {
2448 $done = true;
2449 $this->setSingleStatus($this->assignment->getId(), $mem, "passed");
2450 }
2451 if ($done) {
2452 $this->tpl->setOnScreenMessage("success", $this->lng->txt("msg_obj_modified"), true);
2453 }
2454 }
2455 $this->ctrl->redirect($this, "members");
2456 }

References ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ setSingleStatus()

ilExerciseManagementGUI::setSingleStatus (   $ass_id,
  $part_id,
  $status 
)
protected

Definition at line 2458 of file class.ilExerciseManagementGUI.php.

2458 : void
2459 {
2460 $ass = new ilExAssignment($ass_id);
2461 $submission = new ilExSubmission($ass, $part_id);
2462 $member_status = $ass->getMemberStatus($part_id);
2463 $member_status->setStatus($status);
2464 $member_status->update();
2465 }

References $ass_id.

◆ showClipboardObject()

ilExerciseManagementGUI::showClipboardObject ( )

Definition at line 1007 of file class.ilExerciseManagementGUI.php.

1007 : void
1008 {
1009 $rep_search = new ilRepositorySearchGUI();
1010 $rep_search->setCallback($this, 'addMembersObject');
1011 $this->ctrl->setReturn($this, 'members');
1012 $this->ctrl->forwardCommand($rep_search);
1013 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ showGradesOverviewObject()

ilExerciseManagementGUI::showGradesOverviewObject ( )

Definition at line 1205 of file class.ilExerciseManagementGUI.php.

1205 : void
1206 {
1207 $tpl = $this->tpl;
1208 $ilToolbar = $this->toolbar;
1209 $ilCtrl = $this->ctrl;
1210 $lng = $this->lng;
1211
1212 $this->addSubTabs("grades");
1213
1214 $mem_obj = new ilExerciseMembers($this->exercise);
1215 $mems = $mem_obj->getMembers();
1216
1217 $mems = $GLOBALS['DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
1218 'edit_submissions_grades',
1219 'edit_submissions_grades',
1220 $this->exercise->getRefId(),
1221 $mems
1222 );
1223 if (count($mems) > 0) {
1224 $ilToolbar->addButton(
1225 $lng->txt("exc_export_excel"),
1226 $ilCtrl->getLinkTarget($this, "exportExcel")
1227 );
1228 }
1229
1230 $this->ctrl->setParameter($this, "vw", self::VIEW_GRADES);
1231
1232 $assignments = ilExAssignment::getInstancesByExercise($this->exercise->getId());
1233 $grades_table = $this->gui->gradesTableBuilder(
1234 $this->exercise,
1235 $mem_obj,
1236 $assignments,
1237 $this,
1238 "showGradesOverview"
1239 )->getTable();
1240 if ($grades_table->handleCommand()) {
1241 return;
1242 }
1243
1244 $tpl->setContent($grades_table->render());
1245 }
Class ilExerciseMembers.

References $GLOBALS, $lng, ILIAS\News\Common\Table\$tpl, ILIAS\Repository\ctrl(), ilExAssignment\getInstancesByExercise(), and ILIAS\UICore\GlobalTemplate\setContent().

+ Here is the call graph for this function:

◆ showMultiFeedbackConfirmationTableObject()

ilExerciseManagementGUI::showMultiFeedbackConfirmationTableObject ( )

Show multi feedback confirmation table.

Definition at line 1909 of file class.ilExerciseManagementGUI.php.

1909 : void
1910 {
1911 $tpl = $this->tpl;
1912
1913 $this->addSubTabs("assignment");
1914
1915 $table = $this->gui->multiFeedbackConfirmationTableBuilder(
1916 $this->assignment,
1917 $this,
1918 "showMultiFeedbackConfirmationTable"
1919 )->getTable();
1920
1921 if ($table->handleCommand()) {
1922 return;
1923 }
1924
1925 $this->gui->button(
1926 $this->lng->txt("exc_save_all"),
1927 $this->ctrl->getLinkTarget($this, "saveAllMultiFeedback")
1928 )->toToolbar();
1929
1930 $tpl->setContent($table->render());
1931 }

References ILIAS\News\Common\Table\$tpl, ILIAS\Repository\lng(), and ILIAS\UICore\GlobalTemplate\setContent().

+ Here is the call graph for this function:

◆ showMultiFeedbackObject()

ilExerciseManagementGUI::showMultiFeedbackObject ( ?FormAdapterGUI  $form = null)

Definition at line 1853 of file class.ilExerciseManagementGUI.php.

1855 : void {
1856 $lng = $this->lng;
1857 $tpl = $this->tpl;
1858
1859 $this->tpl->setOnScreenMessage('info', $lng->txt("exc_multi_feedb_info"));
1860
1861 $this->addSubTabs("assignment");
1862
1863 // #13719
1864 $this->gui->button(
1865 $this->lng->txt("exc_download_zip_structure"),
1866 $this->ctrl->getLinkTarget($this, "downloadMultiFeedbackZip")
1867 )->toToolbar();
1868
1869 if ($form === null) {
1870 $form = $this->getMultiFeedbackForm($this->assignment->getId());
1871 }
1872
1873 $tpl->setContent($form->render());
1874 }
setOnScreenMessage(string $type, string $a_txt, bool $a_keep=false)
Set a message to be displayed to the user.

◆ showParticipantApplyObject()

ilExerciseManagementGUI::showParticipantApplyObject ( )

Definition at line 1163 of file class.ilExerciseManagementGUI.php.

1163 : void
1164 {
1166 $this,
1167 "showParticipant",
1168 $this->exercise,
1169 $this->requested_part_id,
1170 $this->feedback_gui
1171 );
1172 $exc_tab->resetOffset();
1173 $exc_tab->writeFilterToSession();
1174
1175 $this->showParticipantObject();
1176 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

◆ showParticipantObject()

ilExerciseManagementGUI::showParticipantObject ( )

Show Participant.

Definition at line 1071 of file class.ilExerciseManagementGUI.php.

1071 : void
1072 {
1073 $tpl = $this->tpl;
1074 $ilToolbar = $this->toolbar;
1075 $ilCtrl = $this->ctrl;
1076 $lng = $this->lng;
1078
1079 $this->addSubTabs("participant");
1080 $this->ctrl->setParameter($this, "ass_id", "0");
1081
1082 // participant selection
1083 $members = $this->exercise->members_obj->getMembers();
1084
1086 'edit_submissions_grades',
1087 'edit_submissions_grades',
1088 $this->exercise->getRefId(),
1089 $members
1090 );
1091
1092
1093 if (count($members) == 0) {
1094 $this->tpl->setOnScreenMessage('info', $lng->txt("exc_no_participants"));
1095 return;
1096 }
1097
1098 $mems = array();
1099 foreach ($members as $mem_id) {
1100 if (ilObject::_lookupType($mem_id) == "usr") {
1101 $name = ilObjUser::_lookupName($mem_id);
1102 if (trim($name["login"]) != "") { // #20073
1103 $mems[$mem_id] = $name;
1104 }
1105 }
1106 }
1107
1108 $mems = ilArrayUtil::sortArray($mems, "lastname", "asc", false, true);
1109
1110 if ($this->requested_part_id == 0 && $mems !== [] && key($mems) > 0) {
1111 $ilCtrl->setParameter($this, "part_id", key($mems));
1112 $ilCtrl->redirect($this, "showParticipant");
1113 }
1114
1115 $current_participant = $this->requested_part_id;
1116
1117 reset($mems);
1118 if (count($mems) > 1) {
1119 $options = array();
1120 foreach ($mems as $k => $m) {
1121 $options[$k] =
1122 $m["lastname"] . ", " . $m["firstname"] . " [" . $m["login"] . "]";
1123 }
1124 $si = new ilSelectInputGUI($this->lng->txt("exc_participant"), "part_id");
1125 $si->setOptions($options);
1126 $si->setValue($current_participant);
1127 $ilToolbar->addStickyItem($si, true);
1128
1129 $this->gui->button(
1130 $this->lng->txt("select"),
1131 "selectParticipant"
1132 )->submit()->toToolbar(true);
1133 }
1134
1135 if ($mems !== []) {
1136 $this->ctrl->setParameter($this, "vw", self::VIEW_PARTICIPANT);
1137 $this->ctrl->setParameter($this, "part_id", $current_participant);
1138
1139 $ass = ilExAssignment::getInstancesByExercise($this->exercise->getId());
1140
1141 if (count($ass) > 0) {
1142 $ilToolbar->addSeparator();
1143 $ilToolbar->setFormAction($ilCtrl->getFormAction($this));
1144 $ilToolbar->addFormButton($lng->txt("download_all_returned_files"), "downloadSubmissions");
1145 }
1146
1148 $this,
1149 "showParticipant",
1150 $this->exercise,
1151 $current_participant,
1152 $this->feedback_gui
1153 );
1154 $tpl->setContent($part_tab->getHTML() .
1155 $this->initIndividualDeadlineModal());
1156 } else {
1157 $this->tpl->setOnScreenMessage('info', $this->lng->txt("exc_no_assignments_available"));
1158 }
1159 }
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)
filterUserIdsByRbacOrPositionOfCurrentUser(string $rbac_perm, string $pos_perm, int $ref_id, array $user_ids)

References $lng, ILIAS\UI\Implementation\Component\Input\Field\$options, ILIAS\News\Common\Table\$tpl, ilObjUser\_lookupName(), ilObject\_lookupType(), ILIAS\Repository\ctrl(), ilOrgUnitPositionAndRBACAccessHandler\filterUserIdsByRbacOrPositionOfCurrentUser(), ilExAssignment\getInstancesByExercise(), ILIAS\Repository\lng(), ILIAS\UICore\GlobalTemplate\setContent(), and ilArrayUtil\sortArray().

+ Here is the call graph for this function:

◆ showParticipantResetObject()

ilExerciseManagementGUI::showParticipantResetObject ( )

Definition at line 1180 of file class.ilExerciseManagementGUI.php.

1180 : void
1181 {
1183 $this,
1184 "showParticipant",
1185 $this->exercise,
1186 $this->requested_part_id,
1187 $this->feedback_gui
1188 );
1189 $exc_tab->resetOffset();
1190 $exc_tab->resetFilter();
1191
1192 $this->showParticipantObject();
1193 }

◆ uploadMultiFeedbackObject()

ilExerciseManagementGUI::uploadMultiFeedbackObject ( )

Upload multi feedback file.

Definition at line 1895 of file class.ilExerciseManagementGUI.php.

1895 : void
1896 {
1897 // #11983
1898 $form = $this->getMultiFeedbackForm($this->assignment->getId());
1899 if ($form->isValid()) {
1900 $this->ctrl->redirect($this, "showMultiFeedbackConfirmationTable");
1901 }
1902
1903 $this->showMultiFeedbackObject($form);
1904 }
showMultiFeedbackObject(?FormAdapterGUI $form=null)

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ waitingDownloadObject()

ilExerciseManagementGUI::waitingDownloadObject ( )
Exceptions
ilExcUnknownAssignmentTypeException

Definition at line 348 of file class.ilExerciseManagementGUI.php.

348 : void
349 {
351 $ilCtrl = $this->ctrl;
352
353 $ilCtrl->setParameterByClass("ilExSubmissionFileGUI", "member_id", $this->requested_member_id);
354 $url = $ilCtrl->getLinkTargetByClass(array("ilExerciseHandlerGUI", "ilObjExerciseGUI", "ilExerciseManagementGUI", "ilExSubmissionFileGUI"), "downloadNewReturned");
355 $js_url = $ilCtrl->getLinkTargetByClass(array("ilExerciseHandlerGUI", "ilObjExerciseGUI", "ilExerciseManagementGUI", "ilExSubmissionFileGUI"), "downloadNewReturned", "", "", false);
356 $this->tpl->setOnScreenMessage('info', $lng->txt("exc_wait_for_files") . "<a href='$url'> " . $lng->txt('exc_download_files') . "</a><script>window.location.href ='" . $js_url . "';</script>");
357 $this->membersObject();
358 }
setParameterByClass(string $a_class, string $a_parameter, $a_value)
@inheritDoc

References $ctrl, $lng, membersObject(), ilCtrl\setParameterByClass(), and ilLanguage\txt().

+ Here is the call graph for this function:

Field Documentation

◆ $access

ilAccessHandler ilExerciseManagementGUI::$access
protected

Definition at line 64 of file class.ilExerciseManagementGUI.php.

◆ $ass_id

int ilExerciseManagementGUI::$ass_id = 0
protected

Definition at line 76 of file class.ilExerciseManagementGUI.php.

Referenced by addSubTabs().

◆ $assignment

ilExAssignment ilExerciseManagementGUI::$assignment = null
protected

Definition at line 70 of file class.ilExerciseManagementGUI.php.

◆ $ctrl

ilCtrl ilExerciseManagementGUI::$ctrl
protected

◆ $db

ilDBInterface ilExerciseManagementGUI::$db = null
protected

Definition at line 75 of file class.ilExerciseManagementGUI.php.

◆ $domain

ILIAS Exercise InternalDomainService ilExerciseManagementGUI::$domain
protected

Definition at line 55 of file class.ilExerciseManagementGUI.php.

Referenced by __construct().

◆ $done

bool ilExerciseManagementGUI::$done = false
protected

Definition at line 81 of file class.ilExerciseManagementGUI.php.

◆ $exercise

ilObjExercise ilExerciseManagementGUI::$exercise
protected

Definition at line 69 of file class.ilExerciseManagementGUI.php.

◆ $feedback_gui

ilExerciseSubmissionFeedbackGUI ilExerciseManagementGUI::$feedback_gui
protected

Definition at line 96 of file class.ilExerciseManagementGUI.php.

◆ $filter

array ilExerciseManagementGUI::$filter = []
protected

Definition at line 67 of file class.ilExerciseManagementGUI.php.

◆ $gui

InternalGUIService ilExerciseManagementGUI::$gui
protected

Definition at line 58 of file class.ilExerciseManagementGUI.php.

Referenced by __construct(), and executeCommand().

◆ $http

ILIAS HTTP Services ilExerciseManagementGUI::$http
protected

Definition at line 59 of file class.ilExerciseManagementGUI.php.

◆ $listed_ass_ids

array ilExerciseManagementGUI::$listed_ass_ids
protected

Definition at line 88 of file class.ilExerciseManagementGUI.php.

◆ $listed_participants

array ilExerciseManagementGUI::$listed_participants
protected

Definition at line 86 of file class.ilExerciseManagementGUI.php.

◆ $lng

ilLanguage ilExerciseManagementGUI::$lng
protected

◆ $log

ilLogger ilExerciseManagementGUI::$log
protected

Definition at line 72 of file class.ilExerciseManagementGUI.php.

◆ $notification

ILIAS Exercise Notification NotificationManager ilExerciseManagementGUI::$notification
protected

Definition at line 56 of file class.ilExerciseManagementGUI.php.

◆ $request

GUIRequest ilExerciseManagementGUI::$request
protected

Definition at line 95 of file class.ilExerciseManagementGUI.php.

Referenced by __construct().

◆ $requested_ass_id

int ilExerciseManagementGUI::$requested_ass_id = 0
protected

Definition at line 79 of file class.ilExerciseManagementGUI.php.

◆ $requested_comment

string ilExerciseManagementGUI::$requested_comment
protected

Definition at line 83 of file class.ilExerciseManagementGUI.php.

◆ $requested_filter_feedback

string ilExerciseManagementGUI::$requested_filter_feedback
protected

Definition at line 94 of file class.ilExerciseManagementGUI.php.

◆ $requested_filter_status

string ilExerciseManagementGUI::$requested_filter_status
protected

Definition at line 93 of file class.ilExerciseManagementGUI.php.

◆ $requested_group_members

array ilExerciseManagementGUI::$requested_group_members
protected

Definition at line 92 of file class.ilExerciseManagementGUI.php.

◆ $requested_idl_id

string ilExerciseManagementGUI::$requested_idl_id
protected

Definition at line 80 of file class.ilExerciseManagementGUI.php.

◆ $requested_learning_comments

array ilExerciseManagementGUI::$requested_learning_comments
protected

Definition at line 82 of file class.ilExerciseManagementGUI.php.

◆ $requested_marks

array ilExerciseManagementGUI::$requested_marks
protected

Definition at line 89 of file class.ilExerciseManagementGUI.php.

◆ $requested_member_id

int ilExerciseManagementGUI::$requested_member_id = 0
protected

Definition at line 77 of file class.ilExerciseManagementGUI.php.

◆ $requested_part_id

int ilExerciseManagementGUI::$requested_part_id = 0
protected

Definition at line 78 of file class.ilExerciseManagementGUI.php.

Referenced by addSubTabs(), and downloadSubmissionsObject().

◆ $requested_status

array ilExerciseManagementGUI::$requested_status
protected

Definition at line 90 of file class.ilExerciseManagementGUI.php.

◆ $requested_tutor_notices

array ilExerciseManagementGUI::$requested_tutor_notices
protected

Definition at line 91 of file class.ilExerciseManagementGUI.php.

◆ $requested_user_login

string ilExerciseManagementGUI::$requested_user_login
protected

Definition at line 84 of file class.ilExerciseManagementGUI.php.

◆ $selected_ass_ids

array ilExerciseManagementGUI::$selected_ass_ids
protected

Definition at line 87 of file class.ilExerciseManagementGUI.php.

◆ $selected_participants

array ilExerciseManagementGUI::$selected_participants
protected

Definition at line 85 of file class.ilExerciseManagementGUI.php.

Referenced by downloadSubmissionsObject().

◆ $service

InternalService ilExerciseManagementGUI::$service
protected

Definition at line 74 of file class.ilExerciseManagementGUI.php.

Referenced by __construct().

◆ $tabs_gui

ilTabsGUI ilExerciseManagementGUI::$tabs_gui
protected

Definition at line 62 of file class.ilExerciseManagementGUI.php.

Referenced by addSubTabs(), and executeCommand().

◆ $task_factory

TaskFactory ilExerciseManagementGUI::$task_factory
protected

Definition at line 71 of file class.ilExerciseManagementGUI.php.

◆ $toolbar

ilToolbarGUI ilExerciseManagementGUI::$toolbar
protected

Definition at line 68 of file class.ilExerciseManagementGUI.php.

Referenced by membersObject().

◆ $tpl

ilGlobalTemplateInterface ilExerciseManagementGUI::$tpl
protected

Definition at line 54 of file class.ilExerciseManagementGUI.php.

Referenced by membersObject().

◆ $tutor_feedback_file

TutorFeedbackFileManager ilExerciseManagementGUI::$tutor_feedback_file
protected

Definition at line 57 of file class.ilExerciseManagementGUI.php.

◆ $ui_factory

Factory ilExerciseManagementGUI::$ui_factory
protected

Definition at line 65 of file class.ilExerciseManagementGUI.php.

◆ $ui_renderer

Renderer ilExerciseManagementGUI::$ui_renderer
protected

Definition at line 66 of file class.ilExerciseManagementGUI.php.

◆ $user

ilObjUser ilExerciseManagementGUI::$user
protected

Definition at line 73 of file class.ilExerciseManagementGUI.php.

Referenced by getReportPanel().

◆ $zip

ZipAdapter ilExerciseManagementGUI::$zip
protected

Definition at line 53 of file class.ilExerciseManagementGUI.php.

◆ FEEDBACK_FULL_SUBMISSION

const ilExerciseManagementGUI::FEEDBACK_FULL_SUBMISSION = "submission_feedback"

Definition at line 48 of file class.ilExerciseManagementGUI.php.

◆ FEEDBACK_ONLY_SUBMISSION

const ilExerciseManagementGUI::FEEDBACK_ONLY_SUBMISSION = "submission_only"

Definition at line 47 of file class.ilExerciseManagementGUI.php.

◆ GRADE_FAILED

const ilExerciseManagementGUI::GRADE_FAILED = "failed"

Definition at line 52 of file class.ilExerciseManagementGUI.php.

◆ GRADE_NOT_GRADED

const ilExerciseManagementGUI::GRADE_NOT_GRADED = "notgraded"

◆ GRADE_PASSED

const ilExerciseManagementGUI::GRADE_PASSED = "passed"

Definition at line 51 of file class.ilExerciseManagementGUI.php.

◆ VIEW_ASSIGNMENT

const ilExerciseManagementGUI::VIEW_ASSIGNMENT = 1

Definition at line 43 of file class.ilExerciseManagementGUI.php.

◆ VIEW_GRADES

const ilExerciseManagementGUI::VIEW_GRADES = 3

Definition at line 45 of file class.ilExerciseManagementGUI.php.

Referenced by getViewBack().

◆ VIEW_PARTICIPANT

const ilExerciseManagementGUI::VIEW_PARTICIPANT = 2

Definition at line 44 of file class.ilExerciseManagementGUI.php.

Referenced by getViewBack().


The documentation for this class was generated from the following file: