Feature Wiki
Schede
Plugin Hook for Assignments
Panoramica della pagina
[Nascondi]1 Initial Problem
New types of assignments currently need to be implemented as core features. There is no option to extend the list of assignment types for the exercise.
Two examples from currently running projects show the application of such a plugin hook:
A new assignment type realizes programming tasks that are evaluated by an external server. The students program is provided as a set of files that must follow certain naming conventions. When submitted, the files are immediately sent for evaluation.
Another assignment type is intended to write multi-page essays online. The editor for this should be able to intercept network interruptions, keep change logs and offer additional functions such as notes. The correction must support online comments in the text and offer a management of first and second correctors.
These application areas (computer science, law) are special and would overload the general functionality of the exercise. Since the exercise already has the structure to support different assignment types, the support of plugins is a logical progression.
2 Conceptual Summary
The exercise component should be extended by a hook for assignment plugins. The plugin interface builds on the existing definition of assignment types. A plugin for the new hook provides a list of new assignment types (e.g. for individual users or teams). When creating an assignment, the types of plugins are additionally selectable.
The assignment type of a plugin can add settings to the form in the assignment editor. It can add tabs to the editor and remove existing ones.
- Work instruction: supplement
- Your submission: supplement or replace
- Tutor's evaluation: supplement
- Sample solution: replace
Under Submissions and Grades the list of participants can be filtered by the plugin, e.g. as a result of the corrector management. In the actions menu of the submissions, additional entries can be added or removed, e.g. to open a special feedback screen. Alternatively, the whole sub tab "Assignment view" can be replaced by the plugin if its assignment is selected.
3 User Interface Modifications
3.1 List of Affected Views
- Editing (settings) of an assignment
- Overview of assignments
- Submissions and Grades / Participant View: Actions menu
- Submissions and Grades / Assignment View: Actions menu or whole content
3.2 User Interface Details







3.3 New User Interface Concepts
There are no new UI elements defined by the plugin hook. A plugin gets the possibility to modify existing views.
4 Technical Information
Each assignment type must provide a type class and a GUI class that implement the ilExAssignmentTypeInterface and ilExAssignmentTypeGUIInterface interfaces. The following functions need to be added to the interfaces.
- deleteSpecificProperties
- filterMembersForGrading
- getOverviewAdditionalInstructions
- hasOwnOverviewSubmission
- getOverviewSubmission
- getOverviewAdditionalFeedback
- hasOwnOverviewGeneralFeedback
- getOverviewGeneralFeedback
- hasOwnGradingByAssignment
- showGradingByAssignment
- modifyGradingActionItems
- ilExAssignment will remove the functions setType, getType and isValidType. It will add the function setAssignmentType that sets an assignment type object.
- ilExAssignmentTypes will remove the functions getAllIds, isValidId, getById, getIdsForSubmissionType and will add getByStringIdentifier, getStringIdentifiersForSubmissionType. The function getByLegacyId will be used by ilExerciseDataSet to map IDs in old export files to the new submissionTypes.
- ilExAssignmentTypesGUI will remove getById and getIdForClassName and will add getByStringIdentifier and getByClassName.
- getAssignmentTypeStringIdentifiers
- getAssignmentTypeByStringIdentifier
- getAssignmentTypeGuiByStringIdentifier
- getAssignmentTypeGuiClassNames
A plugin may be inactive or missing. In this case ilExAssignmentTypes and ilExAssignmentTypeGUIInterface will provide dummy classes ilExAssTypeInactive and ilExAssTypeInactiveGUI if no active type is found for a given string identifier.
5 Privacy Information
No extra data is processed through the plugin hook. Data protection must be respected by the developers of the plugins and the installation administrators. Without plugins ILIAS behaves as in the standard.
6 Security Implications
Security must be respected by the developers of the plugins. The plugin hook does not affect security. Without plugins ILIAS behaves as in the standard.
7 Contact
- Author of the Request: Neumann, Fred [fneumann] (can provide a pull request)
- Maintainer: Killing, Alexander [alex]
- Implementation of the feature is done by: {The maintainer must add the name of the implementing developer.}
8 Funding
- Funding can be provided by the EDUTIEK project
9 Discussion
Kunkel, Matthias [mkunkel], 21 MAY 2021 : We had a workshop today together with the maintainer of the exercise component, Alex Killing. Due to planned refactorings in the component he rejected the introduction of a plugin slot for assignments in the current state of the code. First, there have to be made necessary refactorings of the component before introducing such a slot. This won't be possible before ILIAS 9 due to the urgent and time-consuming refactorings for PHP8 in ILIAS 8.
10 Implementation
{The maintainer has to give a description of the final implementation and add screenshots if possible.}
Test Cases
- {Test case number linked to Testrail} : {test case title}
Approval
Approved at {date} by {user}.
Ultima modifica: 2. Ago 2021, 09:01, Kunkel, Matthias [mkunkel]