Skip to content

[QTI] Inline Choice interaction #6178

Description

@AlexVelezLl

❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Overview

Add the Inline Choice question type to the QTI editor. An author writes a passage and inserts dropdowns inline, and each dropdown has its own plain-text options and one correct answer (#5927).

It is the first question type that puts several interactions in one item, and the first placed inside rich text content. The QTI editor core has to learn to carry and score more than one response before the editor itself can be built on top of it.

Scope

Included

  • Multi-response support in the QTI editor core, and generated response processing that scores an item across all its responses: correct responses divided by total responses.
  • Extension seams on TipTapEditor ([QTI] Update TipTapEditor to support custom insert node behavior defined on parent component #6176), so the QTI editor can contribute an inline node and an insert action without TipTapEditor knowing about QTI.
  • The inline choice interaction plugin: its descriptor, parsing, XML assembly and validation; the chip node and Insert action in the passage's TipTapEditor; and the editor UI.

Excluded

  • Scoring strategies other than averaging (weights, all-or-nothing).
  • Mixing inline choice with other interaction types in one item.
  • Gap Match, the other passage-based type in QTI Question Authoring in Kolibri Studio #5927.
  • Learner preview inside Studio.

Strategy

Testing Requirements

Beyond each task's unit tests, the project is done when a channel with an inline choice question (several dropdowns) publishes and renders in Kolibri's QTI viewer, and a partially correct answer produces the expected SCORE.

AI usage

I used Claude Code to draft this tracking issue and its tasks. It read the QTI editor core, the backend QTI validation and publishing path, and Kolibri's QTI viewer to check feasibility. I decided the scope and the split, and reviewed and edited the text.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions