Feature Wiki

Information about planned and released features

Tabs

Plugin Hook for Assignments

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.

In the overview of the exercise, individual sections of an assignment can be supplemented or replaced entirely:

  • 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

An assignment type plugin can modify the following pages of an exercise:

  • 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

Example editing of an assignment: The declaration of independence is a new form element defined by the plugin. Additional tabs for correction settings etc. are added by the plugin, and the standard tab for work instruction files is hidden.
Example work instructions: The files provided by the plugin are displayed with an additional information.
Example "Your Submission": the plugin shows an immediate status messages from the correction server. The button "Change submitted Solution" leads to a separate upload page created by the plugin.
Example screen for plugin specific submission. Required files must be uploaded with a defined name, maximum size and encoding.
Example "Evaluation by Tutor": The plugin adds status information from the correction service. A button is added to view extended feedback.
Example "Sample Solution": The default display is replaced by a list of files managed by the plugin.
Example "Submissions and Grades": Feedback by text is replaced by the plugin with its own modal, in which a plagiarism marker can also be set.

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.
 

ilExAssignmentTypeInterface

  • deleteSpecificProperties
  • filterMembersForGrading

ilExAssignmentTypeGUIInterface

  • getOverviewAdditionalInstructions
  • hasOwnOverviewSubmission
  • getOverviewSubmission
  • getOverviewAdditionalFeedback
  • hasOwnOverviewGeneralFeedback
  • getOverviewGeneralFeedback
  • hasOwnGradingByAssignment
  • showGradingByAssignment
  • modifyGradingActionItems

The already deprecated integer IDs of assignment types must be replaced by string identifiers to avoid conflicts between different plugins.

  • 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.
A database update step is needed to do migrate the integer IDs to string identifiers.

An assignment type plugin class must extend ilAssignmentHookPlugin and implement the following abstract functions:

  • 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

8 Funding

If you are interest in funding this feature, please add your name and institution to this list.

  • 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 cases completed at {date} by {user}

  • {Test case number linked to Testrail} : {test case title}

Approval

Approved at {date} by {user}.

Last edited: 2. Aug 2021, 09:01, Kunkel, Matthias [mkunkel]