Commit Graph

107 Commits

Author SHA1 Message Date
78111f161f fix category and course loading with duplicate names
Normalize duplicate category names in hierarchy responses and aggregate courses across same-name category IDs so Human Language and Courses tabs consistently show data.

Made-with: Cursor
2026-04-14 05:36:54 -07:00
da6754e6f5 fix human language category selection when duplicates exist
Prefer the most populated Human Language category (then latest id fallback) so sub-categories and courses render correctly when multiple same-name categories are present.

Made-with: Cursor
2026-04-14 05:31:57 -07:00
5206fb2e1a fix human language quick-create path creation
Create a real sub-category under Human Language and pass sub_category_id when creating the course so the new path renders immediately in the hierarchy panel.

Made-with: Cursor
2026-04-14 05:23:44 -07:00
24b5a0d7ee fix human language hierarchy rendering after create
Normalize flat hierarchy rows from backend into the nested shape expected by the content-management page so new sub-categories and courses show immediately.

Made-with: Cursor
2026-04-14 05:11:34 -07:00
53c8542a6a content management integration fixes 2026-04-14 05:05:14 -07:00
7ea8e15266 create subcategory error fix 2026-04-14 04:00:04 -07:00
f5a2e2483a readme file update 2026-04-14 02:14:36 -07:00
d308719d18 analytics page styling 2026-04-14 01:47:00 -07:00
e46e0314ed hierarchy cleanup 2026-04-10 03:20:53 -07:00
dd6fe3a9c8 new course management hierarchy integration 2026-04-10 03:05:29 -07:00
26e1b0a7d5 human language UI adjustment 2026-04-09 01:52:03 -07:00
189077e946 module and sub,odule creation fix 2026-04-09 00:39:20 -07:00
d4b1bf0813 show intro video preview in review step
Render intro video preview in Step 4 Review & publish so users can verify Vimeo/file playback before publishing instead of seeing only the URL text.

Made-with: Cursor
2026-04-08 02:18:15 -07:00
42bb74c15c handle Vimeo intro URLs without import failure
Normalize Vimeo page URLs to embed URLs for intro video fields instead of forcing /files/upload URL import that can fail behind verification gates.

Made-with: Cursor
2026-04-08 02:11:34 -07:00
cb2a6843a3 fix human language practice deletion endpoint
Use deleteQuestionSet for practice deletion in HumanLanguagePage so practice cards remove correctly in the question-set based flow.

Made-with: Cursor
2026-04-08 01:59:07 -07:00
06af3a97f2 enhance human language practice editing and collapsible hierarchy
Expand edit-practice modal to include full question-set metadata fields, raise recorder modal overlay, and add module/sub-module collapse toggles to match path and level expand/collapse behavior.

Made-with: Cursor
2026-04-08 01:53:48 -07:00
0dc7aa81ba fix practice review rendering and playable audio previews
Improve Step 4 Basic Information description rendering with formatted-text preview, and resolve media object keys so practice audio prompts are playable in Human Language question cards while showing sample answer text.

Made-with: Cursor
2026-04-08 01:33:52 -07:00
265d94999a improve intro video upload and preview in practice creation
Import intro video URLs through /files/upload, keep Vimeo-friendly URL handling, and render inline video preview for uploaded/imported links in Step 1 context.

Made-with: Cursor
2026-04-08 01:11:17 -07:00
3c864fe8ec route human language new-practice to full create flow
Use the dedicated add-practice route from Human Language so question-set creation uses the richer speaking-style multi-step UI instead of the inline create modal.

Made-with: Cursor
2026-04-08 01:00:54 -07:00
79da9014de polish human language page styling
Improve visual hierarchy across header, filters, and nested content cards to make the Human Language management view cleaner and easier to scan.

Made-with: Cursor
2026-04-08 00:47:54 -07:00
d1842579e9 media preview fix 2026-04-07 10:59:40 -07:00
4210a05ba9 feat(admin): shared practice question editor for Human Language and Add Practice
- Add PracticeQuestionEditorFields for Step-3-style MCQ/T-F/short/audio UI
- Wire Human Language question dialog to shared editor and fix dialog padding
- Refactor AddNewPracticePage step 3 to reuse the same component

Made-with: Cursor
2026-04-07 10:41:43 -07:00
cd7d330261 Align Human Language edit-question UI with create flow
Defer opening the dialog until details load; improve API mapping for true/false and types; add audio answer field; show edit loading on the row action.

Made-with: Cursor
2026-04-07 10:29:20 -07:00
53d16d9f93 Human Language page: practice/question CRUD and form validation
Support creating, editing, and deleting practices and questions inline; add client-side validation with disabled save and inline field feedback.

Made-with: Cursor
2026-04-07 10:23:14 -07:00
4166fe0807 polish human language practice detail UI
Improve question-bank presentation with clearer hierarchy, richer badges/callouts, and labeled media previews for lesson/practice content.

Made-with: Cursor
2026-04-07 09:49:28 -07:00
51a14ad975 practice questions fix 2026-04-07 09:35:14 -07:00
1a3f974e6a more UI adjustment 2026-04-07 09:31:22 -07:00
3c4b0c4cd3 more UI adjustment 2026-04-07 09:23:05 -07:00
449b595df0 more UI adjustment 2026-04-07 09:12:57 -07:00
45c385e5fa Add Human Language sub-module page with Lesson/Practice tabs.
Dedicated routes under /content/human-language/.../sub-module/:id for lesson videos and practice cards (aligned with existing sub-course styling); confirm removals via Dialog on hierarchy page; wire add-practice and questions back navigation for HL paths.

Made-with: Cursor
2026-04-07 09:01:59 -07:00
679568e51c Human Language: per-path CEFR actions and collapsible paths.
Move Add next CEFR level and detailed management into each course path header; add expand/collapse for path bodies; drop global resolved-course controls.

Made-with: Cursor
2026-04-07 08:09:59 -07:00
7f59ce4b2f Restructure Human Language hierarchy: path parent, levels nested.
Render each course path (e.g. English - Speaking) as the top card with CEFR levels, modules, and sub-modules nested inside; use per-path collapse keys for level rows.

Made-with: Cursor
2026-04-07 08:05:15 -07:00
c664c3ad67 Improve Human Language CEFR level UX and add-level targeting.
Resolve course id when filters imply a single course so Add next CEFR level works without forcing Course selection; show incremental CEFR sections; tighten remove actions; use optional chaining on module lists.

Made-with: Cursor
2026-04-07 07:47:24 -07:00
e4109a26a9 UI adjustment 2026-04-07 07:41:37 -07:00
61fb096aa8 readme adjustment 2026-04-07 07:33:09 -07:00
767637a5ef Fix Human Language level actions visibility and CEFR add-level guidance.
Avoid nested button markup so remove-level controls render reliably, keep level rows visible for all CEFR levels, and add clearer guidance/labeling for incremental level creation starting from A1.

Made-with: Cursor
2026-04-07 07:29:54 -07:00
bf0dabbf05 Support audio practice creation from Human Language flow.
Add AUDIO question support to the shared practice creation page and preserve human-language navigation context so back/cancel returns to the Human Language page.

Made-with: Cursor
2026-04-07 07:22:13 -07:00
383886156c refine empty-state layout and enable first path creation
Adopt a structured empty-state layout similar to sub-category management screens, auto-create the Human Language category when missing, hide level listing until a path exists, and surface first-path creation clearly.

Made-with: Cursor
2026-04-07 07:04:24 -07:00
e6adf2850e add quick-create path on empty human language view
Allow creating the initial subcategory/course path directly from the Human Language page empty state so module and sub-module creation can start immediately.

Made-with: Cursor
2026-04-07 06:50:35 -07:00
ee2dbc5792 human language learn module management adjustment 2026-04-07 06:43:50 -07:00
547e2c7970 show module actions on empty level rows
Keep course rows visible even when module count is zero so Add Module is accessible immediately, and show a clear empty-state hint before first module creation.

Made-with: Cursor
2026-04-07 06:39:01 -07:00
6cba475145 add module and sub-module creation actions in human language UI
Provide incremental Module-N and Module-N.M creation buttons, plus direct sub-module actions to manage lesson media and practice/audio question creation.

Made-with: Cursor
2026-04-07 06:31:21 -07:00
0763b77d66 render human language hierarchy in admin page
Integrate the admin Human Language page with the new hierarchy API and present subcategory/course/level/module/sub-module tree including videos and practices.

Made-with: Cursor
2026-04-07 06:13:21 -07:00
882db5444d remove speaking tab and align human language filters
Hide Speaking from content tabs and update Human Language filters to subcategory and course-focused selection for the single descriptive language category flow.

Made-with: Cursor
2026-04-07 05:55:21 -07:00
e477595578 integrate human language page with dedicated backend API
Switch the Human Language admin page to use CEFR-filtered backend endpoints and add typed API contracts for human language lessons.

Made-with: Cursor
2026-04-07 05:40:29 -07:00
53a72bef2d human language learn management adjustment 2026-04-07 05:30:23 -07:00
840a64c4e0 remove speaking practice edit controls
Drop the practice-level edit action and modal from the Speaking page while preserving collapsible groups, searchable practice filtering, and question bulk actions.

Made-with: Cursor
2026-04-07 04:58:35 -07:00
fd0790fe7f add collapsible speaking groups and practice editing
Improve Speaking tab UX with collapsible practice sections, searchable practice filter picker, whole-practice selection controls, and a practice metadata editor wired to the backend practice update API.

Made-with: Cursor
2026-04-07 04:51:50 -07:00
e8fc835d51 add speaking list grouping, search, and bulk actions
Group audio questions under practices on the Speaking tab, add client-side search and image previews, and support multi-select bulk deletion of audio questions.

Made-with: Cursor
2026-04-07 04:37:51 -07:00
c648c6668b refine speaking practice filter to inspect audio rows
Filter speaking practice options using returned AUDIO question rows instead of total_count so unrelated practices are excluded reliably.

Made-with: Cursor
2026-04-07 04:28:22 -07:00