Fix pb-message boilerplate templates ignored by generic container - #3157
Fix pb-message boilerplate templates ignored by generic container#3157salman2013 wants to merge 2 commits into
Conversation
Buttons for blocks declared via StudioContainerWithNestedXBlocksMixin (e.g. pb-message complete/incomplete/max-attempts) were ignoring the boilerplate_name from their template spec, so every variant always created the default block. Two fixes in AddComponent.tsx: - Pass firstTemplate?.boilerplateName from the button onClick to handleCreateNewXBlock so the selected variant is forwarded. - Forward it as boilerplate in the handleCreateNewCourseXBlock call inside the default handler branch so the backend applies the correct template. Closes openedx#3156 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Thanks for the pull request, @salman2013! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3157 +/- ##
=======================================
Coverage 95.79% 95.79%
=======================================
Files 1398 1398
Lines 33473 33473
Branches 7886 7875 -11
=======================================
Hits 32064 32064
Misses 1350 1350
Partials 59 59 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Fixes creation of container-declared component variants (e.g., Problem Builder pb-message complete/incomplete/max-attempts) so the selected template’s boilerplate_name is forwarded into the create-XBlock API call, instead of always creating the default block.
Changes:
- Forward
firstTemplate?.boilerplateNamefrom generic container “Add Component” buttons intohandleCreateNewXBlock(...). - Include the forwarded value as
boilerplatein the generic/defaulthandleCreateNewCourseXBlock(...)request payload. - Add a regression test asserting boilerplate is passed for a generic container block button click.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
src/course-unit/add-component/AddComponent.tsx |
Wires template boilerplate through the generic container button click path into the create-XBlock request. |
src/course-unit/add-component/AddComponent.test.tsx |
Adds a test ensuring the boilerplate name is included in the create-XBlock call for a generic container block. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| handleCreateNewCourseXBlock({ | ||
| type, | ||
| category: type, | ||
| boilerplate: moduleName, | ||
| parentLocator: blockId, | ||
| }); |
farhan
left a comment
There was a problem hiding this comment.
Forwarding some of the suggestions compiled in assistance with the @claude.
I will like to have @bradenmacdonald its major review as I have very limited experience on frontend repos.
| type, | ||
| category: type, | ||
| boilerplate: moduleName, | ||
| parentLocator: blockId, |
There was a problem hiding this comment.
boilerplate: moduleNameis always added to the object, even whenmoduleNameisundefined. In JS,'boilerplate' in objreturnsfalsewhen the key is absent andtruewhen it is present with valueundefined- This follows the same pattern as the existing
openassessmentandhtmlcases in this file, so the PR code is in parity. - But consider applying it to the PR code
...(moduleName ? { boilerplate: moduleName } : {}).
| parentLocator: blockId, | ||
| }); | ||
| }); | ||
|
|
There was a problem hiding this comment.
The new test covers the happy path (boilerplate present → forwarded). Consider adding a sibling test for the inverse: a generic container block whose template has no boilerplate_name.
Summary
Bug:
When inside a Problem Builder (or other
StudioContainerWithNestedXBlocksMixin) container block, the "Add Component" buttons for pb-message variants (Message complete / incomplete / Max attempts) all create the same default block, ignoring the selected boilerplate template.For detail look at this comment: #3058 (comment)
Ticket: #3156
What we fixed in this PR:
StudioContainerWithNestedXBlocksMixin(e.g. pb-message complete/incomplete/max-attempts) were ignoring theboilerplate_namefrom their template spec, so every variant always created the default block.firstTemplate?.boilerplateNamefrom the buttononClickthrough to thehandleCreateNewCourseXBlockAPI call asboilerplate.Test Results: