QTI editor drops prefixed MathML from a question prompt on save
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- javascript
- 領域
- frontend
調査の方向性
Start with contentcuration/contentcuration/frontend/shared/views/QTIEditor/serialization/xml.js, especially the adoptNode code at lines 99–103, and trace how the prompt reaches TipTap and is serialized back to raw_data. Reproduce the prefixed-MathML case described in the issue, then add an end-to-end test for opening and saving the item. Done means the formula remains MathML in raw_data and the saved item passes the QTI XSD check.
索引モデルが issue の本文から書いたものです。
説明
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Observed behavior
- A QTI item whose prompt carries MathML under a prefix (
xmlns:mon the root,<m:math>in the prompt) loses the formula on its first save from the editor. Only its text survives. - Source prompt:
<qti-prompt>solve <m:math><m:mi>x</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:math>.</qti-prompt> - Saved prompt after typing at the end:
<qti-prompt><p>solve x+1. Edited</p></qti-prompt> adoptNodere-creates foreign elements withcreateElementNS(namespace, node.tagName), so the HTML handed to TipTap contains<m:math>, which TipTap does not recognise as math.
Expected behavior
- The formula in the prompt survives the edit.
User-facing consequences
- Imported items that use prefixed MathML silently lose their formulas the first time anyone edits the question text, and publish without them.
Steps to reproduce
- Seed an exercise with a QTI item whose root declares
xmlns:m="http://www.w3.org/1998/Math/MathML"and whose single-choice prompt contains<m:math>…</m:math>. - Open the exercise's Questions tab, click "Edit" on the item, type at the end of the question text, click "Close".
- Read the saved
raw_data: the<m:math>element is gone.
Seen on unstable at 90c5b61902187e722c055cca8eb1137a29a30ace, during manual QA for #6290.
Acceptance Criteria
- Editing the prompt of an item with
<m:math>(prefixed MathML) saves a prompt that still contains the formula as MathML. - The saved item passes the QTI XSD check.
- A test covers it, from opening the item to the emitted
raw_data.
AI usage
Claude Code found this during manual QA of #6290 and drafted the issue.
- 主要言語
- Python
- スター
- 192
- フォーク
- 310
- 平均マージ
- 2日 17時間
- マージ済み PR(30日)
- 69
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
learningequality/studio のほかの issue
-
DEV: frontend P3 - low
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
learningequality/studio#5868 ·
メンテナーはふだん 1 日以内に返信
-
TAG: tech update / debt
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
learningequality/studio#2245 ·
メンテナーはふだん 1 日以内に返信
-
bug DEV: frontend P0 - critical
難易度 3/5 1〜2日 初心者へのやさしさ 22/100
learningequality/studio#6316 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 1〜2日 初心者へのやさしさ 35/100
learningequality/studio#6315 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 1〜2日 初心者へのやさしさ 25/100
learningequality/studio#6314 ·
メンテナーはふだん 1 日以内に返信
learningequality/studio の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
PolicyEngine/policyengine-us#10262 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
kellyjonbrazil/jc#788 ·
メンテナーはふだん 2 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
`/search.json` ignores the documented `editions.sort` parameter対応中かも @PranavD2905 が今日担当しました。 オープンAffects: Server Good First Issue Module: Solr Needs: Triage Theme: Public APIs Theme: Search
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
internetarchive/openlibrary#13989 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug P2: misleading query
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
jeffknupp/association#478 ·