feat(admin): add publish/unpublish workflow UI to dashboard
SUMMARY:
Implemented admin UI for document publishing workflow, enabling admins
to publish internal documents to public visibility with category selection
and unpublish documents with audit trail reasoning.
CHANGES:
1. Enhanced Document List View (loadDocuments):
- Added visibility badges (public/internal/confidential/archived)
- Added workflow status badges (draft/review/published)
- Added conditional Publish button (internal + not published)
- Added conditional Unpublish button (public + published)
- Improved layout with category display
2. Publish Modal (openPublishModal):
- Category selection dropdown (7 categories)
- Display order input (optional)
- Form validation (category required)
- Integration with POST /api/documents/:id/publish
3. Unpublish Modal (openUnpublishModal):
- Required reason textarea (audit trail)
- Document context display (title, visibility, category)
- Integration with POST /api/documents/:id/unpublish
4. Badge Helper Functions:
- getVisibilityBadge(visibility) - colored badges
- getStatusBadge(status) - workflow state badges
5. Event Delegation:
- Added openPublishModal, closePublishModal handlers
- Added openUnpublishModal, closeUnpublishModal handlers
INTEGRATION:
✓ Uses existing API endpoints (tested syntax)
✓ CSP compliant (no inline styles/handlers)
✓ Follows event delegation pattern
✓ Proper form validation and error handling
TESTING:
✓ JavaScript syntax validated (node -c)
✓ CSP compliance verified (0 violations)
✓ Server accessibility confirmed (HTTP 200)
NEXT STEPS (Optional):
- Create dedicated drafts dashboard page (from SCHEDULED_TASKS.md)
- Add bulk publish operations
- Implement review workflow state transitions
FRAMEWORK COMPLIANCE:
Addresses SCHEDULED_TASKS.md item "Admin UI for Publish Workflow"
Maintains CSP compliance (inst_008)
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>